單片機(jī)--電子時(shí)鐘(LCD顯示)_第1頁(yè)
單片機(jī)--電子時(shí)鐘(LCD顯示)_第2頁(yè)
單片機(jī)--電子時(shí)鐘(LCD顯示)_第3頁(yè)
單片機(jī)--電子時(shí)鐘(LCD顯示)_第4頁(yè)
已閱讀5頁(yè),還剩13頁(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í)鐘 (LCD顯示 )單片機(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í)間:使用字符型LCD顯示器顯示當(dāng)前時(shí)間。顯示格式為“時(shí)時(shí):分分:秒秒” 。用 4 個(gè)功能鍵操作來(lái)設(shè)置當(dāng)前時(shí)間,4 個(gè)功能鍵接在P1.0 P1.3 引腳上。功能鍵 K1K4 功能如下。K1進(jìn)入設(shè)置現(xiàn)在的時(shí)間。K2設(shè)置小時(shí)。K3設(shè)置分鐘。K4確認(rèn)完成設(shè)置。程序執(zhí)行后工作指示燈 LED閃動(dòng),表示程序開(kāi)始執(zhí)行, LCD顯示“ 00:0

2、0:00”,然后開(kāi)始計(jì)時(shí)。二、實(shí)驗(yàn)電路及功能說(shuō)明1) 單片機(jī)主控制模塊以 AT89C51單片機(jī)為核心進(jìn)行一系列控制。2) 時(shí)鐘顯示模塊用 1602 為 LCD顯示模塊,把對(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.0 P1.3 引腳上。 功能鍵 K1K4 功能如下。 K1進(jìn)入設(shè)置現(xiàn)在的時(shí)間。K2設(shè)置小時(shí)。 K3設(shè)置分鐘。 K4確認(rèn)完成設(shè)置。如圖:三、實(shí)驗(yàn)程序流程圖:主程序:時(shí)鐘主程序流程子程序:保 護(hù)設(shè) 置 計(jì)1S( 40H) +1N( 40H)0(

3、 41H) +1 N( 41H)0( 43H) +1N( 43H)0( 44H) +1N( 44H)0( 46H) +1N( 46H)N( 47H)0( 0 )( 46H ) +1恢返( 46H)0( 47) +1中斷服務(wù)流程圖四、實(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)燒入程序后開(kāi)始運(yùn)行,根據(jù)初始值設(shè)定可以觀察到顯示的時(shí)間, 這里為了更明顯觀察顯示數(shù)據(jù)變化把起始值設(shè)為23 :59 :50運(yùn)行后顯示,K1 為進(jìn)入現(xiàn)在設(shè)置

4、時(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)問(wèn)題解決問(wèn)題的能力。在編程過(guò)程,發(fā)現(xiàn)自己對(duì)C語(yǔ)言很生疏,很多技巧和函數(shù)運(yùn)用都不會(huì),通過(guò)參考資料和詢(xún)問(wèn)同學(xué)終于讓我完成了程序

5、,并實(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í)現(xiàn)。在仿真過(guò)程中發(fā)現(xiàn)許多模型不知道名稱(chēng),最后搜索了一份Proteus元件庫(kù),里邊有很多元件模型的名稱(chēng)。最后搭建成功了

6、仿真模型,并且運(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#defineDelayNOP()_nop_();_nop_();_nop_();_nop_();sbit K1 =P10;/ 選擇調(diào)整小時(shí),分鐘sbit K2 =P11;/增加sbit K3 =P

7、12;/減小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;/是否修改時(shí)間bitChange_H_or_M=1;/1表示修改時(shí) .0 表示修改分uchar MilliSecond,Hour

8、 =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 LCD_Write_Command(uchar cmd)while(LCD_Busy_Check();/判斷LCD 是否忙碌RS= 0;RW=

9、 0;E = 0;_nop_();_nop_();P0= cmd;DelayNOP(); E = 1;DelayNOP();E = 0; /設(shè)置LCD顯示位置LCD_Write_Command(pos | 0x80);/ 寫(xiě)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(0x38

10、);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)uchar 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)

11、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è)位HMS_String5 = h%10 + '0'HMS_String7=m/10+HMS_String8 = m/10 + '0'HMS_String8=m%10 +HMS_String8 = m%10 + '

12、;0''0''0'/分/分HMS_String10=s/10+'0'/秒HMS_String11= s/10 + '0'HMS_String11=s%10+'0'/秒HMS_String11= s%10 + '0'/ 設(shè)置時(shí)間void Change_Time()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í)還是分鐘whi

13、le(K1 = 0)Change_H_or_M = !Change_H_or_M;else if(K2 = 0)/增加while(K2 = 0);if(Change_H_or_M=1)if(+Hour = 24) Hour = 0;elseif(+Minute = 60) Minute = 0;else if(K3 = 0)/減少while(K3 = 0);if(Change_H_or_M = 1)if(-Hour = 0xff) Hour = 23;elseif(-Minute = 0xff) Minute = 59; else if(K4 = 0)/確定while(K4 = 0);Disp

14、lay_String(Str1,0x00);/第一行還原顯示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=1sMilliSecond = 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)論