基于51單片機(jī)的ds1302與LM016L液晶時(shí)鐘設(shè)計(jì)_第1頁(yè)
基于51單片機(jī)的ds1302與LM016L液晶時(shí)鐘設(shè)計(jì)_第2頁(yè)
基于51單片機(jī)的ds1302與LM016L液晶時(shí)鐘設(shè)計(jì)_第3頁(yè)
基于51單片機(jī)的ds1302與LM016L液晶時(shí)鐘設(shè)計(jì)_第4頁(yè)
基于51單片機(jī)的ds1302與LM016L液晶時(shí)鐘設(shè)計(jì)_第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、基于51單片機(jī)的時(shí)鐘設(shè)計(jì)一 基本功能利用AT89c51作為主控器與時(shí)鐘芯片DS1302組成一個(gè)時(shí)鐘系統(tǒng),并由LM016L液晶顯示。二 硬件設(shè)計(jì)圖1.總設(shè)計(jì)圖1. 單片機(jī)最小系統(tǒng)1.1選用AT89C51的引腳功能圖2. AT89C51XTAL1:單芯片系統(tǒng)時(shí)鐘的反向放大器輸入端。XTAL2:系統(tǒng)時(shí)鐘的反向放大器輸出端,一般在設(shè)計(jì)上只要在XTAL1和XTAL2上接上一只石英震蕩晶體系統(tǒng)就可以工作了,此外可以在兩引腳與地之間加入20PF的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪音干擾而死機(jī)。RESET:重置引腳,高電平動(dòng)作,當(dāng)要對(duì)晶體重置時(shí),只要對(duì)此引腳電平提升至高電平并保持兩個(gè)及其周期以上的時(shí)間便能完成系

2、統(tǒng)重置的各項(xiàng)動(dòng)作,使得內(nèi)部特殊功能寄存器內(nèi)容均被設(shè)成已知狀態(tài)。1.2復(fù)位電路如圖所示,當(dāng)按下按鍵時(shí),就能完成整個(gè)系統(tǒng)的復(fù)位,使得程序從新運(yùn)行。 圖3.復(fù)位電路1.3時(shí)鐘電路時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào),單片機(jī)本身就是一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下嚴(yán)格地按時(shí)序進(jìn)行工作。在AT89C51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳X1,輸出端為引腳X2,在芯片的外部跨接晶體振蕩器和微調(diào)電容,形成反饋電路,就構(gòu)成了一個(gè)穩(wěn)定的自激振蕩器。 此電路采用12MHz的石英晶體。 圖4.時(shí)鐘電路2. 時(shí)鐘芯片部分2.1 DS1302引腳說(shuō)明

3、圖.51)Vcc1:后備電源,VCC2:主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc10.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。2)X1、X2:振蕩源,外接32.768kHz晶振。3)RST:復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在

4、傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.0V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。4)I/O為串行數(shù)據(jù)輸入輸出端(雙向)。5)SCLK為時(shí)鐘輸入端。2.2 時(shí)鐘電路圖.63. LM016L液晶圖7.LM016L引腳圖LM016L與1602使用方法相同。引腳說(shuō)明:引腳符號(hào)功能說(shuō)明1VSS一般接地2VDD接電源(+5V)3V0液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。4RSRS為寄存器選擇,高電平1時(shí)選擇

5、數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。5R/WR/W為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)操作。6EE(或EN)端為使能(enable)端,下降沿使能。7DB0底4位三態(tài)、 雙向數(shù)據(jù)總線 0位(最低位)8DB1底4位三態(tài)、 雙向數(shù)據(jù)總線 1位9DB2底4位三態(tài)、 雙向數(shù)據(jù)總線 2位10DB3底4位三態(tài)、 雙向數(shù)據(jù)總線 3位11DB4高4位三態(tài)、 雙向數(shù)據(jù)總線 4位12DB5高4位三態(tài)、 雙向數(shù)據(jù)總線 5位13DB6高4位三態(tài)、 雙向數(shù)據(jù)總線 6位14DB7高4位三態(tài)、 雙向數(shù)據(jù)總線 7位(最高位)(也是busy flang)電路接口說(shuō)明:AT889C51的P0口作為數(shù)據(jù)的

6、輸出端,P3.5和P3.6,P3.7作為控制信號(hào)的輸出端。三 軟件設(shè)計(jì)3.1編程語(yǔ)言及編程軟件的選擇本設(shè)計(jì)選擇C語(yǔ)言作為編程語(yǔ)言。C語(yǔ)言雖然執(zhí)行效率沒(méi)有匯編語(yǔ)言高,但語(yǔ)言簡(jiǎn)潔,使用方便,靈活,運(yùn)算豐富,表達(dá)化類型多樣化,數(shù)據(jù)結(jié)構(gòu)類型豐富,具有結(jié)構(gòu)化的控制語(yǔ)句,程序設(shè)計(jì)自由度大,有很好的可重用性,可移植性等特點(diǎn)。 而匯編語(yǔ)言使用起來(lái)并沒(méi)有這么方便。本設(shè)計(jì)選用了Keil作為編程軟件,.Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。3.2時(shí)間的顯示ML016L和1602一樣,都是兩行十六列的液晶顯示屏。通過(guò)程序?qū)L016

7、L進(jìn)行初始化后,通過(guò)寫(xiě)指令和寫(xiě)數(shù)據(jù)的操作就可以再液晶屏上顯示出對(duì)應(yīng)的數(shù)據(jù),而時(shí)鐘數(shù)據(jù)則是從DS1302獲取。這樣可以顯示出時(shí)間。四 程序#include#include#define uchar unsigned char#define uint unsigned intsbit rs=P20; /1602命令數(shù)據(jù)選擇端sbit e=P21; /1602使能端sbit sck=P36; /DS1302sbit io=P37; /DS1302數(shù)據(jù)端sbit rst=P35; /DS1302 CE端 RST的功能uint temp; /定義整型的溫度數(shù)據(jù)float f_temp;uchar cod

8、e num=; / 定義浮點(diǎn)型的溫度數(shù)據(jù)uchar code nian=20 - - ;uchar code shi= : : ;uchar read_add=0x8d,0x8b,0x89,0x87,0x85,0x83,0x81; /DS1302讀數(shù)據(jù)地址端uchar write_add=0x8c,0x8a,0x88,0x86,0x84,0x82,0x80; /DS1302寫(xiě)數(shù)據(jù)地址端uchar time_data=11,1,12,5,18,00,00; /設(shè)置初始時(shí)間uchar disp14; /定義數(shù)組void delayms(uint z)/毫秒級(jí)延時(shí)函數(shù)uint i,j;for(i=z

9、;i0;i-)for(j=120;j0;j-);void delayus(uint time)/微秒級(jí)延時(shí)函數(shù)while(time-);/1602液晶void write_com(uchar com)/寫(xiě)指令函數(shù)rs=0;P0=com;delayms(5);e=1;delayms(5);e=0;void write_data(uchar date) /寫(xiě)數(shù)據(jù)函數(shù)rs=1;P0=date;delayms(5);e=1;delayms(5);e=0;void init() /液晶初始化函數(shù)uchar num;write_com(0x38); write_com(0x06);write_com(0x

10、0c);write_com(0x01);write_com(0x80+0x40);for(num=0;num8;num+)write_data(shinum);delayms(1); write_com(0x80);for(num=0;num10;num+)write_data(niannum);delayms(1);/DS1302void write_ds1302_byte(uchar dat)/寫(xiě)一個(gè)字節(jié)函數(shù)uchar i;for(i=0;i1;sck=1; void write_ds1302(uchar add,uchar dat)/寫(xiě)一個(gè)地址和數(shù)據(jù)函數(shù)rst=0;_nop_();sck

11、=0;_nop_();rst=1;_nop_();write_ds1302_byte(add);write_ds1302_byte(dat);rst=0;_nop_();io=1;sck=1;uchar read_ds1302(uchar add)/讀地址函數(shù)uchar i,value;rst=0;_nop_();sck=0;_nop_();rst=1;_nop_();write_ds1302_byte(add);for(i=0;i1;sck=0;if(io)value=value|0x80;sck=1;rst=0;_nop_();sck=0;_nop_();sck=1;io=0;return

12、 value; void read_rtc(void) /讀時(shí)鐘函數(shù)uchar i;for(i=0;i7;i+)time_datai=read_ds1302(read_addi); void z(void) /周write_com(0x80+0x40+9);switch(disp2)case 1:write_data(M);delayms(5);write_data(o);delayms(5);write_data(n);break;case 2:write_data(T);delayms(5);write_data(u);delayms(5);write_data(e);break;case

13、 3:write_data(W);delayms(5);write_data(e);delayms(5);write_data(n);break; case 4:write_data(T);delayms(5);write_data(h);delayms(5);write_data(u);break;case 5:write_data(F);delayms(5);write_data(r);delayms(5);write_data(i);break;case 6:write_data(S);delayms(5);write_data(a);delayms(5);write_data(t);b

14、reak;case 7:write_data(S);delayms(5);write_data(u);delayms(5);write_data(n);break;void time_change(void)/時(shí)鐘處理函數(shù)disp0=time_data0%16;/年 disp1=time_data0/16; disp2=time_data1%16;/周 disp3=time_data1/16; disp4=time_data2%16;/月 disp5=time_data2/16; disp6=time_data3%16;/日 disp7=time_data3/16; disp8=time_da

15、ta4%16;/時(shí) disp9=time_data4/16; disp10=time_data5%16;/分 disp11=time_data5/16; disp12=time_data6%16;/秒 disp13=time_data6/16; void display()/時(shí)鐘顯示函數(shù)write_com(0x80+2);/年 write_data(0x30+disp1);write_data(0x30+disp0);z();/周write_com(0x80+5);/月 write_data(0x30+disp5);write_data(0x30+disp4);write_com(0x80+8);/日 write_data(0x30+disp7);write_data(0x30+disp6);write_com(0x80+0x40);/時(shí) write_data(0x30+disp9);write_data(0x30+disp8);write_com(0x80+0x40+3);/分 write_data(0x30+disp11);wri

溫馨提示

  • 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)論