时钟也是一个实时的串口,也是很简单的,不过要注意以下的要点:
要点:
(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);}
这个是主函数,其中需要强制转换,同时要分两次写。