(完整版)電子時鐘(LCD顯示).docx_第1頁
(完整版)電子時鐘(LCD顯示).docx_第2頁
(完整版)電子時鐘(LCD顯示).docx_第3頁
(完整版)電子時鐘(LCD顯示).docx_第4頁
(完整版)電子時鐘(LCD顯示).docx_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、電氣工程及自動化專業(yè)單片機(jī)原理及應(yīng)用課程設(shè)計(jì)報告姓名: XXXXXX學(xué)號: XXXXXXX專業(yè)班級: XXXXXX題目:電子時鐘 (LCD 顯示)電氣與電子工程學(xué)院二一四年十二月三十日 2 2 2 3 4 5 7 13 13 141一、設(shè)計(jì)目的1 、設(shè)計(jì)要求以 AT89C51單片機(jī)為核心的時鐘,在LCD顯示器上顯示當(dāng)前的時間。2、 使用字符型 LCD顯示器顯示當(dāng)前時間。顯示格式為“時時:分分:秒秒”。3、用 4 個功能鍵操作來設(shè)置當(dāng)前時間。4、熟悉掌握 proteus 編成軟件以及 keil軟件的使用二、設(shè)計(jì)任務(wù)與要求本設(shè)計(jì)以 AT89C51單片機(jī)為核心,通過時鐘程序的編寫, 并在 LCD 顯

2、示器上顯示出來。 該編程的核心在于定時器中斷及循環(huán)往復(fù)判斷是否有按鍵操作,并對每個按鍵的操作在 LCD 顯示器上作出相應(yīng)的反應(yīng)。由于 LCD顯示器每八位對應(yīng)一個字符,故把秒、分、時的個位和十位分開表示。該課題中有四個控制開關(guān) KM1、KM2、KM3、KM4分別控制時、分、秒、確定的調(diào)整,時間按遞增的方式調(diào)整,每點(diǎn)一次按鈕則相應(yīng)的時間個位加以,且時間調(diào)整不干擾其他為調(diào)整時間的顯示。三、設(shè)計(jì)原理分析1、按照系統(tǒng)的設(shè)計(jì)功能要求,本時鐘系統(tǒng)的設(shè)計(jì)必須采用單片機(jī)軟件系統(tǒng)實(shí)現(xiàn), 用單片機(jī)的自動控制能力配合按鍵控制, 來控制時鐘的調(diào)整及顯示。時鐘電路數(shù)據(jù)顯示微型控按鍵調(diào)時制器圖一 系統(tǒng)總原理圖22、軟件主要

3、完成功能( 1)顯示時間程序用軟件調(diào)節(jié)時間,通過程序的調(diào)節(jié),最后用 LED 現(xiàn)實(shí)時鐘( 2)調(diào)節(jié)時間程序按鍵調(diào)節(jié)時間,能實(shí)現(xiàn)時、分的調(diào)節(jié)3、軟件設(shè)計(jì)主要流程時間控制程序時間控制程序,用中斷準(zhǔn)確的控制時間,采用 60 進(jìn)制, 60 秒為一分鐘, 60 分鐘為一個小時,全天設(shè)置為 24 小時。四、硬件資源及原理圖AT89C51 芯片AT89C51 是美國 ATMEL公司生產(chǎn)的 8 位Flash ROM單片機(jī)。其最突出的優(yōu)點(diǎn)是片內(nèi) ROM為Flash ROM,可擦寫 1000 次以上,應(yīng)用并不復(fù)雜的通用 ROM寫入器就能方便的擦寫,讀取也很方便,價格低廉,具有片程序 ROM二級保密系統(tǒng)。因此可靈活應(yīng)

4、用于各種控制領(lǐng)域。AT89C51 包含以下一些功能部件:1. 一個 8 位 CPU;2. 一個片內(nèi)振蕩器和時鐘電路;3. 4KB Flash ROM ;4. 128B 內(nèi) RAM;5. 可尋址 64KB 的外 ROM和外 RAM控制電路;6. 兩個 16 位定時 / 計(jì)數(shù)器;7. 21 個特殊功能寄存器;8. 4 個8 位并行 I/O 口;9. 一個可編程全雙工串行口;10. 5 個中斷源,可設(shè)置成 2 個優(yōu)先級。AT89C51 單片機(jī)一般采用雙列直插 DIP 封裝,共 40 個引腳,圖 2-1 為其引腳排列圖。 40 個引腳大致可分為 4 類:電源、時鐘、控制各 I/O 引腳3五、硬件圖4六

5、、程序框圖LCD 顯示設(shè)置 T0 為方式 1設(shè)中斷次數(shù)為20清計(jì)時單元開中斷啟動 T0調(diào)用顯示子程序按鍵程序調(diào)用按鍵顯示子程序時鐘主程序流程5保護(hù)現(xiàn)場設(shè)置計(jì)數(shù)初值1S 到?(40H )+1( 40H)N( 40H) =10 ?0 (40H)( 41H)+1(41H)N( 41H) =5?0 (41H)( 43H )+1( 43H)N( 43H) =10 ?0 (43H)( 44H)+1(44H)N( 44H) =5?0(44H)(46H)+1(46H)N( 46H) =4?N( 47H) =2?0(46H)( 0)( 47H)( 46H)+1( 46H)恢復(fù)現(xiàn)場返回( 46H)=10 ?0(4

6、6H)( 47)+1( 47)中斷服務(wù)流程圖6七、程序#include #include #define uchar unsigned char#define uint unsigned int#define DelayNOP() _nop_();_nop_();_nop_();_nop_();sbit K1 =P00;sbit K2 =P01;sbit K3 =P02;sbit K4 =P03;sbit SPK=P30;sbit RS =P20;sbit RW =P21;sbit E =P22;uchar code Str1 = Current Time ; /一下兩個字符串的串長均為 16

7、uchar code Str2 = Set New Time. ;uchar HMS_String=00:00:00;/帶顯示的時間串bit Settime=0;/是否修改時間bit Change_H_or_M =1;/1 表示修改時 .0 表示修改分 uchar MilliSecond,Hour =0,Minute=0, Second =0;/ 延時函數(shù)void DelayMS(uint x)uchar i;while(x-) for(i=0;i120;i+);/LCD 忙狀態(tài)檢測bit LCD_Busy_Check()7bit result;RS = 0;RW = 1;E = 1;Dela

8、yNOP();result = (bit)(P0 & 0x80);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 pos)LCD_Write_Command(pos | 0x80);/ 寫 LCD數(shù)據(jù)void LCD_Writ

9、e_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(0x38);DelayMS(1);LCD_Write_Command(0x0c);DelayMS(1);8LCD_Write_Command(0x06);DelayMS(1);LCD_Write_Command(0x01);DelayMS(1);/ 顯示函數(shù),在 LCD指定的

10、行上顯示字符串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;/時HMS_String5 = h%10 + 0;HMS_String7 = m/10 + 0;/分HMS_String8 = m%10 + 0;HMS_String1

11、0= s/10 + 0;/秒HMS_String11= s%10 + 0;9Display_String(HMS_String,0x40);/ 設(shè)置時間void Change_Time()Settime=0;if(K1=0|K2=0|K3=0)/按下 k1 k2 k3中的任何一個鍵即進(jìn)入修改狀態(tài)TR0 = 0;Display_String(Str2,0x00);/第一行提示修改時間Settime = 1;while (Settime)if(K1 = 0)/確定調(diào)整小時還是分鐘Beep();while(K1 = 0)Change_H_or_M = !Change_H_or_M;else if(K

12、2 = 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)/減少10Beep();while(K3 = 0);if(Change_H_or_M = 1)if(-Hour = 0xff) Hour = 23;elseif(-Minute = 0xff) Minute = 59;else if(K4 = 0)/確定Beep();while(K4 = 0);Display_String(Str1,0x00);/第一行還原

13、顯示str1Settime = 0;TR0 = 1;Display_HMS(Hour,Minute,Second);/外層 While 在這里結(jié)束/ 定時器 0 中斷void Time0() interrupt 1TH0 = (65536 -50000)/256;TL0 = (65536 -50000)%256;/重新裝入 50MS定時if(+MilliSecond = 20)/50*20=1sMilliSecond = 0;if(+Second = 60)Second = 0;if(+Minute = 60)11Minute = 0;if(+Hour = 24)Hour = 0;Minute

14、 = 0;Second = 0;/ 主函數(shù)void main()TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;IE = 0x82;SPK = 0;LCD_Initialize();Display_String(Str1,0x00);/第一行顯示TR0 = 1;P1 = 0xFF;while(1)Display_HMS(Hour,Minute,Second);/第二行顯示時分秒DelayMS(500);Change_Time();/顯示過程中允許修改時間12八、調(diào)試運(yùn)行1、按硬件原理圖接線用4 個功能鍵操作來設(shè)置當(dāng)前時間。

15、 功能鍵 K1 K4 功能如下。K1 進(jìn)入設(shè)置現(xiàn)在的時間。K2 設(shè)置小時。K3 設(shè)置分鐘。K4 確認(rèn)完成設(shè)置。程序執(zhí)行后工作指示燈LED 閃動,表示程序開始執(zhí)行, LED 顯示 “00:00:00”,然后開始計(jì)時九、仿真截圖結(jié)論:采用 12MHZ 晶振采用方式 1 定時 ,選取 50ms采用 20 次中斷達(dá)到一秒,采用查表方式控制 LCD 顯示。根據(jù)仿真結(jié)果可知該編程及硬件電路符合要求:13十、設(shè)計(jì)心得體會課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題, 鍛煉實(shí)踐能力的重要環(huán)節(jié), 是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程 .隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域, 在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。 回顧起此次單片機(jī)課程設(shè)計(jì),至今我仍感慨頗多,的確,從選題到定稿,從理論到實(shí)踐,在整整兩星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西, 同時不僅可以鞏固了以前所

溫馨提示

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

評論

0/150

提交評論