51單片機實現電子時鐘功能_1602液晶顯示_第1頁
51單片機實現電子時鐘功能_1602液晶顯示_第2頁
51單片機實現電子時鐘功能_1602液晶顯示_第3頁
51單片機實現電子時鐘功能_1602液晶顯示_第4頁
51單片機實現電子時鐘功能_1602液晶顯示_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 設計要求及系統組成一、基本操作時序:讀狀態:輸入:RS=L,RW=H,E=H 輸出:D0D7=狀態字 寫指令:輸入:RS=L,RW=L,D0D7=指令碼,E=高脈沖 輸出:無讀數據:輸入:RS=H,RW=H,E= 高脈沖 輸出:D0D7數據 寫數據:輸入:RS=H,RW=L。D0D7=數據,E=高脈沖 輸出:無二、狀態字說明:STA7 D7 STA6 D6 STA5 D5 STA4 D4 STA3 D3 STA2 D2 STA1 D1STA0-6:當前數據地址指針的數值STA7:讀寫操作使能 1表示禁止,0表示允許 對控制器每次進行讀寫操作之前,都必須進行讀寫檢測,確保STA7為0;但

2、是我們可以進行延時進行實現。RAM地址映射: LCD 16字*2行 00 01 02 03 04 05 06 07 08 08 09 0A 0B 0C 0D 0E 0F 2740 41 42 4F 50 67指令說明:1.初始化設置 1.顯示模式設置 指令碼:00111000(0x38)功能:設置16*2顯示,5*7點陣,8位數據接口 必須開顯示 2.顯示開、關及光標設置 指令碼:00001DCB,功能:D=1 開顯示;D=0 關顯示;C=1顯示光標;B=1 光標閃爍;B=0 光標不顯示 000001NS:功能:N=1當讀或寫一個字符后地址指針加1,且光標加1;N=0相應的減1;S=1當寫一個

3、字符,整屏顯示左移(N=1)或右移(N=0),以得到光標不移動而屏幕移動的效果。 S=0 當寫一個字符,正屏顯示不移動。數據控制: 控制器內部設有一個數據地址指針,用戶可通過它們來訪問內部的全部80字節RAM 4.2.1 數據指針設置: 指令碼:80H+地址碼 (0-27H,第二行開始:40H-67H) 4.2.2 讀數據,寫數據其它設置:01H:顯示清屏:1.數據指令清零 2 所有顯示清零 02H:顯示回車 :1.數據清零如何進行連接:實際操作中,液晶接到 ,第一管腳是D,第二管腳是VCC,15和16是背光,D0-D7是數據口,接到單片機的P0口,P0口接了兩個鎖存器,液晶,D/A,具有高阻

4、狀態的都可以隨便接,沒有影響,第六管腳是LCDEN相當于 E,使能信號,它接P34,R/W接地,表示低電平,因為我們只進行寫操作,RS接2實驗板上的P35;只需這兩端口便足以控制液晶,2和3是偏壓信號,一端接地,接口信號說明:編號:1 VSS(符號表示) 電源地(引腳說明) 2VDD 電源正極3VL液晶顯示偏壓信號 4RS數據/命令選擇端(H/L) 5R/W 讀寫選擇端(H/L) 6E 使能信號 7D0 Data 1/0 8D1 Data 1/0 9 D2 Data 1/0 10 D3 Data 1/0 11D4 Data 1/0 12D5 Data 1/0 13D6 Data 1/0 14D

5、7 Data 1/0 15BLK背光源正極 16 BLK 背光源負極實際操作:先寫光標程序;寫兩個子程序,一個寫數據,一個寫指令:先進性兩個宏定義,再位申明LCDEN與RS;為了電量充足。初始化時關斷數碼管,定義數碼管的兩個鎖存端,dula與wela,P26與P27,先寫主函數(調用初始化函數,在調用數據子函數(1),從右向左滾動進來Code:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0000001S/CR/LxxS/RR/L描述00光標左移01光標右移10顯示左移,光標跟著左移11顯示右移,光標跟著右移) ,再寫初始化函數(先關斷數碼管,在進行顯示模式設置,顯示開、關及光標設置

6、,設計數據),接著寫命令子函數writercom(開始操作時序,寫指令,P0口送的指令碼,接著需要延時一段時間讓E變成高電平,在持續一段時間,E再變低),它由所用的指令直接調用即可。再寫一個寫數據的子函數writer_data(lcdrs=1),需用延時子函數。Uchar code table=“” 注意:為了使得黑托不出現,應該屏幕全部清零writer_com(0x01)。?xdata:外部地址空間1.1 設計要求利用單片機最小系統設計一個電子時鐘,顯示方式為*:*:*,并且可以任意修改時間。1.2系統組成 原理框圖如圖1.1單片機復位電路時鐘電路按鍵電路1602顯示模塊 圖1.1 系統原理

7、框圖第二章 系統設計方案2.1 系統設計方案 電路原理圖如圖2.1所示 圖2.1 電路原理圖2.2 電路模塊組成及其工作原理 2.2.1 時鐘電路系統時鐘源由內部時鐘方式產生,時鐘電路由12MH晶振和兩個30PF瓷片電容組成,構成自激振蕩,形成振蕩源提供給單片機。電容可在5PF到30PF之間選擇,電容的大小對振蕩頻率有微小影響,可起頻率微調作用。時鐘電路如圖2.2所示圖2.2 時鐘電路 2.2.2 復位電路 單片機復位有上電復位和手動復位兩種方式,上電復位是接通電源后利用RC充電來實現復位。手動復位是通過人為干預,強制系統復位。 復位電路如圖2.3所示,可以實現上電復位和手動復位功能。圖2.3

8、 復位電路2.2.3 按鍵電路 在單片機的P1.0、P1.1、P1.2三個I/O口接三個簡易按鍵,通過不斷檢測按鍵狀態,識別按鍵的按下順序和次數即可實現時間的任意修改。 按鍵電路如圖2.4所示。2.2.4 1602液晶顯示模塊電路 本設計是通過對1602液晶顯示屏的控制來實現時間的顯示。 1602液晶顯示模塊的驅動如下所述:圖2.4 1602液晶屏實物圖 1602采用標準的16腳接口,其中:第1腳:VSS為地電源第2腳:VDD接5V正電源第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對

9、比度第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數據。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。第714腳:D0D7為8位雙向數據線第1516腳:空腳 1602顯示屏的時序圖如圖2.5。 圖2.5 1602時序圖1602液晶顯示屏與單片機的連線圖如圖2.6所示。圖2.6 1602與單片機連線圖第三章 程序設計及其調試3.1 程序設計 程序設計如

10、下:#include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit lcdrs=P20;sbit lcswr=P21;sbit lcden=P22;sbit s1=P10;sbit s2=P11;sbit s3=P12;sbit rd=P37;uchar count,s1num;char miao,shi,fen;uchar code table=" 2011-6-14 TUN"uchar code table1=" 00:00:00"void delay(

11、uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)lcdrs=0;lcswr=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()uchar num; lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);

12、write_com(0x01);write_com(0x80);for(num=0;num<15;num+)write_date(tablenum);delay(5);write_com(0x80+0x40);for(num=0;num<12;num+)write_date(table1num);delay(5);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=d

13、ate%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void keyscan()rd=0;if(s1=0)delay(5);if(s1=0)s1num+;while(!s1);if(s1num=1)TR0=0;write_com(0x80+0x40+10);write_com(0x0f);if(s1num=2)write_com(0x80+0x40+7);if(s1num=3)write_com(0x80+0x40+4);if(s1num=4)s1num=0;write_com(0x0c);TR0=1

14、;if(s1num!=0)if(s2=0)delay(5);if(s2=0)while(!s2);if(s1num=1)miao+;if(miao=60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);if(s1num=2)fen+;if(fen=60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+7);if(s1num=3)shi+;if(shi=24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);if(s3=0)delay(5);if(s3=0)whil

15、e(!s3);if(s1num=1)miao-;if(miao=-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);if(s1num=2)fen-;if(fen=-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);if(s1num=3)shi-;if(shi=-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4);void main()init();while(1)keyscan();void timer0() interrupt 1TH0=(65

16、536-50000)/256;TL0=(65536-50000)%256;count+;if(count=18)count=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;write_sfm(4,shi);write_sfm(7,fen);write_sfm(10,miao);3.2 實驗調試實驗過程中出現了很多的問題,經過反復的程序修改和調試,最終完成了本設計的要求,實現了電子時鐘功能。在電路焊接前,通過protues單片機仿真軟件多次調試和仿真,得出了正確的實驗結果。Protues仿真圖如圖3.1所示。圖3.1 protues仿真圖結論經過兩周的課程設計,不斷的測試與分析,最終完成了電子時鐘的設計與制作。在實驗的設計及仿真測試時,當沒有得出正確的實驗現象是,必須冷靜、沉著的思考問題的來源,切勿太過緊張。在電路的焊接過程,須仔細再仔細,案部分焊接導線,切勿亂了頭緒。這樣才能在電路制作過程中減少許多不必要的錯誤。本次設計組要是程序設計部分,在程序設計過程中,出現了很多的問題,經過和組員的多次討論與研究、,并參閱了一些電子資料,解決的很多難題。此課程設計主要考察了對單片機技術原理及程序設計基礎等知識。理論結合實踐,使得在平時學習的單片

溫馨提示

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

評論

0/150

提交評論