我已经把ds1302中“显示电脑时间”勾选上了,为什么显示的还是之前的时间?
#include <iom16v.h>
#include <macros.h>
#include "ds1302.h"
#include "LCD1602.h"
void main(void)
{
unsigned char temp;
delay_ms(200); //延时,使用上电稳定
Port_init(); //端口初始化
LCD_init(); //LCD初始化
LCD_clear();
ds1302_init(); //DS1302初始化
delay_ms(10);
ds1302_write_time(); //写入初始值
while (1)
{
delay_ms(200); //每200ms更新一次时间
ds1302_read_time(); //读取时间
LCD_clear(); //清屏
temp = (time_buf[0] >> 4) + '0';
LCD_write_char(0, 0, temp);/*年*/
temp = (time_buf[0] & 0x0F) + '0';
LCD_write_char(1, 0, temp);
temp = (time_buf[1] >> 4) + '0';
LCD_write_char(2, 0, temp);
temp = (time_buf[1] & 0x0F) + '0';
LCD_write_char(3, 0, temp);
LCD_write_char(4, 0, '-');
temp = (time_buf[2] >> 4) + '0';
LCD_write_char(5, 0, temp);/*月*/
temp = (time_buf[2] & 0x0F) + '0';
LCD_write_char(6, 0, temp);
LCD_write_char(7, 0, '-');
temp = (time_buf[3] >> 4) + '0';
LCD_write_char(8, 0, temp);/*日*/
temp = (time_buf[3] & 0x0F) + '0';
LCD_write_char(9, 0, temp);
LCD_write_str(0,1,"week:");
temp = (time_buf[7]) + '0';
LCD_write_char(5, 1, temp); //周
temp = (time_buf[4] >> 4) + '0';
LCD_write_char(8, 1, temp); //时
temp = (time_buf[4] & 0x0F) + '0';
LCD_write_char(9, 1, temp);
LCD_write_char(10, 1, ':');
temp = (time_buf[5] >> 4) + '0';
LCD_write_char(11, 1, temp);/*分*/
temp = (time_buf[5] & 0x0F) + '0';
LCD_write_char(12, 1, temp);
LCD_write_char(13, 1, ':');
temp = (time_buf[6] >> 4) + '0';
LCD_write_char(14, 1, temp);/*秒*/
temp = (time_buf[6] & 0x0F) + '0';
LCD_write_char(15, 1, temp);
}
}
|