LCD液晶多功能數(shù)字時鐘設(shè)計_第1頁
LCD液晶多功能數(shù)字時鐘設(shè)計_第2頁
LCD液晶多功能數(shù)字時鐘設(shè)計_第3頁
LCD液晶多功能數(shù)字時鐘設(shè)計_第4頁
LCD液晶多功能數(shù)字時鐘設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢紡織大學課程設(shè)計報告學院:電子信息工程學院班級:電信XX姓名:XXX學號:20100722指導(dǎo)老師:XXXLCD液晶多功能數(shù)字時鐘設(shè)計一.設(shè)計要求設(shè)計制作基于LCD液晶顯示屏的,可以調(diào)整的時鐘系統(tǒng)。1.基本要求(1)采用1602液晶屏顯示顯示時間。(2)時間可以顯示為:時分秒。(3)時鐘可以通過按鍵進行調(diào)節(jié)校正。2.發(fā)揮部分(1)選用12864液晶屏顯示日期和時鐘。(2)當系統(tǒng)斷電后,時鐘仍然可以保持。(3)可以設(shè)置至少兩個鬧鈴;設(shè)置溫度上下限,超限可以報警二原理框圖鍵盤三電路圖設(shè)計UTC130pFC2-1.0592M30pF、C3彳、10uF(22uF)9口rVCCIRL5xvAyAVC

2、C1K1KRlw-VCCXTAL1P0.0/AD0P0.1/AD1XTAL2P0.2/AD2RSTEA/VPPP0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P1.0/T2PSENP1.1/T2EXALEP1.2P3.0/RxDP1.3P1.4P1.5P3.1/TXDP1.6P3.2/INT0P1.7P3.3/INT1P3.4/T0P2.0/A8P3.5/TLP2.1/A9P3.6/WRP2.2/A10P3.7/RDP2.3/A11VSSP2.4/A12P2.5/A13P2.6/A14P27/A1519TJ5K-2040VDD-VLRS/W-N-0-1-46-7

3、-r+-t-12345678910111213141516345111ppp四主要元件選擇及參數(shù)設(shè)計單片機STC89S52U130pF2_LTY30pFJTVCCVCCXTAL1P0.0/AD0P0.1/AD1XTAL2P0.2/AD2RSTEA/VPPPSENP0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P1.0/T2P1.1/T2EXALEP1.2P3.0/RxDP1.3P1.4P1.5P3.1/TXDP1.6P3.2/INT0P1.7P3.3/INT1P3.4/T0P2.0/A8P3.5/TLP2.1/A9P3.6/WRP2.2/A10P3.7/RDP2

4、.3/A11VSSP2.4/A12P2.5/A13P2.6/A14P27/A150310uF(22uF)9n20AT89C52STC89S52是比較常用的52系列單片機。它的工作電壓是+5v。外圍電路加上12M的晶振,使其正常工作。P2口控制DAC0832。通過對P2口賦值來改變輸出增益的大小。1602液晶1602顯示容量為16乘2個字符。工作電壓為+5v。編號符號引腳說明編號符號引腳說明1VSS電源地9D2DateI/O2VDD電源正極10D3DateI/O3VL液晶顯示偏壓信號11D4DateI/O4RS數(shù)據(jù)/命令選擇端12D5DateI/O5R/W讀寫選擇端13D6DateI/O6E使能

5、端14D7DateI/O7D0DateI/O15BLA背光源正極8D1DateI/O16BLK背光源負極按鍵控制51P1.352P1.453P1.5五軟件編程按照電路圖的設(shè)計焊接好硬件電路。就開始軟件編程。程序主要分為兩個部分,即液晶顯示部分和控制按鍵的部分。由于本設(shè)計采用的是用按鍵分別控制??梢栽谥骱瘮?shù)中調(diào)用一個鍵盤掃描的函數(shù),當相應(yīng)的不同按鍵按下后控制液晶顯示和單片機P2的輸出,從而控制液晶的顯示。源程序見附錄。本數(shù)字時鐘共使用了三個按鍵。第一個按鍵用于選擇所要調(diào)節(jié)的內(nèi)容(如年、月、日、時、分、秒),按下不同次數(shù)光標分別在要調(diào)節(jié)的對應(yīng)位置閃爍;第二個按鍵用于所調(diào)節(jié)的量的增加,按下一次增加一

6、個單位;第三個按鍵用于所調(diào)節(jié)量的減少,按一下增加一個單位。該數(shù)字時鐘實現(xiàn)的功能是液晶正常顯示時分秒,年月日和星期。不僅可以用按鍵調(diào)節(jié)時分秒,還可以調(diào)節(jié)年月日,并且要保證星期和年月日相對應(yīng)。在這里需要指出的是由于條件限制(除非有時鐘芯片實現(xiàn)萬年歷),不可能保證星期與年月日正確對應(yīng)),故采程序中用天數(shù)對7取余數(shù),余1時為星期一(MON),余2時為星期二(TUE),依此類推,余0時為星期天(SUN),當天數(shù)到每月最后一天時繼續(xù)上加不回歸到1,這樣可以保證星期是正確的。具體見程序中注釋。編程思路是,在確定了時鐘要實現(xiàn)的功能后按照上述各按鍵所實現(xiàn)的效果編寫程序。本程序包含液晶寫指令函數(shù)(write_co

7、m()、寫數(shù)據(jù)函數(shù)(write_data()、初始化函數(shù)(init()、寫入時分秒函數(shù)(write_sfm()、寫入月和日函數(shù)(write_nyr()【別指出,由于年包含四位數(shù)字其寫法與月和日不同,故單獨設(shè)置一個寫入年函數(shù)】、寫入星期函數(shù)(write_xq()和鍵盤掃描函數(shù),這些程序圍繞主函數(shù)互相嵌套調(diào)用。六調(diào)試部分本次實驗的調(diào)試部分花了大量的時間。當程序?qū)懞镁幾g通過后,下載到單片機中,調(diào)試硬件看有無顯示和輸出。調(diào)試主要分為2個部分。分別是液晶顯示部分,按鍵控制部分。首先是液晶部分,經(jīng)過幾次程序的修改,和對液晶部分電路的檢測終于將液晶部分調(diào)出有顯示。然后檢查按鍵部分。首先檢查按鍵的焊接確定無誤

8、后,進行按鍵控制,結(jié)果顯示良好。七實驗心得體會與總結(jié)本次實驗總共做了兩大方面的任務(wù),編程和調(diào)試。在編程過程中必須牢牢把握數(shù)字時鐘所要實現(xiàn)的功能,在確定方案的情況下理清思路,認真思考如何實現(xiàn)時鐘的各種功能。通過編程我認識到一個合格的單片機編程人員必須有清晰的思路,要有全身心投入的工作精神。編寫這個程序我花費了將近一天的時間,耗費了不少精力。起初毫無頭緒,通過觀摩哈爾濱工程大學郭天祥老師的單片機課程視頻我學會了不少編程的技巧,如怎樣使用液晶,怎樣將年月日等字符轉(zhuǎn)換成液晶能顯示的字符,還有就是掌握了定義一個標志變量去對應(yīng)按鍵按下的次數(shù),根據(jù)按鍵次數(shù)即變量值去實現(xiàn)不同的功能等等。我在編程過程中使用的是

9、自己購買的單片機開發(fā)板,其液晶的用法(主要是RS、RW,E這些端口的時序),按鍵與單片機的接口等與我們自己焊接的單片機最小系統(tǒng)大有不同,程序在開發(fā)板上調(diào)制成功還要能在我們的單片機最小系統(tǒng)上工作,這也需要不斷地調(diào)試。在調(diào)試過程中我們發(fā)現(xiàn)了一些問題,一是液晶上在年月日后面空白處出現(xiàn)了亂碼,原因是在初始化函數(shù)中顯示年月日的時候for語句多執(zhí)行了3次;二是光標在按鍵過快時出現(xiàn)在錯誤位置,原因是在第一個鍵按下七次(此時,時鐘開始走)時沒有把光標重新定位;三是第一個按鍵不太靈敏,原因是按鍵在消抖的時候延時過長。通過此次單片機課程設(shè)計我掌握了1602液晶的用法,也學到了很多編程技巧,然而我要想學好用好單片機

10、還有很長的路要走。703AT89C52附錄一實驗電路圖VCCR15XV/1KU1VDDVLRSVCCXTAL1XTAL2P0.0/ADP0.1/ADP0.2/AD:P0.3/AD:P0.4/ADP0.5/AD.P0.6/ADv123456789101112131415169n8R/WENDOD1D2D3D4D5D6P0.7/ADRSTEA/VPPP1.0/T2PSENP1.1/T2E:ALEP1.2P1.3P1.4P3.0/RxDP1.5P3.1/TxDP1.6P3.2/INT0P1.7P3.3/INT1P3.4/T0P2.0/A8P3.52T1P2.1/A9P3.6/WRP2.2/A10P3

11、.7/RDP2.3/A11D7BL+VSS45-d6-h8-k24P2.4/A12P2.5/A13P2.6/A14P2.7/A15S2P1.4P1.5S3.附錄二實驗源程序/由于每個月日期被規(guī)定為31天,到第32天時日期變?yōu)?1,星期偏差很大本程序采用天數(shù)對7取余數(shù),/天數(shù)到每月最后一天后繼續(xù)上加不歸1,減少星期誤差#include#defineucharunsignedchar#defineuintunsignedintsbitRS=P0;sbitRW=Pl;sbitE=P2;sbitsi二P3;sbits2二P4;sbits3二P5;sbits4=P1飛;ucharcodetable=20

12、i0-i2-3iFRI;ucharcodetablei=23:59:50;ucharnum,count,shi=23,fen=59,miao=50;ucharyue=i2,ri=3i;uintnian=20i0;ucharsinum,s2num,xq;voiddelay(ucharz)uintx,y;for(x=z;x0;x-)for(y=ii0;y0;y-);voidwrite_com(ucharcom)/delay(5);/E=0;RS=0;RW=0;P0=com;delay(5);/_nop_();E=0;delay(5);E=i;voidwrite_data(uchardate)/de

13、lay(5);RS=i;/E=0;RW=0;P0=date;/_nop_();delay(5);E=0;delay(5);E=1;/RS=0;voidinit()delay(15);write_com(0 x38);/displaymodewrite_com(0 x08);/displaymodewrite_com(0 x01);/displaymodewrite_com(0 x06);/顯示光標移動位置write_com(0 x0c);/顯示開及光標設(shè)置write_com(0 x01);/顯示清屏write_com(0 x80);write_com(0 x02);for(num=0;num1

14、5;num+)write_data(tablenum);delay(20);write_com(0 x80+0 x41);for(num=0;num11;num+)write_data(table1num);delay(20);TMOD=0 x01;EA=1;ET0=1;TR0=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;voidwrite_sfm(ucharadd,uchardate)/寫入時分秒ucharshi,ge;shi=date/10;ge=date%10;write_com(0 x80+0 x40+add);/地址指向第二行,在第二行

15、寫write_data(0 x30+shi);/write_data(0 x30+ge);voidwrite_nyr(ucharadd,uchardate)/只寫入月和日(月和日均只有十位和個位,寫法相同)ucharshi,ge;shi=date/10;ge=date%10;write_com(0 x80+add);write_data(0 x30+shi);write_data(0 x30+ge);voidwrite_nian(ucharadd,uintyear)/寫入年uintqian,bai,shi,ge;qian=year/1000;/2413/1000=2(得到千位)bai=(yea

16、r%1000)/100;/(2413%1000)=413413/100=4(得到百位)shi=(year%1000)%100)/10;/413%100=1313/10=1(得到十位)ge=(year%1000)%100)%10;write_com(0 x80+add);/13%10=3(得到個位)write_data(0 x30+qian);write_data(0 x30+bai);write_data(0 x30+shi);write_data(0 x30+ge);voidwrite_xq1(ucharadd)/星期一write_com(0 x80+add);/write_data(0 x

17、40+0 x0d);/查詢液晶的字符手冊可知MON(星期一)write_data(0 x40+0 x0f);/這三個英文字符對應(yīng)的二進制碼write_data(0 x40+0 x0e);/voidwrite_xq2(ucharadd)/星期二write_com(0 x80+add);write_data(0 x54);write_data(0 x55);write_data(0 x45);voidwrite_xq3(ucharadd)/星期三write_com(0 x80+add);write_data(0 x50+4);write_data(0 x40+8);write_data(0 x50

18、+5);voidwrite_xq4(ucharadd)/星期四write_com(0 x80+add);write_data(0 x57);write_data(0 x45);write_data(0 x4e);voidwrite_xq5(ucharadd)/星期五write_com(0 x80+add);write_data(0 x46);write_data(0 x52);write_data(0 x49);voidwrite_xq6(ucharadd)/星期六write_com(0 x80+add);write_data(0 x53);write_data(0 x41);write_da

19、ta(0 x54);voidwrite_xq7(ucharadd)/星期日write_com(0 x80+add);write_data(0 x53);write_data(0 x55);write_data(0 x4e);voidkeyscan()/按鍵控制函數(shù)if(s1=0)/按鍵1delay(5);/按下消抖if(s1=0)s1num+;/s1num1是按鍵1的標志變量,表示按鍵1按下的次數(shù)while(!s1);/按鍵彈起時消抖if(s1num=1)TRO=O;/時間停止走write_com(0 x80+0 x40+ll);/按鍵1按下時write_com(OxOf);/光標在秒個位閃爍

20、,調(diào)秒if(s1num=2)write_com(0 x80+0 x40+8);/按鍵1按下第二次,光標在分個位閃爍,調(diào)分if(s1num=3)write_com(0 x80+0 x40+5);/按鍵1按下第三次,光標在時位閃爍,調(diào)時if(s1num=4)write_com(0 x80+4);/按鍵1按下第四次,光標在年位閃爍,調(diào)年if(s1num=5)write_com(0 x80+7);/按鍵1按下第五次,光標在月個位閃爍,調(diào)月if(s1num=6)write_com(0 x80+10);/按鍵1按下第六次,光標在日個位閃爍,調(diào)日if(s1num=7)s1num=0;write_com(0

21、x0c);/光標按下第七次,光標回到秒個位,write_com(0 x80+11);/同時停止閃爍,定時器開,TR0=1;/時間開始走.if(s1num!=0)/按鍵按下執(zhí)行以下操作if(s2=0)/按鍵2的作用為按下時使想要調(diào)整的時分秒,年月日等數(shù)值增加delay(5);if(s2=0)while(!s2);if(s1num=1)miao+;if(miao=60)miao=0;write_sfm(10,miao);/刷新屏幕,將新的秒的值顯示出來,其中秒的位置為0X80+0X40+10,從此位置開始寫新的秒值write_com(0 x80+0 x40+11);if(s1num=2)fen+;

22、if(fen=60)fen=0;write_sfm(7,fen);/刷新屏幕,將新的分的值顯示出來,其中分的位置為0X80+0X40+7,從此位置開始寫新的分值write_com(0 x80+0 x40+8);if(s1num=3)shi+;if(shi=24)shi=0;ri+;write_nyr(9,ri);write_sfm(4,shi);/刷新屏幕,將新的時的值顯示出來,其中時的位置為0X80+0X40+4,從此位置開始寫新的時值,write_com(0 x80+7);write_sfm(4,shi);write_com(0 x80+0 x40+5);if(s1num=4)nian+;

23、write_nian(1,nian);/刷新屏幕,將新的年的值顯示出來,其中年的位置為0X80+1,從此位置開始寫新的年值write_com(0 x80+4);if(s1num=5)yue+;if(yue=13)yue=1;write_nyr(6,yue);/刷新屏幕,將新的月的值顯示出來,其中月的位置為0X80+6,從此位置開始寫新的月值write_com(0 x80+7);if(s1num=6)ri+;xq+;if(ri=31)ri=1;write_nyr(9,ri);/刷新屏幕,將新的日的值顯示出來,其中日的位置為0X80+9,從此位置開始寫新的日值write_com(0 x80+10)

24、;if(xq%7=0)write_xq1(12);if(xq%7=1)write_xq2(12);if(xq%7=2)write_xq3(12);if(xq%7=3)write_xq4(12);if(xq%7=4)write_xq5(12);if(xq%7=5)write_xq6(12);if(xq%7=6)write_xq7(12);write_com(0 x80+10);if(s3=0)/按鍵3的作用是按下時使想要調(diào)整的時分秒,年月日等數(shù)值減少delay(1);if(s3=0)while(!s3);if(s1num=1)miao-;if(miao=-1)miao=59;write_sfm(

25、10,miao);write_com(0 x80+0 x40+11);if(s1num=2)fen-;if(fen=-1)fen=59;write_sfm(7,fen);write_com(0 x80+0 x40+8);if(s1num=3)shi-;if(shi=-1)shi=23;write_sfm(4,shi);write_com(0 x80+0 x40+5);if(s1num=4)nian-;write_nian(1,nian);write_com(0 x80+4);if(s1num=5)yue-;if(yue=0)yue=12;write_nyr(6,yue);write_com(0 x80+7);if(s1num=6)ri-;xq-;if(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論