IMG_20130322_213649.jpg (1.16 MB, 下载次数: 0)
下载附件
2013-3-22 21:41 上传
请看第一行的最后两个字符,倒数第二个还查不到啊
//在1602上显示日期时间函数
void Time_Disp(unsigned char * date ,unsigned char * time)
{
//LCD_send_command(0x01); //清屏
//年
LCD_write_char(0,0,'2');
LCD_write_char(0,1,'0');
LCD_write_char(0,2,date[0]/10+0x30);
LCD_write_char(0,3,date[0]%10+0x30);
LCD_write_char(0,4,'-');
//月
LCD_write_char(0,5,date[1]/10+0x30);
LCD_write_char(0,6,date[1]%10+0x30);
LCD_write_char(0,7,'-');
//日
LCD_write_char(0,8,date[2]/10+0x30);
LCD_write_char(0,9,date[2]%10+0x30);
LCD_write_char(0,10,' ');
//时
LCD_write_char(0,11,time[1]/10+0x30);
LCD_write_char(0,12,time[1]%10+0x30);
LCD_write_char(0,13,':');
//分
LCD_write_char(0,14,time[0]/10+0x30);
LCD_write_char(0,15,time[0]%10+0x30);
}
经过指点,加上些限制,现在不是乱码了,但不是正常时间数据;
当然加上这些限制是一个好习惯,学习了
还是1302读出数据的问题,把STC单片机降为12T模式也不行
最后用下面这个办法算是解决了,虽然很无语,虽然还是不知道什么原因,求指导
/*从DS302读出时钟数据*/
void ds1302_read_time(uchar *buf)
{
uchar i;
uchar time_buf[9];
time_buf[1]=ds1302_read_byte(ds1302_year_add); //年
time_buf[2]=ds1302_read_byte(ds1302_month_add); //月
time_buf[3]=ds1302_read_byte(ds1302_date_add); //日
time_buf[4]=ds1302_read_byte(ds1302_hr_add); //时
time_buf[5]=ds1302_read_byte(ds1302_min_add); //分
time_buf[6]=ds1302_read_byte(ds1302_sec_add);//秒
time_buf[7]=ds1302_read_byte(ds1302_day_add); //周
time_buf[4]=ds1302_read_byte(ds1302_hr_add); //时
time_buf[5]=ds1302_read_byte(ds1302_min_add); //分
time_buf[5]=ds1302_read_byte(ds1302_min_add); //分
time_buf[5]=ds1302_read_byte(ds1302_min_add); //分
time_buf[5]=ds1302_read_byte(ds1302_min_add); //分
time_buf[6]=ds1302_read_byte(ds1302_sec_add);//秒
time_buf[4]=ds1302_read_byte(ds1302_hr_add); //时
time_buf[4]=ds1302_read_byte(ds1302_hr_add); //时
time_buf[4]=ds1302_read_byte(ds1302_hr_add); //时
time_buf[7]=ds1302_read_byte(ds1302_day_add); //周
for(i=0;i<8;i++)
{ //BCD处理
buf=BCDtoi(time_buf);
}
}
一周热门 更多>