当前位置:首页 > 单片机课程设计-温度控制系统
//是否写入保护
void DS1302_SetProtect(bit Flag) { if(Flag) Write_Ds1302(0x8E,0x80); //0x8e控制字节地址,bit7=WP WP=1 禁止数据写入DS1302 else Write_Ds1302(0x8E,0x00); //WP=0 允许数据写入DS1302 }
/*--------------------------------------------------------------*/ //设置时间函数
void DS1302_SetTime(unsigned char Address, unsigned char Value) { DS1302_SetProtect(0); Write_Ds1302(Address,((Value/10)<<4|(Value))); DS1302_SetProtect(1); }
/********************************** 读取 DS1302当前时间, 格式为:
秒,分,时,日,月,星期,年 **********************************/ void get_ds1302(systemtime *Time) { uchar readtime;
readtime = r_ds1302(0x81); //秒寄存器读操作0x81 Time->second = ((readtime&0x70)>>4)*10 + (readtime&0x0f); //十位+个位 readtime = r_ds1302(0x83); //分寄存器读操作0x83 Time->minute = ((readtime&0x70)>>4)*10 + (readtime&0x0f); readtime = r_ds1302(0x85); Time->hour = ((readtime&0x70)>>4)*10 + (readtime&0x0f); readtime = r_ds1302(0x87); Time->day = ((readtime&0x70)>>4)*10 + (readtime&0x0f); //readtime = r_1302(0x8b); //Ttime->week = ((readtime&0x70)>>4)*10 + (readtime&0x0f); readtime = r_ds1302(0x89); Time->month = ((readtime&0x70)>>4)*10 + (readtime&0x0f); readtime = r_ds1302(0x8d); Time->year = ((readtime&0x70)>>4)*10 + (readtime&0x0f);
33
//将十进制数转换为液晶显示的ASCII值 Time->DateString[0] = Time->year/10 + '0'; Time->DateString[1] = Time->year + '0'; Time->DateString[2] = '-'; Time->DateString[3] = Time->month/10 + '0'; Time->DateString[4] = Time->month + '0'; Time->DateString[5] = '-'; Time->DateString[6] = Time->day/10 + '0'; Time->DateString[7] = Time->day + '0'; Time->DateString[8] = '\\0'; //将十进制数转换为液晶显示的ASCII值 Time->TimeString[0] = Time->hour/10 + '0'; Time->TimeString[1] = Time->hour + '0'; Time->TimeString[2] = ':'; Time->TimeString[3] = Time->minute/10 + '0'; Time->TimeString[4] = Time->minute + '0'; Time->TimeString[5] = ':'; Time->TimeString[6] = Time->second/10 + '0'; Time->TimeString[7] = Time->second + '0'; Time->TimeString[8] = '\\0'; }
#endif
34
共分享92篇相关文档