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 }
在页面的前初始化事件中写入以下代码
在页面的定时器事件中写入以下代码
注意
获取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设置为“日一二三四五六”。
3、新建一个定时器,定时器tim设置为300,在定时器内编写以下代码。
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、把代码复制到“前初始化事件”中,这样一跳转页面才会及时刷新
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-样例工程下载
演示工程下载链接: