您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > ds1302时钟程序
#includereg52.h#defineuintunsignedint#defineucharunsignedchar#includeintrins.huchartable1[]=2013年02月07日4;uchartable2[]=23时59分44秒;uchartime_data[7]={13,4,2,7,23,59,44};//年周月日时分秒ucharwrite_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};//写地址ucharread_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};//读地址uchardisp[14];uchartim=0;sbitclk=P1^0;sbitio=P1^1;sbitrst=P1^2;sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_PSB=P2^3;sbitLCD_EN=P2^2;sbitLCD_RST=P2^4;voidwrite_ds1302_byte(uchardat);//写一个字节voidwrite_ds1302(ucharadd,uchardat);//写地址写数据ucharread_ds1302(ucharadd);//写地址读数据voidset_rtc(void);//时间初始化voidread_rtc(void);//读时间voidtime_pros(void);//时间处理voiddelay(uintx);voidinit(void);//液晶初始化voidwrite_com(ucharcom);//写指令voidwrite_date(uchardate);//写数据voidlcd_pos(ucharX,ucharY);//voidwrite_sfm(ucharadd,uchardate);//时分秒的写voidkeyscan();sbitkey1=P3^0;//移sbitkey2=P3^1;//加sbitkey3=P3^3;//减uchars1num;charshi,fen,miao,zhou,yue,ri,nian;voidmain(){uchari;//set_rtc();//时间初始化delay(30);init();//液晶初始化//LCD(0,'9');//在第一个位置显示9//LCD(1,'9');//LCD(2,'9');lcd_pos(2,0);for(i=0;i16;i++){write_date(table1[i]);delay(20);}lcd_pos(3,0);for(i=0;i16;i++){write_date(table2[i]);delay(20);}while(1){read_rtc();//读数据keyscan();//键盘扫描time_pros();//处理数据write_com(0x99);//秒地址write_date(0x30+disp[4]);//秒个位write_date(0x30+disp[5]);//秒十位write_com(0x9b);write_date(0x30+disp[2]);write_date(0x30+disp[3]);write_com(0x9d);write_date(0x30+disp[0]);write_date(0x30+disp[1]);write_com(0x8f);write_date(0x30+disp[10]);write_date(0x30+disp[11]);write_com(0x8d);write_date(0x30+disp[6]);write_date(0x30+disp[7]);write_com(0x8b);write_date(0x30+disp[8]);write_date(0x30+disp[9]);write_com(0x89);write_date(0x30+disp[12]);write_date(0x30+disp[13]);}}voidkeyscan(){uchara,b;if(key1==0){delay(5);if(key1==0){s1num++;while(key1==0);if(s1num==1){//write_com(0c);//write_com(0x0f);//write_com(0x98+5);//写入光标位置//write_com(0x0f);}if(s1num==2){write_com(0x98+3);}if(s1num==3){write_com(0x98+1);}if(s1num==4){write_com(0x88+7);}if(s1num==5){write_com(0x88+5);}if(s1num==6){write_com(0x88+3);}if(s1num==7){write_com(0x88+1);}if(s1num=8){s1num=0;write_com(0x0c);write_ds1302(0x80,0x00);//时钟正常工作}}}if(s1num!=0){if(key2==0){delay(20);if(key2==0){while(!key2);if(s1num==1){delay(20);if(s1num==1){time_data[6]=read_ds1302(0x81);//读取当前时间(bcd码)a=time_data[6]/16;b=time_data[6]%16;miao=a*10+b;miao++;if(miao==60)miao=0;a=miao/10;b=miao%10;time_data[6]=a*16+b;write_ds1302(0x8e,0x00);//去除写保护write_ds1302(0x80,time_data[6]);write_ds1302(0x8e,0x80);//加上写保护time_data[6]=read_ds1302(0x81);}}if(s1num==2){delay(20);if(s1num==2){time_data[5]=read_ds1302(0x83);//读取当前时间(bcd码)a=time_data[5]/16;b=time_data[5]%16;fen=a*10+b;fen++;if(fen==60)fen=0;a=fen/10;b=fen%10;time_data[5]=a*16+b;write_ds1302(0x8e,0x00);//去除写保护write_ds1302(0x82,time_data[5]);write_ds1302(0x8e,0x80);//加上写保护time_data[5]=read_ds1302(0x81);}}if(s1num==3){delay(20);if(s1num==3){time_data[4]=read_ds1302(0x85);//读取当前时间(bcd码)a=time_data[4]/16;b=time_data[4]%16;shi=a*10+b;shi++;if(shi==24)shi=0;a=shi/10;b=shi%10;time_data[4]=a*16+b;write_ds1302(0x8e,0x00);//去除写保护write_ds1302(0x84,time_data[4]);write_ds1302(0x8e,0x80);//加上写保护time_data[4]=read_ds1302(0x81);}}if(s1num==4){delay(20);if(s1num==4){time_data[3]=read_ds1302(0x8b);//读取当前时间(bcd码)a=time_data[3]/16;b=time_data[3]%16;zhou=a*10+b;zhou++;if(zhou==8)zhou=1;a=zhou/10;b=zhou%10;time_data[3]=a*16+b;write_ds1302(0x8e,0x00);//去除写保护write_ds1302(0x8a,time_data[3]);write_ds1302(0x8e,0x80);//加上写保护time_data[3]=read_ds1302(0x81);}}if(s1num==5){delay(20);if(s1num==5){time_data[2]=read_ds1302(0x87);//读取当前时间(bcd码)a=time_data[2]/16;b=time_data[2]%16;ri=a*10+b;ri++;if(ri==32)ri=1;a=ri/10;b=ri%10;time_data[2]=a*16+b;write_ds1302(0x8e,0x00);//去除写保护write_ds1302(0x86,time_data[2]);write_ds1302(0x8e,0x80);//加上写保护time_data[2]=read_ds1302(0x81);}}if(s1num==6){delay(20);if(s1num==6){time_data[1]=read_ds1302(0x89);//读取当前时间(bcd码)a=time_data[1]/16;b=time_data[1]%16;yue=a*10+b;yue++;if(yue==13)yue=1;a=yue/10;b=yue%10;time_data[1]=a*16+b;write_ds1302(0x8e,0x00);//去除写保护write_ds1302(0x88,time_data[1]);write_ds1302(0x8e,0x80);//加上写保护time_data[1]=read_ds1302(0x81);}}if(s1num==7){delay(20);if(s1num==7){time_data[0]=read_ds1302(0x8d);//读取当前时间(bcd码)a=time_data[0]/16;b=time_data[0]%16;nian=a*10+b;nian++;if(nian==99)nian=0;a=nian/10;b=nian%10;time_data[0]=a*16+b;write_ds1302(0x8e,0x00);//去除写保护write_ds1302(0x8c,time_data[0]);write_ds1302(0x8e,0x80);//加上写保护time_data[0]=read_ds1302(0x81);}}}}if(key3==0){delay(5);if(key3==0){while(!key3);if(s1num==1){delay(20);if(s1num==1){time_data[6]=read_ds1302(0x81);//读取当前时间(bcd码)a=time_data[6]/16;b=time_data[6]%16;miao=a*10+b;miao--;if(miao==-1)miao=59;a=miao/10;b=miao%10;time_data[6]=a*16+b;write_ds1302(0x8e,0x00);//去除写保护write_ds1302(0x80,time_data[6]);write_ds1302(0x8e,0x80);//加上写保护time_data[6]=read_ds1302(0x81);}}if(s1num==2){delay(20);if(s1num==2){time_data[5]=read_ds1302(0x83);//读取当前时间(bcd码)a=time_data[5]/16;b=time_data[5]%16;fen=a*10+b;fen--;if(fen==-1)fen=59;a=fen/10;b=fen%10;time_data[5]=a*16+b;write_ds1302(0x8e,0x00
本文标题:ds1302时钟程序
链接地址:https://www.777doc.com/doc-3359670 .html