




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、16x64led點陣+ds1302實時時鐘-游政園/*頭文件*/# include stc12c5a60s2.h# include macroandconst.h# include /*接口定義*/sbit r=p22; /定義數(shù)據(jù)輸入端口p20sbit clk=p20; /時鐘信號sbit stb=p21;/595鎖存信號sbit keymenue=p10;sbit keyup=p11;sbit keydown=p12;sbit keyswitch=p13;sbit keyok=p14;/*調(diào)用外部變量與函數(shù)聲明*/extern uchar code table;extern uchar c
2、ode table1;extern uchar set;/按鍵選擇標(biāo)志位;extern char key_flag;/按鍵加減標(biāo)志位;extern uchar menue;/菜單選擇標(biāo)志位;extern uchar ok;/確認(rèn)標(biāo)志位;extern char miao,fen,shi,ri,yue,zhou,nian;/*時間日期數(shù)值標(biāo)志位;*/extern uchar l_tmpdate;/秒分時日月周年08-05-15 12:00:00extern uchar l_tmpdisplay;extern void write_ds1302( unsigned char address,unsi
3、gned char dat );extern void read_rtc(void);int num;void delay10ms()/11.0592mhzunsigned char i, j;i = 108;j = 145;dowhile (-j); while (-i);/*按鍵掃描*/void key() /*判斷選擇按鍵是否按下;如果按下了當(dāng)松開的時候讓背光打開;set+;*/ if(keyswitch=0) delay10ms();if(keyswitch=0) delay10ms();while(keyswitch=0);set+;if(set8)set=0;menue=0; /*
4、up和down按鍵的檢測;加減標(biāo)志位*/if(keyup=0)delay10ms();if(keyup=0) delay10ms();while(keyup=0); key_flag+;if(keydown=0)delay10ms();if(keydown=0) delay10ms();while(keydown=0);key_flag-; if(keymenue=0)delay10ms();if(keymenue=0) /菜單選擇標(biāo)志位; delay10ms();while(keymenue=0); menue+; if(menue3)menue=0; if(keyok=0) delay10
5、ms(); if(keyok=0) /確認(rèn)標(biāo)志位; delay10ms(); while(keyok=0); ok+; if(ok1) ok=0; menue=0; set=0; /*595寫數(shù)據(jù)部分*/void writebyte(uchar dat) uchar i;for (i=0;i1; /右移一位,取出該字節(jié)的最低位r=cy; /將該字節(jié)的最低位傳給rclk=0; /上升沿將數(shù)據(jù)移入595clk=1;void writebyteshuzi(uchar n)writebyte(tablenum+n*16);void writebytehanzi(uchar n)writebyte(ta
6、ble12*num+n*32);writebyte(table12*num+n*32+1);/*調(diào)時部分*/void set_date_time()if(set=2)menue=0;miao=l_tmpdisplay10*10+l_tmpdisplay11;miao=miao+key_flag;if(key_flag59)miao=0;miao=miao%10+(miao/10)*16;write_ds1302(0x8e,0x00);write_ds1302(0x80,miao);write_ds1302(0x8e,0x80);if(set=3) menue=0;fen=l_tmpdispla
7、y8*10+l_tmpdisplay9;fen=fen+key_flag;if(fen59)fen=0;if(key_flag0)&(fen23)shi=0;if(key_flag0)&(shi31)ri=1;if(key_flag0)&(ri7)zhou=1;if(key_flag0)&(zhou12)yue=1;if(key_flag0)&(yue79)nian=0;if(key_flag0)&(nian7)zhou=1;if(key_flag0)&(zhou1)zhou=7;zhou=zhou%10+(zhou/10)*16;write_ds1302(0x8e,0x00);write_d
8、s1302(0x8a,zhou);write_ds1302(0x8e,0x80);key_flag=0; /*日期、時間、星期數(shù)據(jù)的轉(zhuǎn)化*/void data_change()l_tmpdisplay0=l_tmpdate6/16;l_tmpdisplay1=l_tmpdate6%16;/年;l_tmpdisplay2=l_tmpdate4/16;l_tmpdisplay3=l_tmpdate4%16;/月;l_tmpdisplay4=l_tmpdate3/16;l_tmpdisplay5=l_tmpdate3%16;/日;l_tmpdisplay6=l_tmpdate2/16;l_tmpdi
9、splay7=l_tmpdate2%16;/小時;l_tmpdisplay8=l_tmpdate1/16;l_tmpdisplay9=l_tmpdate1%16;/分鐘;l_tmpdisplay10=l_tmpdate0/16;l_tmpdisplay11=l_tmpdate0%16;/秒鐘;l_tmpdisplay12=l_tmpdate5%16;/顯示當(dāng)前星期;/*星期顯示處理*/void week()if(l_tmpdisplay12=1)writebyteshuzi(13);writebytehanzi(7);writebytehanzi(8);writebytehanzi(0);wr
10、itebyteshuzi(13);if(l_tmpdisplay12=2)writebyteshuzi(13);writebytehanzi(7);writebytehanzi(8);writebytehanzi(1);writebyteshuzi(13);if(l_tmpdisplay12=3)writebyteshuzi(13);writebytehanzi(7);writebytehanzi(8);writebytehanzi(2);writebyteshuzi(13);if(l_tmpdisplay12=4)writebyteshuzi(13);writebytehanzi(7);wr
11、itebytehanzi(8);writebytehanzi(3);writebyteshuzi(13);if(l_tmpdisplay12=5)writebyteshuzi(13);writebytehanzi(7);writebytehanzi(8);writebytehanzi(4);writebyteshuzi(13);if(l_tmpdisplay12=6)writebyteshuzi(13);writebytehanzi(7);writebytehanzi(8);writebytehanzi(5);writebyteshuzi(13);if(l_tmpdisplay12=7)wri
12、tebyteshuzi(13);writebytehanzi(7);writebytehanzi(8);writebytehanzi(6);writebyteshuzi(13);void shijian() writebyteshuzi(l_tmpdisplay6); /時;writebyteshuzi(l_tmpdisplay7);writebyteshuzi(11);writebyteshuzi(l_tmpdisplay8);writebyteshuzi(l_tmpdisplay9); /分;writebyteshuzi(11);writebyteshuzi(l_tmpdisplay10)
13、;writebyteshuzi(l_tmpdisplay11);/秒;void riqi()writebyteshuzi(l_tmpdisplay0);writebyteshuzi(l_tmpdisplay1); /年;writebyteshuzi(10);writebyteshuzi(l_tmpdisplay2);writebyteshuzi(l_tmpdisplay3); /月;writebyteshuzi(10);writebyteshuzi(l_tmpdisplay4);writebyteshuzi(l_tmpdisplay5); /日;/*主函數(shù)*/void main()/set_r
14、tc();menue=0;write_ds1302(0x8e,0x00);write_ds1302(0x90,0x80);write_ds1302(0x8e,0x80);while(1)key();for(num=0;num16;num+)read_rtc();/讀取時鐘data_change();/時鐘數(shù)據(jù)處理set_date_time();if(menue=0)if(set=2)/調(diào)整標(biāo)志位;writebyteshuzi(l_tmpdisplay6); /時;writebyteshuzi(l_tmpdisplay7);writebyteshuzi(11);writebyteshuzi(l_
15、tmpdisplay8);writebyteshuzi(l_tmpdisplay9); /分;writebyteshuzi(11);writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay10*16); writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay11*16);else if(set=3)writebyteshuzi(l_tmpdisplay6); /時;writebyteshuzi(l_tmpdisplay7);writebyteshuzi(11);writebyte(tablenum+(12*1
16、6)&(tablenum+l_tmpdisplay8*16);writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay9*16);writebyteshuzi(11);writebyteshuzi(l_tmpdisplay10);writebyteshuzi(l_tmpdisplay11);/秒;else if(set=4)writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay6*16);writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay7*16);writeb
17、yteshuzi(11);writebyteshuzi(l_tmpdisplay8);writebyteshuzi(l_tmpdisplay9);/分;writebyteshuzi(11);writebyteshuzi(l_tmpdisplay10);writebyteshuzi(l_tmpdisplay11);/秒;else shijian(); else if(menue=1) if(set=5) /日期調(diào)整標(biāo)志位;writebyteshuzi(l_tmpdisplay0); /年;writebyteshuzi(l_tmpdisplay1);writebyteshuzi(10);write
18、byteshuzi(l_tmpdisplay2);writebyteshuzi(l_tmpdisplay3); /月;writebyteshuzi(10);writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay4*16); writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay5*16); /日;else if(set=6)writebyteshuzi(l_tmpdisplay0); /年;writebyteshuzi(l_tmpdisplay1);writebyteshuzi(10);writebyte(
19、tablenum+(12*16)&(tablenum+l_tmpdisplay2*16);writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay3*16);/月;writebyteshuzi(10);writebyteshuzi(l_tmpdisplay4);writebyteshuzi(l_tmpdisplay5);/日;else if(set=7)writebyte(tablenum+(12*16)&(tablenum+l_tmpdisplay0*16);writebyte(tablenum+(12*16)&(tablenum+l_tmpdisp
20、lay1*16);/年;writebyteshuzi(10);writebyteshuzi(l_tmpdisplay2);writebyteshuzi(l_tmpdisplay3);/月;writebyteshuzi(10);writebyteshuzi(l_tmpdisplay4);writebyteshuzi(l_tmpdisplay5);/日;else riqi();else if(menue=2) week();else menue=0;if (set11)&(l_tmpdisplay10*10+l_tmpdisplay1126)&(l_tmpdisplay10*10+l_tmpdis
21、play1141)&(l_tmpdisplay10*10+l_tmpdisplay1156)&(l_tmpdisplay10*10+l_tmpdisplay1159)week();else shijian();p0=num; stb=1; stb=0;# include stc12c5a60s2.h# include macroandconst.h# include uchar l_tmpdate=0,0,0,1,1,1,13;/秒分時日月周年08-05-15 12:00:00uchar l_tmpdisplay13;code uchar write_rtc_address7=0x80,0x8
22、2,0x84,0x86,0x88,0x8a,0x8c; /秒分時日月周年 最低位讀寫位code uchar read_rtc_address7=0x81,0x83,0x85,0x87,0x89,0x8b,0x8d; sbit sck = p15;/ds1302時鐘;sbit sda = p16;/ds1302數(shù)據(jù);sbit rst = p17;/ ds1302復(fù)位;uchar set=0;/按鍵選擇標(biāo)志位;char key_flag=0;/按鍵加減標(biāo)志位;uchar menue=0;/菜單選擇標(biāo)志位;uchar ok=0;/確認(rèn)標(biāo)志位;char miao,fen,shi,ri,yue,zhou
23、,nian;/*時間日期數(shù)值標(biāo)志位;*/*/* ds1302寫一個字節(jié) */*/void write_ds1302_byte(unsigned char temp) unsigned char i; for (i=0;i=1; /右移一位 sck=1; /*/* 寫入ds1302 */*/void write_ds1302( unsigned char address,unsigned char dat ) rst=0;_nop_(); sck=0;_nop_(); rst=1; _nop_(); /啟動 write_ds1302_byte(address);/發(fā)送地址 write_ds130
24、2_byte(dat);/發(fā)送數(shù)據(jù) rst=0; /恢復(fù)/*/* 讀出ds1302數(shù)據(jù) */*/unsigned char read_ds1302 ( uchar address ) unsigned char i,temp=0x00; rst=0;_nop_();_nop_(); sck=0;_nop_();_nop_(); rst=1;_nop_();_nop_(); write_ds1302_byte(address); for (i=0;i=1;/右移一位sck=1; _nop_(); _nop_(); sck=0; rst=0;_nop_(); /以下為ds1302復(fù)位的穩(wěn)定時間 _
25、nop_();rst=0;sck=0;_nop_();_nop_();_nop_();_nop_();sck=1;_nop_();_nop_();sda=0;_nop_();_nop_();sda=1;_nop_();_nop_();return (temp);/返回/*/* 讀時鐘數(shù)據(jù) */*/void read_rtc(void) /讀取 日歷 unsigned char i,*p; p=read_rtc_address; /地址傳遞 for(i=0;i7;i+) /分7次讀取 秒分時日月周年 l_tmpdatei=read_ds1302(*p); p+; /*/* 設(shè)定時鐘數(shù)據(jù) */*/
26、void set_rtc(void) /設(shè)定 日歷uchar i,*p,tmp;for(i=0;i7;i+) /bcd處理 tmp=l_tmpdatei/10;l_tmpdatei=l_tmpdatei%10;l_tmpdatei=l_tmpdatei+tmp*16; write_ds1302(0x8e,0x00); /關(guān)閉寫保護(hù); p=write_rtc_address;/傳地址 for(i=0;i7;i+)/7次寫入 秒分時日月周年 write_ds1302(*p,l_tmpdatei); p+; write_ds1302(0x8e,0x80); /打開寫保護(hù); /*字模部分*/# inc
27、lude stc12c5a60s2.h# include macroandconst.h/*8x16字模*/uchar code table=/*- 文字: 0 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*- 文字: 1 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x08,0x0e,0x08,0x08,0x08,0x08,0x08,0x08,0x08
28、,0x08,0x3e,0x00,0x00,/*- 文字: 2 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x3c,0x42,0x42,0x42,0x20,0x20,0x10,0x08,0x04,0x42,0x7e,0x00,0x00,/*- 文字: 3 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x3c,0x42,0x42,0x20,0x18,0x20,0x40,0x40,0x42,0x22,0x1c,0x00,0x00,/*- 文字: 4 -*/*- 宋體12; 此字體下對應(yīng)的
29、點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x20,0x30,0x28,0x24,0x24,0x22,0x22,0x7e,0x20,0x20,0x78,0x00,0x00,/*- 文字: 5 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x7e,0x02,0x02,0x02,0x1a,0x26,0x40,0x40,0x42,0x22,0x1c,0x00,0x00,/*- 文字: 6 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x38,0x24,0x02,0x02
30、,0x1a,0x26,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*- 文字: 7 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x7e,0x22,0x22,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,/*- 文字: 8 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x3c,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3c,0x00,0x00,/*-
31、文字: 9 -*/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x64,0x58,0x40,0x40,0x24,0x1c,0x00,0x00,/*- 文字: - -*/10;/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: : -*/11;/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0
32、x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,/*- 文字: _ -*/12/*- 宋體12; 此字體下對應(yīng)的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,/*空格*13*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ,
33、0*/14 a-83;0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x42,0x78,0x44,0x42,0x42,0xfc,0x00,0x00,/*a,0*/0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x1a,0x26,0x42,0x42,0x42,0x26,0x1a,0x00,0x00,/*b,1*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x02,0x02,0x02,0x44,0x38,0x00,0x00,/*c,2*/0x00,0x00,0x00,0x60,0x40,0x4
34、0,0x40,0x78,0x44,0x42,0x42,0x42,0x64,0xd8,0x00,0x00,/*d,3*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x42,0x7e,0x02,0x02,0x42,0x3c,0x00,0x00,/*e,4*/0x00,0x00,0x00,0xf0,0x88,0x08,0x08,0x7e,0x08,0x08,0x08,0x08,0x08,0x3e,0x00,0x00,/*f,5*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x22,0x22,0x1c,0x02,0x3c,0x
35、42,0x42,0x3c,/*g,6*/0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x3a,0x46,0x42,0x42,0x42,0x42,0xe7,0x00,0x00,/*h,7*/0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,0x0e,0x08,0x08,0x08,0x08,0x08,0x3e,0x00,0x00,/*i,8*/0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x1e,/*j,9*/0x00,0x00,0x00,0x03
36、,0x02,0x02,0x02,0x72,0x12,0x0a,0x16,0x12,0x22,0x77,0x00,0x00,/*k,10*/0x00,0x00,0x00,0x0e,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3e,0x00,0x00,/*l,11*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x92,0x92,0x92,0x92,0x92,0xb7,0x00,0x00,/*m,12*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x46,0x42,0x42,
37、0x42,0x42,0xe7,0x00,0x00,/*n,13*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x42,0x42,0x42,0x42,0x42,0x3c,0x00,0x00,/*o,14*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0x26,0x42,0x42,0x42,0x22,0x1e,0x02,0x07,/*p,15*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x44,0x42,0x42,0x42,0x44,0x78,0x40,0xe0,/*q,16*/0x0
38、0,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x4c,0x04,0x04,0x04,0x04,0x1f,0x00,0x00,/*r,17*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x42,0x02,0x3c,0x40,0x42,0x3e,0x00,0x00,/*s,18*/0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x3e,0x08,0x08,0x08,0x08,0x08,0x30,0x00,0x00,/*t,19*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x42,0x42,0x42,0x42,0x62,0xdc,0x00,0x00,/*u,20*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x42,0x24,0x24,0x14,0x08,0x08,0x00,0x00,/*v,21*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xeb,0x49,0x49,0x55,0x55,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓(xùn)教育項目管理辦法
- 杭州安保成本管理辦法
- 智慧城市工作管理辦法
- 券商資金運營管理辦法
- 網(wǎng)絡(luò)與新媒體的應(yīng)用與發(fā)展
- 機(jī)場服務(wù)檢查管理辦法
- 營銷傳播整合的理念與特點
- 綜合實踐項目研究報告
- 保姆保潔收納管理辦法
- 金屬礦山安全費用提取標(biāo)準(zhǔn)
- 大一新生的學(xué)業(yè)規(guī)劃
- 本草綱目下載
- 自助售貨機(jī)方案
- 機(jī)械基礎(chǔ)全冊教案第四版
- 從普通到卓越:教師成長的五堂必修課
- 燒烤制作安全管理制度范文
- 訂單生產(chǎn)流程圖
- 02-人音2019版高中音樂鑒賞教案
- 鋼網(wǎng)開口設(shè)計規(guī)范標(biāo)準(zhǔn)
- 人教版 數(shù)學(xué) 八年級上冊 全冊 同步練習(xí)
- 醫(yī)保自糾自查整改報告
評論
0/150
提交評論