rtc0~rtc6-RTC时钟变量

需要支持RTC的型号才能使用。

支持RTC的屏幕,屏幕背面会有电池座用于放RTC电池,确保断电的情况下时钟也能正常工作,默认不带RTC电池,需要自己装入RTC电池才能在断电时正常走时(型号:CR1220) 如何判断屏幕是否支持RTC实时时钟

需配合文本控件/数字控件/指针控件将RTC时间显示到屏幕上

rtc0-rtc6分别代表 年、月、日、时、分、秒、星期

rtc6中,1-6分别表示星期一到星期六,0表示星期天

rtc-示例1

获取rtc时间

 1 //获取年
 2 n0.val=rtc0
 3
 4 //获取月
 5 n1.val=rtc1
 6
 7 //获取日
 8 n2.val=rtc2
 9
10 //获取小时
11 n3.val=rtc3
12
13 //获取分钟
14 n4.val=rtc4
15
16 //获取秒钟
17 n5.val=rtc5
18 //获取星期
19 if(rtc6==0)
20 {
21   t0.txt="星期日"
22 }else if(rtc6==1)
23 {
24   t0.txt="星期一"
25 }else if(rtc6==2)
26 {
27   t0.txt="星期二"
28 }else if(rtc6==3)
29 {
30   t0.txt="星期三"
31 }else if(rtc6==4)
32 {
33   t0.txt="星期四"
34 }else if(rtc6==5)
35 {
36   t0.txt="星期五"
37 }else if(rtc6==6)
38 {
39   t0.txt="星期六"
40 }

在页面的前初始化事件中写入以下代码

../_images/rtc_3.jpg

在页面的定时器事件中写入以下代码

../_images/rtc_4.jpg

注意

获取RTC时,请将上述代码写在页面前初始化事件和定时器中,定时器时间建议为300ms(300比较均匀,太快浪费性能,太慢觉得卡顿)

注意

如果跳转页面时,显示RTC时间的控件会闪一下才变成正确的时间,是因为没有把刷新时间的代码写在页面前初始化事件中,当跳转页面时,需要等到定时器事件到了,才会刷新时间

rtc-示例2

设置rtc时间示例:

 1 //设置年
 2 rtc0=n0.val
 3
 4 //设置月
 5 rtc1=n1.val
 6
 7 //设置月
 8 rtc2=n2.val
 9
10 //设置时
11 rtc3=n3.val
12
13 //设置分
14 rtc4=n4.val
15
16 //设置秒
17 rtc5=n5.val

注意

仅x5/k0系列支持RTC。

rtc0-rtc6分别表示年,月,日,时,分,秒,星期。rtc6(星期)为只读,根据当前的年月日自动计算生成。

rtc晶振的精度为20ppm

rtc-示例3

使用文本控件获取rtc时间

1、新建一个文本控件date,date控件的txt_maxl设置为100。

2、新建两个变量控件,均设置为字符串格式,txt_maxl设置为20,两个控件分别改名为str和weekArr,str的txt设置为空,weekArr的txt设置为“日一二三四五六”。

../_images/rtc_0.jpg ../_images/rtc_1.jpg

3、新建一个定时器,定时器tim设置为300,在定时器内编写以下代码。

../_images/rtc_2.jpg
 1 covx rtc0,str.txt,4,0 //将年份转换为字符串,长度4字节
 2 date.txt=str.txt+"-"  //拼接字符串 yyyy-
 3 covx rtc1,str.txt,2,0  //将月份转换为字符串,长度2字节
 4 date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-
 5 covx rtc2,str.txt,2,0 //将日期转换为字符串,长度2字节
 6 date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-dd-
 7 covx rtc3,str.txt,2,0 //将小时转换为字符串,长度2字节
 8 date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-dd-HH-
 9 covx rtc4,str.txt,2,0 //将分钟转换为字符串,长度2字节
10 date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-dd-HH-MM-
11 covx rtc5,str.txt,2,0 //将秒钟转换为字符串,长度2字节
12 date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-dd-HH-MM-SS-
13 substr weekArr.txt,str.txt,rtc6,1 //截取星期
14 date.txt=date.txt+"星期"+str.txt      //拼接字符串 yyyy-mm-dd-HH-MM-SS-星期

4、把代码复制到“前初始化事件”中,这样一跳转页面才会及时刷新

../_images/rtc_2_1.jpg

rtc-c语言示例

单片机通过串口更新串口屏的RTC时间

 1 printf("rtc0=%d\xff\xff\xff",year);
 2
 3 printf("rtc1=%d\xff\xff\xff",month);
 4
 5 printf("rtc2=%d\xff\xff\xff",day);
 6
 7 printf("rtc3=%d\xff\xff\xff",hour);
 8
 9 printf("rtc4=%d\xff\xff\xff",minute);
10
11 printf("rtc5=%d\xff\xff\xff",second);

针对没有RTC的屏幕,也可以直接给对应的数字变量赋值即可

1 printf("date.year.val=%d\xff\xff\xff",year);      //给date页面的year控件的val属性赋值
2 printf("date.month.val=%d\xff\xff\xff",month);    //给date页面的month控件的val属性赋值
3 printf("date.day.val=%d\xff\xff\xff",day);        //给date页面的day控件的val属性赋值
4 printf("date.hour.val=%d\xff\xff\xff",hour);      //给date页面的hour控件的val属性赋值
5 printf("date.minute.val=%d\xff\xff\xff",minute);  //给date页面的minute控件的val属性赋值
6 printf("date.second.val=%d\xff\xff\xff",second);  //给date页面的second控件的val属性赋值

也可以直接给文本控件赋值

1 printf("date.time.txt=\"%d-%d-%d %d:%d:%d\"\xff\xff\xff",year,month,day,hour,minute,second);    //给date页面的time控件的txt属性赋值

rtc-相关链接

校准RTC时钟

RTC电池型号

如何判断屏幕是否支持RTC实时时钟

rtc-样例工程下载

演示工程下载链接:

《RTC时钟》演示工程下载

《RTC时钟2》演示工程下载