求解 为什么PCF8563做的时钟在23:59:59后会跳到23:00:00
过了一分钟,也就是应该显示00:01:00的时候时间才会显示正常但是日历还是不正常 void main()
{
uchar Time={0x50,0x58,0x22,0x00,0x03,0x00,0x14};//初始化数据
//51秒,59分,23时,1日,星期四,1月,2015年
uchar Time_data_read;//PCF8563数据临时数组
uchar Print_data,i;//打印用临时数组
LCD_Init();
LCD_Clear();
set_8563(Time);
LCD_Write_String(4,0,"Hellow !");
DelayMs(1000);
LCD_Clear();
LCD_Write_String(0,0,"20");
while(1)
{
Read_8563(Time_data_read);
for(i=0;i<7;i++)
Time_data_read=Time_data_read/16*10+Time_data_read%16+1;//BCD码转换成16进制
if(Time_data_read==60) Time_data_read=0;
if(Time_data_read==60) Time_data_read=0;
if(Time_data_read==24) Time_data_read=0;
if(Time_data_read==31) Time_data_read=1;
if(Time_data_read==13) Time_data_read=1;
if(Time_data_read==100) Time_data_read=0;
sprintf(Print_data,"%02d-%02d-%02d",(uint)Time_data_read,(uint)Time_data_read,(uint)Time_data_read);
LCD_Write_String(2,0,Print_data);
sprintf(Print_data,"%02d:%02d:%02d",(uint)Time_data_read,(uint)Time_data_read,(uint)Time_data_read);
LCD_Write_String(2,1,Print_data);
}
}
main函数如上
我有对读取到的值进行判断了啊 问题解决了抱歉 是我没仔细看8563的手册 墨逸、 发表于 2015-4-2 20:18
问题解决了抱歉 是我没仔细看8563的手册
既然是让大家帮助解决问题的,虽然大家没有帮到你,也希望楼主把问题的原因及解决的办法贡献出来,帮助那些和你走过一样弯路的朋友,也给论坛做了贡献。你看好不好呢! MCUStudent 发表于 2015-4-2 20:46
既然是让大家帮助解决问题的,虽然大家没有帮到你,也希望楼主把问题的原因及解决的办法贡献出来,帮助那 ...
是这样的,我在BCD码转换成十六进制的时候对其数据进行了加一操作,我以为它是按照计算机数据方式从0开始,59结束的,然后就闹了乌龙,虽然下面有判断,不过似乎没有起作用,不知道为什么 楼主这样的读写方式没有问题吗?我在连续读写的时候,长时间会出现读变成了写数据了,也就是时间被写入0XA3的数据了。
页:
[1]