電子時鐘+萬年歷(LCD1602)12頁_第1頁
電子時鐘+萬年歷(LCD1602)12頁_第2頁
電子時鐘+萬年歷(LCD1602)12頁_第3頁
電子時鐘+萬年歷(LCD1602)12頁_第4頁
電子時鐘+萬年歷(LCD1602)12頁_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于AT89S52的lcd1602顯示電子時鐘+萬年歷/*名稱:基于AT89S52的lcd1602顯示電子時鐘+萬年歷編寫:李松澤時間:2013.07.30*/#include#define uchar unsigned char#define uint unsigned intuchar code table= 2013-07-30 WED ;uchar code table1= 21:14:55;uchar code table2= 579259 ;uchar code table3=Made by Lisongze;uchar code table4=MONTUEWEDTHUFRISAT

2、SUN;uchar count,s1num;char miao,fen,shi,ri,yue;uint nian;sbit lcd_rs = P05;sbit lcd_rw = P06;sbit lcd_en = P07;sbit s1=P37;sbit s2=P36;sbit s3=P35;sbit g=P30;void delay(uint z)/延時子函數(shù)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/寫命令函數(shù)lcd_rs = 0;P2= com;delay(5);lcd_en=1;delay(5);l

3、cd_en=0;void write_date(uchar date)/寫數(shù)據(jù)函數(shù)lcd_rs = 1;P2= date;delay(5);lcd_en=1;delay(5);lcd_en=0;void init()/初始化函數(shù)int num;shi=21;fen=14;miao=55;ri=30;yue=7;nian=2013;lcd_en=0;lcd_rw=0;write_com(0x38);/顯示設(shè)置模式write_com(0x0c);/00001100開顯示,不顯示光標(biāo),光標(biāo)不閃爍 write_com(0x06);/00000110地址指針加一,整屏不移動write_com(0x01)

4、;/清屏write_com(0x80);for(num=0;num16;num+)/顯示數(shù)字579259write_date(table2num);delay(300);write_com(0x80+0x40);for(num=0;num16;num+)/顯示made by lisongzewrite_date(table3num);delay(300);delay(5000);write_com(0x01);write_com(0x80);for(num=0;num16;num+)/顯示日期write_date(tablenum);delay(5);write_com(0x80+0x40);

5、for(num=0;num12;num+)/顯示時間write_date(table1num);delay(5);TMOD=0x01;/啟動定時器中斷TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;/打開定時器void write_sfm(uchar add,uchar date)/寫時分秒函數(shù)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void write_ny

6、r(uint add,uint date)/寫年月日函數(shù),此處若用uchar范圍只有0-255 /不夠,改用uint(0-65535)uint qian,bai,shi,ge;qian=date/1000;bai=date%1000/100;shi=date%100/10;ge=date%10;write_com(0x80+add);write_date(0x30+qian);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);void write_yr(uchar add,uchar date)/寫月日函數(shù)uchar s

7、hi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);void keyscan()/按鍵掃描函數(shù)int m,n;g=0;/將矩陣鍵盤當(dāng)做獨立鍵盤使用if(s1=0)delay(5);if(s1=0)/按鍵1光標(biāo)移位掃描s1num+;if(s1num=1)while(!s1);/等待按鍵松手write_com(0x80+0x40+10);TR0=0;/關(guān)閉定時器write_com(0x0f);if(s1num=2)while(!s1);write_com(0x80+0x4

8、0+7);if(s1num=3)while(!s1);write_com(0x80+0x40+4);if(s1num=4)while(!s1);write_com(0x80+3);if(s1num=5)while(!s1);write_com(0x80+6);if(s1num=6)while(!s1);write_com(0x80+9);if(s1num=7)while(!s1)write_com(0x80+13);if(s1num=8)while(!s1);s1num=0;write_com(0x0c);TR0=1;/開定時器if(s1num!=0)if(s2=0)/按鍵2加功能delay(

9、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(s1num=4)/年加nian+;if(nian=10000)nian=2000;wri

10、te_nyr(1,nian);write_com(0x80+3);if(s1num=5)/月份加yue+;if(yue=13)yue=1;write_yr(6,yue);write_com(0x80+6);if(s1num=6)/日期加ri+;if(ri=29&yue=2&!(nian%4=0&nian%100!=0)|nian%400=0)ri=1;/平年if(ri=30&yue=2&(nian%4=0&nian%100!=0|nian%400=0)ri=1;/閏年if(ri=31&(yue=4|yue=6|yue=9|yue=11)ri=1;if(ri=32)ri=1;write_yr(9

11、,ri);write_com(0x80+9);if(s1num=7)/星期加m=m+3;if(m=21)m=0;write_com(0x80+12);for(n=m;nm+3;n+)write_date(table4n);delay(5);write_com(0x80+13);if(s3=0)/按鍵3減功能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;

12、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);if(s1num=4)/年減nian-;if(nian=1999)nian=2000;write_nyr(1,nian);write_com(0x80+3);if(s1num=5)/月份減yue-;if(yue=0)yue=12;write_yr(6,yue);write_com(0x80+6);if(s1num=6)/日減ri-;if(ri=0)if(yue=2&

13、!(nian%4=0&nian%100!=0)|nian%400=0)ri=28;/平年if(yue=2&(nian%4=0&nian%100!=0|nian%400=0)ri=29;/閏年if(yue=4|yue=6|yue=9|yue=11)ri=30;if(yue=1|yue=3|yue=5|yue=7|yue=9|yue=11)ri=31;write_yr(9,ri);write_com(0x80+9);if(s1num=7)/星期減m=m-3;if(m=0)m=21;write_com(0x80+12);for(n=m;n-3m;n+)write_date(table4n-3);de

14、lay(5);write_com(0x80+13);void main()int i,j;init();while(1)keyscan();if(count=18)count=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;ri+;j=j+3;if(j=21)j=0;write_com(0x80+12);for(i=j;ij+3;i+)write_date(table4i);delay(5);if(ri=29&yue=2&!(nian%4=0&nian%100!=0)|nian%400=0)ri=1;yue

15、+;/平年if(ri=30&yue=2&(nian%4=0&nian%100!=0|nian%400=0)ri=1;yue+;/閏年if(ri=31&(yue=4|yue=6|yue=9|yue=11)ri=1;yue+;if(ri=32)ri=1;yue+;if(yue=13)yue=1;nian+;if(nian=10000)nian=2000;write_nyr(1,nian);write_yr(6,yue);write_yr(9,ri);write_sfm(4,shi);write_sfm(7,fen);write_sfm(10,miao); void timer() interrupt 1TH0=(6

溫馨提示

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

評論

0/150

提交評論