單片機(jī)電子時(shí)鐘LCD顯示_第1頁(yè)
單片機(jī)電子時(shí)鐘LCD顯示_第2頁(yè)
單片機(jī)電子時(shí)鐘LCD顯示_第3頁(yè)
單片機(jī)電子時(shí)鐘LCD顯示_第4頁(yè)
單片機(jī)電子時(shí)鐘LCD顯示_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 單片機(jī)綜合實(shí)驗(yàn)報(bào)告 題 目: 電子時(shí)鐘(LCD)顯示 班 級(jí): 0310405班 學(xué) 號(hào): 031040514 學(xué)生姓名: 張 金 龍 指導(dǎo)老師: 高 林 2013年 6 月 17 日一、 實(shí)驗(yàn)內(nèi)容:以AT89C51單片機(jī)為核心的時(shí)鐘,在LCD顯示器上顯示當(dāng)前的時(shí)間:l 使用字符型LCD顯示器顯示當(dāng)前時(shí)間。l 顯示格式為“時(shí)時(shí):分分:秒秒”。l 用4個(gè)功能鍵操作來(lái)設(shè)置當(dāng)前時(shí)間,4個(gè)功能鍵接在P1.0P1.3引腳上。 功能鍵K1K4功能如下。l K1進(jìn)入設(shè)置現(xiàn)在的時(shí)間。l K2設(shè)置小時(shí)。l K3設(shè)置分鐘。l K4確認(rèn)完成設(shè)置。程序執(zhí)行后工作指示燈LED閃動(dòng),表示程序開(kāi)始執(zhí)行,LCD顯示“00:

2、00:00”,然后開(kāi)始計(jì)時(shí)。二、實(shí)驗(yàn)電路及功能說(shuō)明1) 單片機(jī)主控制模塊以AT89C51單片機(jī)為核心進(jìn)行一系列控制。2) 時(shí)鐘顯示模塊用1602為L(zhǎng)CD顯示模塊,把對(duì)應(yīng)的引腳和最小系統(tǒng)上的引腳相連,連接后用初始化程序?qū)ζ溥M(jìn)行簡(jiǎn)單的功能測(cè)試。測(cè)試成功后即可為實(shí)驗(yàn)所用,如圖:3) 時(shí)間調(diào)整電路用4個(gè)功能鍵操作來(lái)設(shè)置當(dāng)前時(shí)間,4個(gè)功能鍵接在P1.0P1.3引腳上。 功能鍵K1K4功能如下。K1進(jìn)入設(shè)置現(xiàn)在的時(shí)間。K2設(shè)置小時(shí)。K3設(shè)置分鐘。K4確認(rèn)完成設(shè)置。如圖:三、實(shí)驗(yàn)程序流程圖:主程序: 時(shí) 鐘 主 程 序 流 程子程序:保護(hù)現(xiàn)場(chǎng)設(shè)置計(jì)數(shù)初值1S到?(40H)=10?0 (40H)(40H)+1

3、 (40H)(41H)+1 (41H)(46H)=4?0 (46H)(0) (47H)恢復(fù)現(xiàn)場(chǎng)返回NN中 斷 服 務(wù) 流 程 圖(41H)=5?0 (41H)(43H)=10?0 (43H)(43H)+1 (43H)(44H)+1 (44H)(44H)=5?0 (44H)(46H)+1 (46H)(47H)=2?(46H)+1 (46H)NN(46H)=10?0 (46H)(47)+1 (47)NN四、實(shí)驗(yàn)結(jié)果分析 實(shí)驗(yàn)結(jié)果及分析:?jiǎn)纹瑱C(jī)的晶振可以根據(jù)要求設(shè)定。6MHZ為和現(xiàn)實(shí)時(shí)間顯示相同。實(shí)驗(yàn)采用12MHZ晶振采用方式1定時(shí),選取50ms采用20次中斷達(dá)到一秒,采用查表方式控制LCD顯示。當(dāng)

4、燒入程序后開(kāi)始運(yùn)行,根據(jù)初始值設(shè)定可以觀察到顯示的時(shí)間,這里為了更明顯觀察顯示數(shù)據(jù)變化把起始值設(shè)為 23:59:50 運(yùn)行后顯示,K1為進(jìn)入現(xiàn)在設(shè)置時(shí)間,當(dāng)按下K1后顯示, 和實(shí)驗(yàn)要求相比較,實(shí)現(xiàn)了按下K1進(jìn)入現(xiàn)在時(shí)間設(shè)置,按下K4確認(rèn)完成時(shí)間設(shè)置的功能;不同之處: 當(dāng)進(jìn)入時(shí)間設(shè)置時(shí)在按下K1設(shè)置小時(shí),再次按下K1是設(shè)置分鐘。增加功能:進(jìn)入時(shí)間設(shè)置并選擇設(shè)置位置后K2鍵位數(shù)字增加功能,K3鍵為數(shù)字減小功能。根據(jù)仿真結(jié)果能夠確定編程正確,基本實(shí)現(xiàn)了所有功能,而且有所改進(jìn)。五、心得體會(huì)每次做單片機(jī)實(shí)驗(yàn)都會(huì)有不同的等收獲,而這次的實(shí)驗(yàn)讓我感覺(jué)收獲更大。這次的實(shí)驗(yàn)讓我鞏固了以往所學(xué),而且鍛煉了自己發(fā)現(xiàn)

5、問(wèn)題解決問(wèn)題的能力。在編程過(guò)程,發(fā)現(xiàn)自己對(duì)C語(yǔ)言很生疏,很多技巧和函數(shù)運(yùn)用都不會(huì),通過(guò)參考資料和詢(xún)問(wèn)同學(xué)終于讓我完成了程序,并實(shí)現(xiàn)了程序的功能。這不僅提高了自己動(dòng)手能力,也培養(yǎng)了自己的思考能力。這次在編程過(guò)程中學(xué)到了很多新東西,特別是LCD的顯示,在設(shè)定的顯示字符后,正確編譯后顯示各種設(shè)定值,LCD顯示16位字符,在最初編程時(shí)編譯正確但是LCD上的顯示字符有缺失,顯示不完整,經(jīng)過(guò)不斷調(diào)試發(fā)現(xiàn)空格同樣占據(jù)字符,只有所有字符不超過(guò)16位且位置正確時(shí)才能完整正確顯示。時(shí)間的顯示需要每一個(gè)顯示的位子有定義,而且要給“:”留下特定位子。同時(shí)編程時(shí)發(fā)現(xiàn)還可以顯示其他如日期。但本實(shí)驗(yàn)不需要且很難完成最終沒(méi)實(shí)

6、現(xiàn)。在仿真過(guò)程中發(fā)現(xiàn)許多模型不知道名稱(chēng),最后搜索了一份Proteus 元件庫(kù),里邊有很多元件模型的名稱(chēng)。最后搭建成功了仿真模型,并且運(yùn)行成功。 在這里要感謝老師在以往實(shí)驗(yàn)過(guò)程中不厭其煩的幫助自己解決所遇到的問(wèn)題和傳授一些知識(shí)和小竅門(mén)。讓我對(duì)單片機(jī)有機(jī)會(huì)加深了解,體會(huì)到了單片機(jī)的強(qiáng)大,學(xué)到了很多,感謝。六、程序清單#include <reg51.h>#include <intrins.h> #define uchar unsigned char#define uint unsigned int #define DelayNOP() _nop_();_nop_();_nop

7、_();_nop_();sbit K1 =P10; /選擇調(diào)整小時(shí),分鐘sbit K2 =P11;/增加sbit K3 =P12;/減小sbit K4 =P13;sbit SPK=P30; sbit RS =P20;sbit RW =P21;sbit E =P22; uchar code Str1 =" Current Time " /一下兩個(gè)字符串的串長(zhǎng)均為16 uchar code Str2 =" Set New Time" uchar HMS_String=" 00:00:00 "/帶顯示的時(shí)間串 bit Settime=0;

8、/是否修改時(shí)間 bit Change_H_or_M =1;/1表示修改時(shí).0表示修改分 uchar MilliSecond,Hour =23,Minute=59, Second =50; /延時(shí)函數(shù) void DelayMS(uint x) uchar i; while(x-) for(i=0;i<120;i+); /LCD忙狀態(tài)檢測(cè) bit LCD_Busy_Check() bit result; RS = 0;RW = 1;E = 1;DelayNOP();result = (bit)(P0 & 0x80);E = 0; return result; /寫(xiě)LCD命令 void

9、 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); /寫(xiě)LCD數(shù)據(jù) void LCD_Write_Data(uchar dat) while(LCD_Busy_Check();/判斷LCD是否忙碌 RS = 1;RW =

10、 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); LCD_Write_Command(0x06);DelayMS(1); LCD_Write_Command(0x01);DelayMS(1); / 顯示函數(shù),在LCD指定的行上顯示字符串 void Display_String(uchar*str,uchar LineNo) ucha

11、r k; LCD_Set_Pos(LineNo); for(k=0;k<16;k+) LCD_Write_Data(strk); /時(shí)分秒顯示 void Display_HMS(uchar h,m,s) if(Settime) HMS_String3 = '>'/顯示修改標(biāo)志 else HMS_String3 = ' ' /不顯示修改標(biāo)志HMS_String4 = h/10 + '0' /時(shí)十位 HMS_String5 = h/10 + '0' HMS_String5 = h%10 + '0' /時(shí)個(gè)位

12、 HMS_String5 = h%10 + '0' HMS_String7 = m/10 + '0' /分 HMS_String8 = m/10 + '0'HMS_String8 = m%10 + '0' /分 HMS_String8 = m%10 + '0'HMS_String10= s/10 + '0' /秒 HMS_String11= s/10 + '0' HMS_String11= s%10 + '0' /秒 HMS_String11= s%10 + '

13、;0'Display_String(HMS_String,0x40); /設(shè)置時(shí)間 void Change_Time() Settime=0; if(K1=0) /按下k1鍵即進(jìn)入修改狀態(tài) TR0 = 0; Display_String(Str2,0x00); /第一行提示修改時(shí)間 Settime = 1; while (Settime) if(K1 = 0) /確定調(diào)整小時(shí)還是分鐘 while(K1 = 0) Change_H_or_M = !Change_H_or_M; else if(K2 = 0) /增加 while(K2 = 0); if(Change_H_or_M=1) i

14、f(+Hour = 24) Hour = 0; else if(+Minute = 60) Minute = 0; else if(K3 = 0) /減少 while(K3 = 0); if(Change_H_or_M = 1) if(-Hour = 0xff) Hour = 23; else if(-Minute = 0xff) Minute = 59; else if(K4 = 0) /確定 while(K4 = 0); Display_String(Str1,0x00); /第一行還原顯示str1 Settime = 0; TR0 = 1; Display_HMS(Hour,Minute

15、,Second); /外層While在這里結(jié)束 /定時(shí)器0中斷 void Time0() interrupt 1 TH0 = (65536 -50000)/256; TL0 = (65536 -50000)%256; /重新裝入50MS定時(shí) if(+MilliSecond = 20) /50*20=1s MilliSecond = 0; if(+Second = 60) Second = 0; if(+Minute = 60) Minute = 0; if(+Hour = 24) Hour = 0;Minute = 0;Second = 0; /主函數(shù) void main() TMOD = 0x01;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論