rtc0~rtc6-RTC时钟变量

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

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

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

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

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

rtc-示例1

获取rtc时间

//获取年
n0.val=rtc0

//获取月
n1.val=rtc1

//获取日
n2.val=rtc2

//获取小时
n3.val=rtc3

//获取分钟
n4.val=rtc4

//获取秒钟
n5.val=rtc5
//获取星期
if(rtc6==0)
{
  t0.txt="星期日"
}else if(rtc6==1)
{
  t0.txt="星期一"
}else if(rtc6==2)
{
  t0.txt="星期二"
}else if(rtc6==3)
{
  t0.txt="星期三"
}else if(rtc6==4)
{
  t0.txt="星期四"
}else if(rtc6==5)
{
  t0.txt="星期五"
}else if(rtc6==6)
{
  t0.txt="星期六"
}

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

../_images/rtc_3.jpg

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

../_images/rtc_4.jpg

注意

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

注意

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

rtc-示例2

设置rtc时间示例:

//设置年
rtc0=n0.val

//设置月
rtc1=n1.val

//设置月
rtc2=n2.val

//设置时
rtc3=n3.val

//设置分
rtc4=n4.val

//设置秒
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
covx rtc0,str.txt,4,0 //将年份转换为字符串,长度4字节
date.txt=str.txt+"-"  //拼接字符串 yyyy-
covx rtc1,str.txt,2,0  //将月份转换为字符串,长度2字节
date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-
covx rtc2,str.txt,2,0 //将日期转换为字符串,长度2字节
date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-dd-
covx rtc3,str.txt,2,0 //将小时转换为字符串,长度2字节
date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-dd-HH-
covx rtc4,str.txt,2,0 //将分钟转换为字符串,长度2字节
date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-dd-HH-MM-
covx rtc5,str.txt,2,0 //将秒钟转换为字符串,长度2字节
date.txt=date.txt+str.txt+"-" //拼接字符串 yyyy-mm-dd-HH-MM-SS-
substr weekArr.txt,str.txt,rtc6,1 //截取星期
date.txt=date.txt+"星期"+str.txt      //拼接字符串 yyyy-mm-dd-HH-MM-SS-星期

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

../_images/rtc_2_1.jpg

rtc-c语言示例

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

printf("rtc0=%d\xff\xff\xff",year);

printf("rtc1=%d\xff\xff\xff",month);

printf("rtc2=%d\xff\xff\xff",day);

printf("rtc3=%d\xff\xff\xff",hour);

printf("rtc4=%d\xff\xff\xff",minute);

printf("rtc5=%d\xff\xff\xff",second);

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

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

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

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》演示工程下载