1、 while(i-) for(j=76;j1;j-); for(k=29;kk-); void delaynus(unsigned char n) /延时若干微秒 unsigned char i; for(i=0;i0;i-) _nop_();void baojing(unsigned char n) unsigned char x,i; while(n-)for(i=0;5;i+) for(x=0;x=1; void WriteSet1302(unsigned char cmd,unsigned char date) /根据相应的命令输入相应的数据 REST=0; REST=1; Write
2、1302(cmd); delaynus(5); Write1302(date);SCLK=1; REST=0; unsigned char Read1302(void) /读取1302数据 unsigned char i,date; if(DATE=1) date|=0x80; return date;unsigned char ReadSet1302(unsigned char cmd)/根据命令读取1302相应的值 unsigned char date; REST=0; REST=1; Write1302(cmd); date=Read1302(); SCLK=1;void IntDS13
3、02(void) /DS1302初始化 unsigned char flag; flag= ReadSet1302(0x81); if(flag&0x80) /判断时钟芯片是否关闭 WriteSet1302(0x8E,0x00); /根据写状态寄存器命令字,写入不保护指令 WriteSet1302(0x80,(0/10)4|(0%10); /根据写秒寄存器命令字,写入秒的初始值 WriteSet1302(0x82,(0/10) /根据写分寄存器命令字,写入分的初始值 WriteSet1302(0x84,(0/10) /根据写小时寄存器命令字,写入小时的初始值 WriteSet1302(0x86
4、,(0/10) /根据写日寄存器命令字,写入日的初始值 WriteSet1302(0x88,(0/10) /根据写月寄存器命令字,写入月的初始值WriteSet1302(0x8c,(10/10)4)*10+(value&0x0f); display_Second(seconds); value=ReadSet1302(0x83); minutes=(value& display_Minute(minutes); value=ReadSet1302(0x85); hours=(value& display_Hour(hours); value=ReadSet1302(0x87); day=(va
5、lue& display_Day(day); value=ReadSet1302(0x89); month=(value& display_Month(month); value=ReadSet1302(0x8D); year=(value&0xf0) display_Year(year);void displaystar(void) /显示欢迎界面 Write_Address(0x0f);while(displaywelcomei!=0) Write_Date(displaywelcomei); i+; delay1ms(1); i=0; Write_Address(0x4f); while
6、(displaywishi! Write_Date(displaywishi); j=40; while(j-) Write_com(0x18);/循环左移 delay1ms(700); delay1ms(10);void gbdisplay(unsigned char address) /时间调整时光标闪烁 Write_Address(address); delay1ms(5); Write_com(0x0f);void displaymaxt(unsigned char x) /显示最大温度 unsigned char i,j,k; delay1ms(2); i=x/100; j=x/10
7、; k=x%10; Write_Date(digitk);/*时间调整部分*/void hourset(void) /调时 unsigned char timevalue,hour; delay1ms(500); /防止多次触发 WriteSet1302(0x8e,0x00);/将写保护去掉,确保能正常将调整后的数值写入DS1302 timevalue=ReadSet1302(0x85); /读取此时的数值 hour=(timevalue&4)*10+(timevalue& while(1) if(ADD=0) delay1ms(50); if(ADD=0) hour+; delay1ms(3
8、00); while(ADD=0); if(RED=0) if(RED=0) hour-; if(hour=0) hour=23; while(RED=0); timevalue=(hour)/10)=24) hour=0; if(CANL=0) mode=0; Write_com(0x0c); break; if(SET=0) break; WriteSet1302(0x8e,0x80);void minuteset(void) /调分 unsigned char timevalue,minute; timevalue=ReadSet1302(0x83); minute=(timevalue
9、& delay1ms(10); minute+; if(minute=60) timevalue=0; minute-; if(minute=0) minute=59; timevalue=(minute/10)=60) minute=0;void secondset(void) /秒归零 unsigned char second; second=0; WriteSet1302(0x80,0x00); display_Second(second); Write_Address(0x4f);void yearset(void) /调年 unsigned char datevalue,year;WriteSet1302(0x8e,0x00); datevalue=ReadSet1302(0x8d); year=(datevalue&4)*10+(datevalue& year+; year-; datevalue=(year/10)4|(year%10); WriteSet1302(0x8c,datevalue); display_Year(year); del
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1