洛陽理工學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告(已修改)_第1頁
洛陽理工學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告(已修改)_第2頁
洛陽理工學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告(已修改)_第3頁
洛陽理工學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告(已修改)_第4頁
洛陽理工學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)報(bào)告(已修改)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、洛 陽 理 工 學(xué) 院課 程 設(shè) 計(jì) 報(bào) 告 課程名稱 單片機(jī)原理與接口技術(shù) 設(shè)計(jì)題目 基于51系列單片機(jī)的實(shí)驗(yàn)平臺(tái)開發(fā)設(shè)計(jì) 專 業(yè) 通信工程 班 級(jí) B120509 學(xué) 號(hào) B12050923 姓 名 徐 國 旗 完成日期 2015年1月2日 課 程 設(shè) 計(jì) 任 務(wù) 書設(shè)計(jì)題目: 基于51系列單片機(jī)的實(shí)驗(yàn)平臺(tái)開發(fā)設(shè)計(jì) 設(shè)計(jì)內(nèi)容與要求:一、設(shè)計(jì)內(nèi)容利用STC系列單片機(jī)作為微控制器開發(fā)一套軟、硬件相結(jié)合的單片機(jī)實(shí)驗(yàn)平臺(tái),主要包括以下內(nèi)容:1. 電路原理圖設(shè)計(jì),主要包括集LCD顯示模塊、串口通信模塊、數(shù)碼管顯示模塊、LED發(fā)光二極管、鍵盤等接口電路的設(shè)計(jì);2. 學(xué)習(xí)集成電路等芯片的焊接方法與技巧,

2、進(jìn)行實(shí)際元器件的識(shí)別,進(jìn)行電路板焊接;3. 在Keil C環(huán)境下,進(jìn)行軟件設(shè)計(jì)。主要包括流水燈、計(jì)數(shù)器、LCD字符顯示、鍵盤的控制等功能程序設(shè)計(jì);4. 針對(duì)所開發(fā)的實(shí)驗(yàn)板,結(jié)合器件選擇、原理圖設(shè)計(jì)、硬件焊接、軟件編程調(diào)試、軟硬件聯(lián)調(diào)等方面寫出課程設(shè)計(jì)報(bào)告。二、設(shè)計(jì)要求1. 完成綜合實(shí)驗(yàn)平臺(tái)的電路結(jié)構(gòu)分析,進(jìn)行模塊分解,掌握各部分電路的工作原理;2. 獨(dú)立完成電路板的焊接,掌握故障排除方法,完成實(shí)驗(yàn)平臺(tái)的硬件設(shè)計(jì)及開發(fā);3. 結(jié)合Keil C軟件在焊接無誤的單片機(jī)實(shí)驗(yàn)平臺(tái)上開發(fā)出流水燈、LCD顯示模塊,數(shù)碼管顯示模塊等程序設(shè)計(jì);4. 按照要求撰寫課程設(shè)計(jì)論文。 指導(dǎo)教師: 李傳鋒 2014年 1

3、2 月29日課 程 設(shè) 計(jì) 評(píng) 語 成績: 指導(dǎo)教師:_ 年 月 日摘 要1第1章 概述21.1 設(shè)計(jì)題目21.2 設(shè)計(jì)步驟21.3 Proteus與Keil C51軟件介紹2第2章 硬件電路設(shè)計(jì)32.1 電路各元器件介紹32.1.1 LCD1602液晶32.1.2 兩位一體共陰數(shù)碼管42.1.3 其它元器件介紹52.2 仿真電路連接與實(shí)物焊接62.2.1 protues仿真電路62.2.2電路板焊接7第3章 軟件設(shè)計(jì)83.1 程序整體思路83.2 程序編程實(shí)現(xiàn)93.3 程序的優(yōu)缺點(diǎn)分析11第4章 仿真及實(shí)物效果展示114.1 關(guān)閉菜單與主菜單114.2流水燈模塊124.3 計(jì)數(shù)器模塊134.

4、4 LCD液晶顯示模塊13心得體會(huì)14參考文獻(xiàn)14附錄1619基于51系列單片機(jī)的實(shí)驗(yàn)平臺(tái)開發(fā)設(shè)計(jì)摘 要單片機(jī),全稱單片微型計(jì)算機(jī)(英語:Single-Chip Microcomputer),又稱微控制器(Microcontroller),是把中央處理器、存儲(chǔ)器、定時(shí)/計(jì)數(shù)(Timer/Counter)、各種輸入輸出接口等都集成在一塊集成電路芯片上的微型計(jì)算機(jī)。與應(yīng)用在個(gè)人電腦中的通用型微處理器相比,它更強(qiáng)調(diào)自供應(yīng)(不用外接硬件)和節(jié)約成本。它的最大優(yōu)點(diǎn)是體積小,可放在儀表內(nèi)部,但存儲(chǔ)量小,輸入輸出接口簡(jiǎn)單,功能較低。由于其發(fā)展非常迅速,舊的單片機(jī)的定義已不能滿足,所以在很多應(yīng)用場(chǎng)合被稱為范圍

5、更廣的微控制器;由于單芯片微電腦常用于當(dāng)控制器故又名single chip microcontroller,但是目前在中國大陸仍多沿用“單片機(jī)”的稱呼。主要特點(diǎn):1、主流單片機(jī)包括CPU、4KB容量的ROM、128 B容量的RAM、 2個(gè)16位定時(shí)/計(jì)數(shù)器、4個(gè)8位并行口、全雙工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。2、系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,使用方便,實(shí)現(xiàn)模塊化;3、單片機(jī)可靠性高,可工作到106 107小時(shí)無故障;4、處理功能強(qiáng),速度快。5、低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品6、控制功能強(qiáng)7、環(huán)境適應(yīng)能力強(qiáng)。本次課程設(shè)計(jì)就是利用STC系列單片機(jī)作為微控制器開發(fā)一套軟、硬件相結(jié)合的

6、單片機(jī)實(shí)驗(yàn)平臺(tái),主要通過電路原理圖,進(jìn)行電路的焊接。原理圖主要包括集LCD顯示模塊、串口通信模塊、數(shù)碼管顯示模塊、LED發(fā)光二極管、鍵盤等接口電路的設(shè)計(jì)。這次單片機(jī)的課設(shè)它具有模塊化硬件結(jié)構(gòu)和簡(jiǎn)單的人機(jī)交互功能,硬件功能模塊及部分演示程序。該實(shí)驗(yàn)板具有降低設(shè)計(jì)成本,縮短開發(fā)周期,豐富學(xué)生知識(shí),提高設(shè)計(jì)水平等優(yōu)點(diǎn)。第1章 概述1.1 設(shè)計(jì)題目基于51系列單片機(jī)的實(shí)驗(yàn)平臺(tái)開發(fā)設(shè)計(jì)1.2 設(shè)計(jì)步驟 1學(xué)習(xí)各元器件,弄清楚其工作原理;2Proteus軟件仿真電路圖的繪制;3根據(jù)電路圖在開發(fā)板上進(jìn)行焊接;4編寫、調(diào)試開發(fā)板程序 5下載到單片機(jī)中,查看實(shí)際運(yùn)行效果。1.3 Proteus與Keil C51

7、軟件介紹Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前比較好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)

8、平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MATLAB等多種編譯器。Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(Vision)將

9、這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍第2章 硬件電路設(shè)計(jì)2.1 電路各元器件介紹2.1.1 LCD1602液晶液晶顯示器,或稱LCD(Liquid Crystal Display),為平面超薄的顯示設(shè)備,它由一定數(shù)量的彩色或黑白像素組成,放置于光源或者反射面前方。液晶顯示器功耗很低,因此倍受工程師青睞,適用于使用電池的電子設(shè)備。它的主要原理是以電流刺激液晶分子產(chǎn)生點(diǎn)、線、面配合背部燈管

10、構(gòu)成畫面。1、LCD1602實(shí)物圖圖 1 LCD 外觀及引腳顯示容量:16 個(gè)×2 排字符;工作電流 2.0mA(5.0V);字符尺寸:2.95× 4.35mm。【能夠看到的是 2 排,各 16 個(gè)字符,不是漢字】2、LCD1602的讀寫LCD1602 的第 5 腳: R / W ,讀寫操作選擇(1讀,0寫)。表1 LCD1602的讀寫RSR / W寄存器及操作00指令寄存器寫入01忙信號(hào)和地址計(jì)數(shù)器讀出10數(shù)據(jù)寄存器寫入11數(shù)據(jù)寄存器讀出LCD1602 的第 6 腳:E 端為使能端,當(dāng) E 端由高電平跳變成低電平時(shí)(負(fù)跳變),液晶模塊執(zhí)行命令?!绢愃朴?74LS373,需

11、要負(fù)跳變】執(zhí)行一條命令或?qū)?入一個(gè)數(shù)據(jù),都要使 E 有一個(gè)負(fù)跳變。2.1.2 兩位一體共陰數(shù)碼管122.1數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。同時(shí)數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字1、實(shí)物圖圖2 兩位一體LED數(shù)碼管2、共陰極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖:圖3共陰極LED數(shù)碼管的內(nèi)部結(jié)構(gòu)原理圖表2 共陰數(shù)碼管字模

12、表顯示0123456789字模0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f此次設(shè)計(jì)中兩位一體數(shù)碼管采用74LS374鎖存器鎖存,電路詳見附錄。 2.1.3 其它元器件介紹1、LED流水燈流水燈中用8只LED發(fā)光二極管練成一排,作為流水燈。二極管長引腳為正極短引腳為負(fù)極,也可用萬用表測(cè)量。發(fā)光二極管如圖所示。圖4 LED發(fā)光二極管2、74LS138 、74LS373芯片圖5 74LS138引腳及真值表 注:1 表示高電平,0 表示低電平,×表示任意【C 為高位,A 為低位】OELEDQ0111010000×不變1××高阻

13、態(tài)圖6 74LS373引腳及 功能表74LS373 的三種工作方式:跟隨(OE =0,LE=1,輸出跟隨輸入)鎖存(OE =0,LE 從高變?yōu)榈拓?fù)跳變時(shí),鎖存 D0D7)高阻(OE =1,Q0Q7 輸出為高阻,相當(dāng)于斷開)另外,此次設(shè)計(jì)中還用的排阻、色環(huán)電阻、電容、三極管等元件,在此不再做詳細(xì)介紹。2.2 仿真電路連接與實(shí)物焊接2.2.1 protues仿真電路在protues中連接各模塊電路,注意各元器件的接法,各模塊連接電路圖如下:圖7 液晶顯示及流水燈模塊圖8 數(shù)碼管及按鍵模塊其它模塊的連接在此不再展示,詳見附錄。2.2.2電路板焊接1、焊接準(zhǔn)備根據(jù)電路原理圖,焊接元器件。先讀出色環(huán)電阻

14、的阻值,判斷電容引腳的正負(fù)極,或用萬用表測(cè)試。檢測(cè)各器件是否正常。準(zhǔn)備好電烙鐵、焊錫、松香等必備物品。2、焊接給電烙鐵加熱,達(dá)到溫度后按電路板上元件從低到高的順序進(jìn)行焊接,在焊接時(shí)要細(xì)心、仔細(xì),在正確的位置焊上正確的元件,防止出現(xiàn)錯(cuò)誤。3、檢測(cè)焊接電路完成后檢查是否有漏焊、連錫等問題。在我們組用了一上午焊接電路,檢查時(shí)發(fā)現(xiàn)LCD液晶顯示不能顯示、一個(gè)發(fā)光二極管不亮,經(jīng)檢測(cè)是器件損壞,經(jīng)更換后故障解除。焊接實(shí)物圖如下:圖9 焊接電路圖第3章 軟件設(shè)計(jì)3.1 程序整體思路從電路著手編寫程序,希望一個(gè)程序能把各模塊連接起來,而不是用多個(gè)程序進(jìn)行加載。并且打開電源后能夠重復(fù)進(jìn)入各模塊,而不是每次都需要

15、復(fù)位。所以可以先分開寫各模塊程序,然后連接起來??捎脀hile語句查詢各標(biāo)志位實(shí)現(xiàn)開電源后能夠重復(fù)進(jìn)入各模塊。程序的流程及各標(biāo)志位含義如下:按1按3按2按2按1按2按1按2主菜單關(guān)閉計(jì)數(shù)器流水燈LCD模塊左移右移移暫停加計(jì)數(shù)減計(jì)數(shù)歸零姓名學(xué)號(hào)日期按4按4按1按3按3按3按4 由各模塊返回主菜單圖10 程序流程圖表3 各標(biāo)志位含義s總標(biāo)志位,1開,0關(guān)b11寫時(shí)計(jì)數(shù)器菜單s1每次進(jìn)入主菜單時(shí)寫主菜單b2更新計(jì)數(shù)值時(shí)重新顯示s2剛通電或關(guān)閉時(shí)寫關(guān)閉菜單cLCD模塊總標(biāo)志位a流水燈總標(biāo)志位,1進(jìn)入0退出c01時(shí)寫LCD菜單a1流水燈左循環(huán)標(biāo)志位c1LCD顯示姓名a2流水燈右循環(huán)標(biāo)志位c2LCD顯示學(xué)

16、號(hào)a3流水燈暫停標(biāo)志位c3LCD顯示日期b計(jì)數(shù)器總標(biāo)志位,1進(jìn)入0退出3.2 程序編程實(shí)現(xiàn)(1)流水燈函數(shù)程序(執(zhí)行該模塊的同時(shí),LCD上顯示流水燈菜單,詳見附錄):void ledmod()writemenu(LEDmenu);/寫菜單for(i=0;i<3;i+) /先閃爍幾下后全亮 P2=0x55; delay(150); P2=0xaa; delay(150); P2=0;while(1)if(a1=1) for(i=0;i<8;i+)/往左流 if(a=0)break;/a=0,跳出LED模塊,下同 if(a2=1)a1=0;break; P2=ledi; delay(2

17、00); while(a3=1) if(a=0)break;/a3=1,執(zhí)行while循環(huán),相當(dāng)于暫停 if(a2=1) for(i=0;i<8;i+) /往右流 if(a=0)break; if(a1=1)a2=0;break; P2=led7-i; delay(200); while(a3=1) if(a=0)break; if(a=0)break;(2)計(jì)數(shù)器函數(shù)程序(執(zhí)行該模塊的同時(shí),LCD上顯示計(jì)數(shù)器菜單,詳見附錄):void coutermod() if(b1=1)b1=0;/進(jìn)入計(jì)數(shù)器后,寫菜單并讓數(shù)碼管顯示0,流水燈熄滅 writemenu(counter);P0=0x3

18、f;P2=0xff;if(b2=1)b2=0; /按下按鍵數(shù)據(jù)改變時(shí),數(shù)碼管重新顯示p25=1;p26=0;p27=0; P0=tablecount/10; p25=p26=p27=0;P0=tablecount%10;(3)LCD液晶顯示模塊程序(執(zhí)行該模塊的同時(shí),LCD上顯示其菜單,詳見附錄):void LCDmod()if(c0=1)c0=0;writemenu(lcdmenu);/寫LCD菜單if(c1=1)c1=0; / wcmd(0x80+0x40);for(j=0;j<16;j+)wdat(namej);if(c2=1)c2=0; wcmd(0x80+0x40);for(j

19、=0;j<16;j+)wdat(numj);if(c3=1)c3=0; wcmd(0x80+0x40);for(j=0;j<16;j+)wdat(datej);(4)寫各菜單函數(shù)(用于寫各個(gè)模塊的菜單):void writemenu(unsigned char p)wcmd(0x01);for(j=0;j<16;j+)wdat(pj);wcmd(0x80+0x40);for(;j<32;j+)wdat(pj);(5)主函數(shù)void main()TCON=0x55;/01010101,TR1=TR0=IT1=IT0=1TMOD=0x66;/01100110, 兩個(gè)都為計(jì)數(shù)

20、方式2TH0=TL0=0xff; TH1=TL1=0xff;IE=0x8f;LCD_init(); writemenu(OFF);P0=0;while(1)if(s) /s=1,開始;s=0,關(guān)閉。while(1)if(s1)s1=0;writemenu(mainmenu);if(a=1)ledmod();if(b=1)coutermod();if(c=1)LCDmod(); if(s=0) writemenu(OFF);break;(6)四個(gè)中斷函數(shù):key0() interrupt 1delay(100);if(a=0&&b=0&&c=0&&

21、s)a=1;return;/&&b=0&&c=0&&s,判斷是否在主菜單中,下同 if(a=1)if(a1=0&&a3=0)a1=1; /&&a3=0,暫停時(shí)不能通過中斷改變循環(huán)方向 if(b=1)count+;if(count=100)count=0;b2=1; if(c=1)if(c1=0)c1=1; key1() interrupt 3delay(100); if(b=0&&a=0&&c=0&&s)b=b1=1;return; /b1=1,第一次進(jìn)入計(jì)數(shù)器 if

22、(a=1)if(a2=0&&a3=0)a2=1; if(b=1)count-;if(count<0)count=0;b2=1; if(c=1)if(c2=0)c2=1; key2() interrupt 0delay(100); if(c=0&&b=0&&a=0&&s)c=1;c0=1;return; if(a=1&&(a1|a2)a3=!a3;/&&(a1|a2),防止剛進(jìn)入流水燈時(shí),按下暫停鍵暫停 if(b=1)count=0;b2=1; if(c=1)if(c3=0)c3=1; key3

23、() interrupt 2delay(100);if(a=0&&b=0&&c=0)s=!s; /在關(guān)閉或主菜單中按下key3開始或進(jìn)入主菜單if(a=1)a=0;a1=a2=a3=0;if(b=1)b=count=b2=0; if(c=1)c=c1=c2=c3=0; if(s) s1=1;/s=1,在每次由各模塊返回到主菜單或由關(guān)閉到主菜單時(shí)寫主菜單 else s2=1;/s=0,在剛通電或由主菜單關(guān)閉時(shí)寫關(guān)閉菜單此次編程和優(yōu)化總共花費(fèi)了十多個(gè)小時(shí),最終達(dá)到自己預(yù)想的效果,其它如LCD驅(qū)動(dòng)函數(shù)、定義變量等命令在此不再列出,詳見附錄中的源程序。3.3 程序的優(yōu)缺

24、點(diǎn)分析優(yōu)點(diǎn):(1) 一個(gè)程序能把各模塊連接起來,而不是用多個(gè)程序進(jìn)行加載。(2) 打開電源后能夠重復(fù)進(jìn)入各模塊,無需每次復(fù)位。(3) 每個(gè)模塊都可以通過按鍵實(shí)現(xiàn)多種功能,功能豐富。(4) 可根據(jù)LCD提示操作,更加人性化。(5) 各模塊單獨(dú)為一個(gè)函數(shù),使程序結(jié)構(gòu)明朗。缺點(diǎn):主要是標(biāo)志位過于繁多,閱讀困難,給程序的修改和優(yōu)化帶來麻煩。所以程序還有待優(yōu)化。 第4章 仿真及實(shí)物效果展示4.1 關(guān)閉菜單與主菜單關(guān)閉菜單與主菜單效果如下圖所示: 圖11 仿真與實(shí)物的關(guān)閉菜單與主菜單4.2 流水燈模塊功能有左流、右流、清零、返回,部分功能展示如下:圖12 流水燈模塊仿真及實(shí)物部分效果4.3 計(jì)數(shù)器模塊功能

25、有加計(jì)數(shù)、減計(jì)數(shù)、清零、返回,部分功能展示如下:圖13 計(jì)數(shù)器模塊部分效果4.4 LCD液晶顯示模塊功能有顯示姓名、學(xué)號(hào)、日期、返回,部分功能展示如下:圖14 LCD模塊部分效果心得體會(huì)參考文獻(xiàn)【1】林立,張俊亮編 單片機(jī)原理及應(yīng)用基于Proteus和Keil cM. 北京:電子工業(yè)出版社,2013.1【2】譚浩強(qiáng). C程序設(shè)計(jì)(第四版). 北京:清華大學(xué)出版社,2010.6【3】周潤景等.PROTEUS入門實(shí)用教程.北京:機(jī)械工業(yè)出版社,2007.【4】賈好來.MCS-51單片機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,2007.附錄 1、源程序#include<reg51.h>#def

26、ine uchar unsigned charsbit RS=P16;sbit RW=P17;sbit p25=P25;sbit p26=P26;sbit p27=P27;sbit p32=P32;sbit p33=P33;sbit p34=P34;sbit p35=P35;bit s,s1,s2,a,a1,a2,a3,b,b1,b2,c,c0,c1,c2,c3;char count;uchar LCD_Status,i,j;uchar code mainmenu=" Main menu: 1LED 2C 3LCD4OFF"uchar code LEDmenu='

27、',' ',' ','N','o','w',' ','i','s',' ','L','E','D',':',' ',' ',' ','1',':',0x7f,'2',':',0x7e,'3',':','p','/&#

28、39;,'s',' ','4',':','R'uchar code counter="Now is counter: 1:+ 2:- 3:'0'4:R"uchar code lcdmenu=" Now is LCD: 1name2num3date4R"uchar code name=" XuGuoQi "uchar code num=" B12050923 "uchar code date=" 2014/12/

29、18 "uchar code OFF=" OFF Press key4 Start"uchar code led=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7e,0x3c,0x18,0x00;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; void delay(unsigned int count) unsigned char i;while(count-) for(i=0; i<120; i+);/*LCD相關(guān)驅(qū)動(dòng)函數(shù)

30、*/ unsigned char Busy_Check() /檢查忙函數(shù) RS=0; RW=1; /RS=0,控制寄存器,RW=1,讀p25=0;p26=1;p27=0;delay(1);LCD_Status = P0; delay(1);p25=1;p26=1;p27=0;return LCD_Status;void wcmd(unsigned char cmd) /寫命令函數(shù), RS=0;RW=0while(Busy_Check()&0x80)=0x80); RS=0;RW=0; p25=0;p26=1;p27=0;P0=cmd; delay(1);p25=1;p26=1;p27=

31、0;void wdat(unsigned char dat) /寫數(shù)據(jù)函數(shù), RS=1;RW=0while(Busy_Check() & 0x80)=0x80); RS=1;RW=0;p25=0;p26=1;p27=0;P0=dat; delay(1);p25=1;p26=1;p27=1;P0=0; /每次寫數(shù)據(jù)后熄滅LED數(shù)碼管P2=0xff; /每次寫數(shù)據(jù)后熄滅LED流水燈void LCD_init() / 初始化函數(shù) wcmd(0x38); /38H=0011 1000,使用8 位,用5×7 的字型,2 行delay(1); /改為0x3C=0011 1100,就用5&

32、#215;10 字型wcmd(0x01); /01H=0000 0001,清屏【命令1】delay(1); wcmd(0x06); /06H=0000 0110,字符不動(dòng),光標(biāo)自動(dòng)右移一格【命令3】delay(1);wcmd(0x0c); /0eH=0000 1110,開顯示,無光標(biāo),字符不閃爍【命令4】delay(1);/*寫各菜單函數(shù)*/void writemenu(unsigned char p)wcmd(0x01);for(j=0;j<16;j+)wdat(pj);wcmd(0x80+0x40);for(;j<32;j+)wdat(pj);/*LED流水燈模塊函數(shù)*/voi

33、d ledmod()writemenu(LEDmenu);/寫菜單for(i=0;i<3;i+) /先閃爍幾下后全亮 P2=0x55; delay(150); P2=0xaa; delay(150); P2=0;while(1)if(a1=1) for(i=0;i<8;i+)/往左流 if(a=0)break;/a=0,跳出LED模塊,下同 if(a2=1)a1=0;break; P2=ledi; delay(200); while(a3=1) if(a=0)break;/a3=1,執(zhí)行while循環(huán),相當(dāng)于暫停 if(a2=1) for(i=0;i<8;i+) /往右流 i

34、f(a=0)break; if(a1=1)a2=0;break; P2=led7-i; delay(200); while(a3=1) if(a=0)break; if(a=0)break;/*計(jì)數(shù)器模塊函數(shù)*/void coutermod() if(b1=1)b1=0;/進(jìn)入計(jì)數(shù)器后,寫菜單并讓數(shù)碼管顯示0,流水燈熄滅 writemenu(counter);P0=0x3f;P2=0xff;if(b2=1)b2=0; /按下按鍵數(shù)據(jù)改變時(shí),數(shù)碼管重新顯示p25=1;p26=0;p27=0; P0=tablecount/10; p25=p26=p27=0;P0=tablecount%10;/*L

35、CD模塊函數(shù)*/void LCDmod()if(c0=1)c0=0;writemenu(lcdmenu);/寫LCD菜單if(c1=1)c1=0; / wcmd(0x80+0x40);for(j=0;j<16;j+)wdat(namej);if(c2=1)c2=0; wcmd(0x80+0x40);for(j=0;j<16;j+)wdat(numj);if(c3=1)c3=0; wcmd(0x80+0x40);for(j=0;j<16;j+)wdat(datej); /*主函數(shù)*/void main()TCON=0x55;/01010101,TR1=TR0=IT1=IT0=1TMOD=0x66;/01100110, 兩個(gè)都為計(jì)數(shù)方式2TH0=TL0=0xff; TH1=TL1=0xff;IE=0x8f;LCD_init(); writeme

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論