51單片機實現(xiàn)電子時鐘功能_1602液晶顯示_第1頁
51單片機實現(xiàn)電子時鐘功能_1602液晶顯示_第2頁
51單片機實現(xiàn)電子時鐘功能_1602液晶顯示_第3頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、時進行實現(xiàn)。RAM地址映射:LCD 16字*2行00 01 02 03 04 05 06 07 08 08 09 0A 0B 0C 0D 0E 0F2740 41 424F 5067指令說明:1.初始化設(shè)置1.顯示模式設(shè)置 指令碼:00111000V0X38)功能:設(shè)置16*2顯示,5*7點陣,8位數(shù)據(jù)接口必須開顯示2.顯示開、關(guān)及光標(biāo)設(shè)置指令碼:00001DCB功能:D=1開顯示;D=0關(guān)顯示;C=1顯示光標(biāo);B=1光標(biāo)閃爍;B=0光標(biāo)不顯示000001NS:功能:N=1當(dāng)讀或?qū)懸粋€字符后地址指 針加1,且光標(biāo)加1; N=0相應(yīng)的減1; S=1當(dāng)寫一個字符,整屏顯 示左移n=1)或右移N=0

3、,以得到光標(biāo)不移動而屏幕移動的效 果。S=0當(dāng)寫一個字符,正屏顯示不移動。數(shù)據(jù)控制:控制器內(nèi)部設(shè)有一個數(shù)據(jù)地址指針,用戶可通過它們來訪問內(nèi)部的全部80字節(jié)RAM421數(shù)據(jù)指針設(shè)置:指令碼:80H+地址碼V0-27H,第二行開始:40H-67H) 4.22 讀數(shù)據(jù),寫數(shù)據(jù)其它設(shè)置:01H:顯示清屏:1.數(shù)據(jù)指令清零 2 所有顯示清零 02H:顯示回車:1.數(shù)據(jù)清零如何進行連接 :實際操作中,液晶接到,第一管腳是D,第二管腳是 VCC 15和16是背光,D0-D7是數(shù)據(jù)口,接到單片 機的P0 口,P0 口接了兩個鎖存器,液晶,D/A,具有高阻狀態(tài)的都 可以隨便接,沒有影響,第六管腳是LCDEN相當(dāng)

4、于E,使能信號,它接P3A4,R/W接地,表示低電平,因為我們只進行寫操作,RS接2實驗板上的P3八5。只需這兩端口便足以控制液晶,2和3是偏 壓信號,一端接地,接口信號說明:編號:1 VSS號表示)電源地 引腳說明)2VDD電源正極3VL液晶顯示偏壓信號 4RS數(shù)據(jù)/命令選擇端vH/L) 5R/W 讀寫選擇端 H/L) 6E 使能信號 7D0Data 1/0 8D1Data 1/0 9 D2Data 1/010 D3Data 1/011D4Data 1/012D5Data1/0 13D6Data1/0 14D7Data 1/0 15BLK背光源正極16 BLK背光源負極實際操作:先寫光標(biāo)程序

5、;寫兩個子程序,一個寫數(shù)據(jù),一個寫指令:先進性 兩個宏定義,再位申明LCDEN與RS為了電量充足。初始化時關(guān)斷 數(shù)碼管,定義數(shù)碼管的兩個鎖存端,dula與wela,P2A6與P2八7,先寫主函數(shù) <調(diào)用初始化函數(shù),在調(diào)用數(shù)據(jù)子函數(shù) <'1'),從右向 左滾動進來CodeRSR/WDB7DB6DB5DB4DB3DB2DB1DB0000001S/CR/LxxS/RR/L描述00光標(biāo)左移01光標(biāo)右移10顯示左移,光標(biāo)跟著 左移11顯示右移,光標(biāo)跟著 右移),再寫初始化函數(shù)(先關(guān)斷數(shù)碼管,在進行顯示模式設(shè)置,顯示開、關(guān)及光標(biāo)設(shè)置,設(shè)計數(shù)據(jù)>,接著寫命令子函數(shù) writ

6、er -com<始操作時序,寫指令,P0 口送的指令碼,接著需要延時一段 時間讓E變成高電平,在持續(xù)一段時間,E再變低),它由所用的 指令直接調(diào)用即可。再寫一個寫數(shù)據(jù)的子 函數(shù)writer_data<lcdrs=1 ),需用延時子函數(shù)。Uchar code table= “”注意:為了使得黑托不出現(xiàn),應(yīng)該屏幕全部清零writer_com(0x01。? xdata :外部地址空間1.1設(shè)計要求利用單片機最小系統(tǒng)設(shè)計一個電子時鐘,顯示方式為*:*:*,并且可以任意修改時間。1.2系統(tǒng)組成原理框圖如圖1.1復(fù)位電路圖1.1系統(tǒng)原理框圖第二章系統(tǒng)設(shè)計方案2.1系統(tǒng)設(shè)計方案電路原理圖如圖2.

7、1所示圖2.1電路原理圖2.2電路模塊組成及其工作原理2.2.1 時鐘電路系統(tǒng)時鐘源由內(nèi)部時鐘方式產(chǎn)生,時鐘電路由12MH晶振和兩個30PF瓷片電容組成,構(gòu)成自激振蕩,形成振蕩源提供給單片機。電容可在5PF到30PF之間選擇,電容的大小對振蕩頻率有微小影響,可起頻率微調(diào)作用。時鐘電路如圖2.2所示復(fù)位電路單片機復(fù)位有上電復(fù)位和手動復(fù)位兩種方式,上電復(fù)位是接通電源后利用RC充電來實現(xiàn)復(fù)位。手動復(fù)位是通過人為干預(yù),強制系統(tǒng)復(fù)位。復(fù)位電路如圖2.3所示,可以實現(xiàn)上電復(fù)位和手動復(fù)位功能223按鍵電路在單片機的P1.0、P1.1、P1.2三個I/O 口接三個簡易按鍵,通過不斷檢測 按鍵狀態(tài),識別按鍵的按

8、下順序和次數(shù)即可實現(xiàn)時間的任意修改。按鍵電路如圖2.4所示。224 1602 液晶顯示模塊電路本設(shè)計是通過對1602液晶顯示屏的控制來實現(xiàn)時間的顯示。1602液晶顯示模塊的驅(qū)動如下所述:16RT1602CU2U1二5w0B7|biiT£?圖2.4 1602液晶屏實物圖1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為地電源第2腳:VDD接5V正電源第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選 擇指令寄存器。第5腳:R

9、W為讀寫信號線,高電平時進行讀操作,低電平時進行寫 操作。當(dāng)RS和 RW共同為低電平時可以寫入指令或者顯示地址,當(dāng) RS為低電平RW為高電平時可以讀忙信號,當(dāng) RS為高電平RW為低 電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模 塊執(zhí)行命令。第714腳:D0- D7為8位雙向數(shù)據(jù)線第1516腳:空腳1602顯示屏的時序圖如圖2.5RSIntent I SrgnaiDB7飛 ""* /叭 /卅八 =器,門(口心 廠iiIIAAAA1!1Iliwbiojoni Bm旳 FtjCheck Busy Fiag Dhett Busv Fbg Ohecf

10、clitsIrcUoH圖2.5 1602時序圖1602液晶顯示屏與單片機的連線圖如圖2.6所示2345e7s13 cH2 Q)51431円9n nui* cPIQPQOPllei i *iPQ1P13rvJP03PMPO4PI 5P05Pl6Pv6PITP07INTIP20INTOP21Y22ATS9<T1F23TOF24P25EA.VPP26P27XIX2RESETR.XDTTORDALEEhWKPSENH>2IfiPtNLLD 55 V匚CJ LJ LJ tf IJ t1 Lf qf|j RI.C D-fa J A<vc<617S1 31911035一II1 341

11、233UH41421L1$ 62224(>圖2.6 1602與單片機連線圖第三章程序設(shè)計及其調(diào)試3.1程序設(shè)計程序設(shè)計如下:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit lcdrs=P2A0。sbit lcswr=P2A1 。sbit lcden=P2A2 。sbit s1=P1A0 。sbit s2=P1A1 。sbit s3=P1A2 。sbit rd=P3A7 。uchar count,s1num 。char miao,shi,fen 。uchar code table

12、=" 2018-6-14 TUN"uchar code table1=" 00:00:00"void delay(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=dat

13、e。delay(5> 。lcden=1 。delay(5> 。 lcden=0 。void init(>uchar num 。lcden=0 。write_com(0x38> 。write_com(0x0c> 。write_com(0x06> 。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+

14、>write_date(table1num> delay(5> 。TMOD=0x0。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=date%10。 write_com(0x80+0x40+add> 。 write_date(0x30+shi> 。 write_date(0x30+ge> 。void keyscan(>rd=

15、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。if(s1num!=0>if(s2=0> delay(5>

16、; 。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> 。

17、if(s3=0>delay(5> 。if(s3=0>while(!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&g

18、t; 。 write_com(0x80+0x40+4> 。void main(>init(> 。while(1>keyscan(> 。void timer0(> interrupt 1TH0=(65536-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,fe n> 。 write_sfm(10,miao> 。3.2實驗調(diào)試實驗過程中出現(xiàn)了很多的問題,經(jīng)過反復(fù)的程序修改和調(diào)試,最終完成了本 設(shè)計的要求,實現(xiàn)了電子時鐘功能。在電路焊接前,通過protues單片機仿真軟件多次調(diào)試和仿真,得出了正確的實驗結(jié)果。Protues仿真圖如圖3.1所示。工1:T.M L12T:=tl :W嗓.6W1 * ©陀圧鵝PZ.VAB P2EAn F23W11 P2_4.C 陀環(huán)口P2jaAU P貂血音P0137FQZ3EPLUPQ*卩鳥羽PO5P 32PD771'n

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論