




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、16x64led點陣+ds1302實時時鐘-游政園/*頭文件*/# include stc12c5a60s2.h# include macroandconst.h# include /*接口定義*/sbit r=p22; /定義數據輸入端口p20sbit clk=p20; /時鐘信號sbit stb=p21;/595鎖存信號sbit keymenue=p10;sbit keyup=p11;sbit keydown=p12;sbit keyswitch=p13;sbit keyok=p14;/*調用外部變量與函數聲明*/extern uchar code table;extern uchar c
2、ode table1;extern uchar set;/按鍵選擇標志位;extern char key_flag;/按鍵加減標志位;extern uchar menue;/菜單選擇標志位;extern uchar ok;/確認標志位;extern char miao,fen,shi,ri,yue,zhou,nian;/*時間日期數值標志位;*/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() /*判斷選擇按鍵是否按下;如果按下了當松開的時候讓背光打開;set+;*/ if(keyswitch=0) delay10ms();if(keyswitch=0) delay10ms();while(keyswitch=0);set+;if(set8)set=0;menue=0; /*
4、up和down按鍵的檢測;加減標志位*/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) /菜單選擇標志位; delay10ms();while(keymenue=0); menue+; if(menue3)menue=0; if(keyok=0) delay10
5、ms(); if(keyok=0) /確認標志位; delay10ms(); while(keyok=0); ok+; if(ok1) ok=0; menue=0; set=0; /*595寫數據部分*/void writebyte(uchar dat) uchar i;for (i=0;i1; /右移一位,取出該字節的最低位r=cy; /將該字節的最低位傳給rclk=0; /上升沿將數據移入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);/*調時部分*/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; /*日期、時間、星期數據的轉化*/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;/顯示當前星期;/*星期顯示處理*/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); /日;/*主函數*/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();/時鐘數據處理set_date_time();if(menue=0)if(set=2)/調整標志位;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) /日期調整標志位;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數據;sbit rst = p17;/ ds1302復位;uchar set=0;/按鍵選擇標志位;char key_flag=0;/按鍵加減標志位;uchar menue=0;/菜單選擇標志位;uchar ok=0;/確認標志位;char miao,fen,shi,ri,yue,zhou
23、,nian;/*時間日期數值標志位;*/*/* ds1302寫一個字節 */*/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);/發送地址 write_ds130
24、2_byte(dat);/發送數據 rst=0; /恢復/*/* 讀出ds1302數據 */*/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復位的穩定時間 _
25、nop_();rst=0;sck=0;_nop_();_nop_();_nop_();_nop_();sck=1;_nop_();_nop_();sda=0;_nop_();_nop_();sda=1;_nop_();_nop_();return (temp);/返回/*/* 讀時鐘數據 */*/void read_rtc(void) /讀取 日歷 unsigned char i,*p; p=read_rtc_address; /地址傳遞 for(i=0;i7;i+) /分7次讀取 秒分時日月周年 l_tmpdatei=read_ds1302(*p); p+; /*/* 設定時鐘數據 */*/
26、void set_rtc(void) /設定 日歷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); /關閉寫保護; p=write_rtc_address;/傳地址 for(i=0;i7;i+)/7次寫入 秒分時日月周年 write_ds1302(*p,l_tmpdatei); p+; write_ds1302(0x8e,0x80); /打開寫保護; /*字模部分*/# inc
27、lude stc12c5a60s2.h# include macroandconst.h/*8x16字模*/uchar code table=/*- 文字: 0 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*- 文字: 1 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x08,0x0e,0x08,0x08,0x08,0x08,0x08,0x08,0x08
28、,0x08,0x3e,0x00,0x00,/*- 文字: 2 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x3c,0x42,0x42,0x42,0x20,0x20,0x10,0x08,0x04,0x42,0x7e,0x00,0x00,/*- 文字: 3 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x3c,0x42,0x42,0x20,0x18,0x20,0x40,0x40,0x42,0x22,0x1c,0x00,0x00,/*- 文字: 4 -*/*- 宋體12; 此字體下對應的
29、點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x20,0x30,0x28,0x24,0x24,0x22,0x22,0x7e,0x20,0x20,0x78,0x00,0x00,/*- 文字: 5 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x7e,0x02,0x02,0x02,0x1a,0x26,0x40,0x40,0x42,0x22,0x1c,0x00,0x00,/*- 文字: 6 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x38,0x24,0x02,0x02
30、,0x1a,0x26,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*- 文字: 7 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x7e,0x22,0x22,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,/*- 文字: 8 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x3c,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3c,0x00,0x00,/*-
31、文字: 9 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x64,0x58,0x40,0x40,0x24,0x1c,0x00,0x00,/*- 文字: - -*/10;/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: : -*/11;/*- 宋體12; 此字體下對應的點陣為:寬x高=8x16 -*/0
32、x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,/*- 文字: _ -*/12/*- 宋體12; 此字體下對應的點陣為:寬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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑工程拆除與補償合同
- 2025個人健身教練服務合同范本
- 電瓶轉讓合同協議書范本
- 現貨白糖購銷合同協議
- 班組帶考勤合同協議
- 電平車出租合同協議
- 電氣室內安裝合同協議
- 電單車配件采購合同協議
- 現代汽車購車合同協議
- 電商跟快遞合作合同協議
- 血液科護士對輸血反應的識別與處理
- 《工程材料基礎》課件
- 渠道施工課件
- 預防艾滋病宣傳教育主題班會
- Part1-2 Unit1 Travel 教案-【中職專用】高一英語精研課堂(高教版2021·基礎模塊2)
- 城市普通中小學校校舍建設標準
- 數字化時代的金融監管
- 《瘋狂動物城》全本臺詞中英文對照
- 金融風險傳染性研究
- 小學科學實驗目錄1-6年級新教科版
- 成人體外心肺復蘇專家共識(2023版)解讀
評論
0/150
提交評論