时钟也是一个实时的串口,也是很简单的,不过要注意以下的要点:
要点:
(1)里面有很多数据,所以需要定义一个结构体变量,将其中的数据写进去。
(2)写进去的数字是需要转换成特定的格式,才能写进去的,同时读出来的格式也是需要特定的转换才能变成数字的。
(3)写数据是从低到高,和IIC是相反的。
(4)时钟逻辑的初始化就是将那三个信号线初始化了一下。
基本的逻辑:这里面也有读时序和写时序,时序里面也有写字节和读字节的函数,不过这里面需要注意写字节和读字节之间的衔接转换。
while (1)
{
Int_DS1302N_GetDate(&st_date);
temperature = Int_DS18B20_GetTemperature();
sprintf(str, "20%02d/%02d/%02d %s",
(int)st_date.year,
(int)st_date.month,
(int)st_date.day,
WEEK_NAME[st_date.day_of_week - 1]);
Int_LCD1602_ShowStr(0, 0, str);
sprintf(str, "%02d:%02d:%02d Temp:%d",
(int)st_date.hour,
(int)st_date.minute,
(int)st_date.second,
(int)temperature);
Int_LCD1602_ShowStr(1, 0, str);
Delay1ms(50);
}
这个是主函数,其中需要强制转换,同时要分两次写。