電子時(shí)鐘(LCD顯示)課程設(shè)計(jì).doc
《電子時(shí)鐘(LCD顯示)課程設(shè)計(jì).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《電子時(shí)鐘(LCD顯示)課程設(shè)計(jì).doc(14頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 目錄1. 設(shè)計(jì)要求.12. 時(shí)鐘總體設(shè)計(jì)思路.13. 系統(tǒng)硬件設(shè)計(jì).13.1 單片機(jī)控制系統(tǒng).3 3.2 鍵盤控制系統(tǒng)設(shè)計(jì).3 3.3 顯示電路.4 3.4 硬件原理及說明.4 3.5 主要性能參數(shù).54. 軟件設(shè)計(jì). 54.1 軟件功能.54.2軟件設(shè)計(jì).64.3 匯編源程序.5 5. Proteus仿真.11 6. 課程設(shè)計(jì)總結(jié).12 參考文獻(xiàn).131. 設(shè)計(jì)要求 以AT89C51單片機(jī)為核心的時(shí)鐘,在LED顯示器上顯示當(dāng)前的時(shí)間:使用字符型LCD顯示器顯示當(dāng)前時(shí)間。顯示格式為“時(shí)時(shí):分分:秒秒”。用4個(gè)功能鍵操作來設(shè)置當(dāng)前時(shí)間。功能鍵K1K4功能如下。K1設(shè)置小時(shí)。K2設(shè)置分鐘。K3設(shè)
2、置秒數(shù)。程序執(zhí)行后工作指示燈LED閃動(dòng),表示程序開始執(zhí)行,LED顯示“00:00:00”,然后開始計(jì)時(shí)。 單片機(jī)是一種集成電路芯片,采集超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力(如算數(shù)運(yùn)算、邏輯運(yùn)算、數(shù)據(jù)傳送、中斷處理)的微型處理器,隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)、只讀程序存儲(chǔ)器(ROM)、輸入/輸出電路(I/O),可能還包括定時(shí)/計(jì)數(shù)器、串行通信口(SCI)、顯示驅(qū)動(dòng)電路(LCD或LED驅(qū)動(dòng)電路)、脈寬調(diào)制電路(PWM)、模擬多路轉(zhuǎn)化器及A/D轉(zhuǎn)化器等電路集成到一片芯片上,構(gòu)成一個(gè)最小而又完善的計(jì)算機(jī)系統(tǒng)。這些電路能在軟件的控制下準(zhǔn)確、迅速、高效的完成程序設(shè)計(jì)者事先規(guī)定的任務(wù)。 2. 時(shí)鐘的總體
3、設(shè)計(jì)思路按照系統(tǒng)的設(shè)計(jì)功能要求,本時(shí)鐘系統(tǒng)的設(shè)計(jì)必須采用單片機(jī)軟件系統(tǒng)實(shí)現(xiàn),用單片機(jī)的自動(dòng)控制能力配合按鍵控制,來控制時(shí)鐘的調(diào)整及顯示。微型控制器時(shí)鐘電路數(shù)據(jù)顯示按鍵調(diào)時(shí) 圖一 系統(tǒng)總原理圖 3. 系統(tǒng)硬件設(shè)計(jì) 3.1 單片機(jī)控制系統(tǒng) 本次設(shè)計(jì)時(shí)鐘電路,采用了ATC89C51單片機(jī)芯片控制電路,這種單片機(jī)芯片比較簡(jiǎn)單,并且省去了很多復(fù)雜的線路,更容易表達(dá)和理解,通過按鈕來調(diào)節(jié)電子鐘的時(shí)、分、秒。并且這次電路我采用了一個(gè)按鈕控制一個(gè)顯示的方案,在調(diào)節(jié)小時(shí)/分鐘/秒數(shù)時(shí),只需要按下對(duì)其控制的按鈕進(jìn)行調(diào)節(jié)就行了,不要普遍所見的需要進(jìn)入調(diào)節(jié)界面。同時(shí)這次我采用了c語(yǔ)言控制整個(gè)時(shí)鐘的顯示,這樣通過三個(gè)模
4、塊:單片機(jī)芯片、LED顯示屏、按鈕控制電路即可達(dá)到設(shè)計(jì)要求。3.2 鍵盤控制系統(tǒng)設(shè)計(jì)按鍵需要3個(gè),分別實(shí)現(xiàn)為調(diào)整小時(shí)、分鐘、秒數(shù)三個(gè)功能。用單片機(jī)的3個(gè)I/O口接收控制信號(hào),其電路如圖下: 圖五 按鍵調(diào)時(shí)電路通過控制鍵來控制所要調(diào)節(jié)的是時(shí)、分、還是秒。在按下小時(shí)/分/秒鍵后將對(duì)小時(shí)/分/秒進(jìn)行調(diào)整調(diào)整,從而調(diào)整到自己所需要的時(shí)間。3.3 顯示電路顯示電路如圖所示: 圖六 顯示電路LM016L液晶模塊采用HD44780控制器,hd44780具有簡(jiǎn)單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器
5、,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計(jì)數(shù)器RAM(AC)。IR用于寄存指令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼,CGROM由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種.8位字符編碼和字符的對(duì)應(yīng)關(guān)系,CGRAM是為用戶編寫特殊字符留用的,它的容量?jī)H64字節(jié),可
6、以自定義8個(gè)5*7點(diǎn)陣字符或者4個(gè)5*10點(diǎn)陣字符,AC可以存儲(chǔ)DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動(dòng)把地址碼裝入AC,同時(shí)選擇DDRAM或CGRAM4.1 軟件功能.403 丁元杰.單片微機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,1994143.4 硬件原理及說明 AT89C51是美國(guó)Intel公司生產(chǎn)的低電壓,高性能CHMOS8位單片機(jī),片內(nèi)含有4k bytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用Intel公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),片內(nèi)置通用4位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)
7、大AT89C51單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場(chǎng)合。 3.5主要性能參數(shù) 與MCS-51產(chǎn)品指令和引腳完全兼容 4k字節(jié)可重擦寫Flash閃速存儲(chǔ)器 1000次擦寫周期 全靜態(tài)操作:0Hz24MHz 三級(jí)加密程序存儲(chǔ)器 1288字節(jié)內(nèi)部RAM 32個(gè)可編程I/O口線 2個(gè)16位定時(shí)/計(jì)數(shù)器 5個(gè)中斷源 可編程串行UART通道 低功耗空閑和掉電模式4. 軟件設(shè)計(jì)4.1 軟件主要完成的功能(1)顯示時(shí)間程序用軟件調(diào)節(jié)時(shí)間,通過程序的調(diào)節(jié),最后用LED現(xiàn)實(shí)時(shí)鐘(2)調(diào)節(jié)時(shí)間程序按鍵調(diào)節(jié)時(shí)間,能實(shí)現(xiàn)時(shí)、分的調(diào)節(jié)4.2軟件設(shè)計(jì)的主要流程時(shí)間控制程序時(shí)間控制程序,用中斷準(zhǔn)確的控制時(shí)間,采用60進(jìn)制,60
8、秒為一分鐘,60分鐘為一個(gè)小時(shí),全天設(shè)置為24小時(shí)。程序用C語(yǔ)言編寫。編程時(shí)采用KEIL C,而仿真用PROTUES,仿真時(shí)仿真圖如圖所示 圖七 定時(shí)中斷流程圖4.3 匯編源程序#include #include #define uchar unsigned char#define uint unsigned int#define DelayNOP() _nop_();_nop_();_nop_();_nop_();sbit K1 =P10;sbit K2 =P11;sbit K3 =P12;sbit K4 =P13;sbit SPK=P30;sbit RS =P20;sbit RW =P21
9、;sbit E =P22;uchar code Str1 = Current Time ; /一下兩個(gè)字符串的串長(zhǎng)均為16uchar code Str2 = Set New Time. ;uchar HMS_String= 00:00:00 ;/帶顯示的時(shí)間串bit Settime=0; /是否修改時(shí)間bit Change_H_or_M =1;/1表示修改時(shí).0表示修改分uchar MilliSecond,Hour =0,Minute=0, Second =0;/延時(shí)函數(shù)void DelayMS(uint x)uchar i;while(x-) for(i=0;i120;i+);/LCD忙狀態(tài)
10、檢測(cè)bit LCD_Busy_Check()bit result;RS = 0;RW = 1;E = 1;DelayNOP();result = (bit)(P0 & 0 x80);E = 0;return result; /寫LCD命令void LCD_Write_Command(uchar cmd)while(LCD_Busy_Check();/判斷LCD是否忙碌RS = 0;RW = 0;E = 0;_nop_();_nop_();P0 = cmd; DelayNOP();E = 1;DelayNOP();E = 0;/設(shè)置LCD顯示位置void LCD_Set_Pos(uchar po
11、s)LCD_Write_Command(pos | 0 x80);/寫LCD數(shù)據(jù)void LCD_Write_Data(uchar dat)while(LCD_Busy_Check();/判斷LCD是否忙碌RS = 1;RW = 0;E = 0;P0 = dat; DelayNOP();E = 1;DelayNOP();E = 0;/LCD初始化void LCD_Initialize()LCD_Write_Command(0 x38);DelayMS(1);LCD_Write_Command(0 x0c);DelayMS(1);LCD_Write_Command(0 x06);DelayMS(
12、1);LCD_Write_Command(0 x01);DelayMS(1);/ 顯示函數(shù),在LCD指定的行上顯示字符串void Display_String(uchar*str,uchar LineNo)uchar k;LCD_Set_Pos(LineNo);for(k=0;k16;k+) LCD_Write_Data(strk);/蜂鳴函數(shù)void Beep()uchar i, j = 70;for(i=0;i;/顯示修改標(biāo)志else HMS_String3 = ; /不顯示修改標(biāo)志HMS_String4 = h/10 + 0; /時(shí)HMS_String5 = h%10 + 0;HMS_S
13、tring7 = m/10 + 0; /分HMS_String8 = m%10 + 0;HMS_String10= s/10 + 0; /秒HMS_String11= s%10 + 0;Display_String(HMS_String,0 x40);/設(shè)置時(shí)間void Change_Time()Settime=0;if(K1=0|K2=0|K3=0) /按下k1 k2 k3中的任何一個(gè)鍵即進(jìn)入修改狀態(tài)TR0 = 0;Display_String(Str2,0 x00); /第一行提示修改時(shí)間Settime = 1;while (Settime) if(K1 = 0) /確定調(diào)整小時(shí)還是分鐘
14、Beep();while(K1 = 0)Change_H_or_M = !Change_H_or_M;else if(K2 = 0) /增加 Beep();while(K2 = 0);if(Change_H_or_M=1)if(+Hour = 24) Hour = 0;elseif(+Minute = 60) Minute = 0;else if(K3 = 0) /減少Beep();while(K3 = 0);if(Change_H_or_M = 1)if(-Hour = 0 xff) Hour = 23;else if(-Minute = 0 xff) Minute = 59;else if
15、(K4 = 0) /確定Beep();while(K4 = 0);Display_String(Str1,0 x00); /第一行還原顯示str1Settime = 0;TR0 = 1;Display_HMS(Hour,Minute,Second); /外層While在這里結(jié)束/定時(shí)器0中斷void Time0() interrupt 1TH0 = (65536 -50000)/256;TL0 = (65536 -50000)%256; /重新裝入50MS定時(shí)if(+MilliSecond = 20) /50*20=1s MilliSecond = 0;if(+Second = 60) Sec
16、ond = 0;if(+Minute = 60)Minute = 0;if(+Hour = 24)Hour = 0;Minute = 0;Second = 0;/主函數(shù)void main()TMOD = 0 x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;IE = 0 x82;SPK = 0;LCD_Initialize();Display_String(Str1,0 x00); /第一行顯示TR0 = 1;P1 = 0 xFF;while(1)Display_HMS(Hour,Minute,Second); /第二行顯示時(shí)分秒Delay
17、MS(500);Change_Time(); /顯示過程中允許修改時(shí)間 5. Proteus仿真 用Protues軟件畫出電路,用keil軟件代碼進(jìn)行編譯成功后,未添加源程序時(shí)的仿真電路圖 圖八 電路原理圖 輸入?yún)R編源程序后程序后,電路的仿真圖 圖九 電路professional仿真圖 6.課程設(shè)計(jì)總結(jié) 通過這次的單片機(jī)課程設(shè)計(jì),我更進(jìn)一步了解到單片機(jī)的優(yōu)點(diǎn)和強(qiáng)大功能,在查找資料的過程中,認(rèn)識(shí)到單片機(jī)應(yīng)用的廣泛性。在設(shè)計(jì)中,我通過查閱各種單片機(jī)資料,并以單片機(jī)課程設(shè)計(jì)指導(dǎo)書作為參考,在何春霞老師的細(xì)心指導(dǎo)下,我終于歷經(jīng)兩周的時(shí)間完成了這次單片機(jī)的設(shè)計(jì),這次單片機(jī)的設(shè)計(jì)不僅使我對(duì)單片機(jī)課程有了進(jìn)
18、一步的了解,同時(shí)更加深了我對(duì)單片機(jī)的應(yīng)用。學(xué)完單片機(jī)課程后我只是對(duì)單片機(jī)有了一些理論的了解,但這次單片機(jī)課程設(shè)計(jì)卻加深了我對(duì)單片機(jī)理論與實(shí)踐的結(jié)合。但由于我的知識(shí)水平有限,設(shè)計(jì)的單片機(jī)電子時(shí)鐘還是存在一些的缺點(diǎn)和不足,如在電子時(shí)鐘的基礎(chǔ)上實(shí)現(xiàn)鬧鐘音樂等方面的設(shè)計(jì),希望能在以后的學(xué)習(xí)過程鐘,能夠盡快的解決這些問題。最后,我覺得單片機(jī)的課程設(shè)計(jì)是很有意義的,在這個(gè)過程中可以學(xué)會(huì)如何把自己平時(shí)所學(xué)的東西應(yīng)用到實(shí)際中。雖然我對(duì)這門課懂的并不多,很多基礎(chǔ)的東西都還沒有很好的掌握,覺得有點(diǎn)難,也沒有很有效的辦法通過自身去理解,但是靠著這兩個(gè)多星期的“學(xué)習(xí)”,在小組同學(xué)的幫助和講解下,自己開始主動(dòng)學(xué)習(xí)并逐步
19、從基礎(chǔ)慢慢開始弄懂它。我認(rèn)為這個(gè)收獲應(yīng)該說是相當(dāng)大的。我覺得課程設(shè)計(jì)反映的是一個(gè)從理論到實(shí)際應(yīng)用的過程,這個(gè)過程對(duì)缺乏實(shí)際經(jīng)驗(yàn)的我們是非常重要的。通過這次單片機(jī)課程設(shè)計(jì)使我認(rèn)識(shí)到自身知識(shí)及能力的薄弱,更讓我知道實(shí)踐的重要性。在以后的學(xué)習(xí)過程中,我會(huì)更加努力學(xué)習(xí)相關(guān)知識(shí)和應(yīng)用,真正能夠運(yùn)用單片機(jī)組成的微控制系統(tǒng)解決各種實(shí)際的問題。參考文獻(xiàn)1 何立民主編.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)M.北京:北京航空航天大學(xué)出版社,20112 薛鈞義,張彥斌.MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用M.西安:西安交通大學(xué)出版社,20133 丁元杰.單片微機(jī)原理及應(yīng)用M.北京:機(jī)械工業(yè)出版社,20144 張毅坤,陳善久,裘雪紅.單片微型計(jì)算機(jī)原理及應(yīng)用M.西安:西安電子科技大學(xué)出版社,20125 李廣弟.單片機(jī)基礎(chǔ)M.北京:北京航空航天大學(xué)出版社,201212
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案