【新提醒】基于HC32L136开发板的RTC电子时钟

在HC32L136的例程中,只有笔段式液晶屏的测试程序,却没有提供一个可供用户直接调用的数值显示函数。
为此在了解液晶屏的工作原理后,在原例程的基础上完成了它的数值显示函数。
1. 液晶屏工作原理及显示编码
在HC32L136开发板上,所配置的液晶屏为4位数字式显示屏并配有小数点和时间分隔符,其布局如图1所示。

图1 液晶屏笔段布局显示
尽管笔段式液晶屏在显示显示上与数码管十分相近,但在工作原理和机制上却差别很大。
以数码管为例,它是通过段码和位码来控制显示的,编写好段码表后,只需把段码送到位码控制的位置即可显示出相应的内容。
例如“1”的显示码为0x06,即0000 0110对应CB被点亮。
而对于液晶屏就不同了,它是按节拍来完成代码的输出,按显示位置的不同,是将显示笔段分成4组,每组占2位,共8位。而每组内,相同位置所控制的笔段名称相同,故只需定义一组编码即可,然后按显示的位置进行移位处理即可(例如第一组需移动6位,第二组需移动4位第三组需移动2位)。
若每组显示码占2个字节,则可到如下的显示码表:
2.显示程序
1)定义显示数组
#define     LCD_POINT      0X0008
const uint16_t  lcd_tab[16] =
{
  0x0F05, 0x0600, 0x0B06, 0x0F02,0x0603, 0x0D03, 0x0D07, 0x0700, 0x0F07, 0x0F03,
  0x0707, 0x0C07, 0x0905, 0x0E05,0x0907, 0x0107,
};
2)清屏函数
  1. void Lcd_ClearDisp(void)
  2. {
  3. uint8_t tmp;
  4. volatile uint32_t *ram = NULL;
  5. ram = &M0P_LCD->RAM0;
  6. for(tmp=0;tmp<16;tmp++)
  7. {
  8. *ram = 0;
  9. ram++;
  10. }
  11. }

复制代码

3)显示函数
  1. void LCD_Display(uint16_t * str)
  2. {
  3. uint32_t   n;
  4. n   = str[1];
  5. n <<= 16;
  6. n  += str[0];
  7. M0P_LCD->RAM0 = n;
  8. n   = str[3];
  9. n <<= 16;
  10. n  += str[2];
  11. M0P_LCD->RAM1 = n;
  12. }

复制代码

3. RTC电子时钟
HC32L136内部配置了RTC计时器,将它与SLCD液晶屏配合即可实现一个RTC电子时钟。
实现电子时钟的主程序为:
  1. int32_t main(void)
  2. {
  3. uint32_t       i;
  4. uint16_t       str[4];
  5. Sysctrl_ClkSourceEnable(SysctrlClkRCL,TRUE);
  6. Sysctrl_SetRCLTrim(SysctrlRclFreq32768);
  7. Sysctrl_SetPeripheralGate(SysctrlPeripheralLcd,TRUE);
  8. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
  9. App_PortCfg();
  10. App_LcdCfg();
  11. Lcd_ClearDisp();
  12. stc_rtc_time_t readtime;
  13. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
  14. Sysctrl_SetPeripheralGate(SysctrlPeripheralRtc,TRUE);
  15. Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
  16. RTC_Cfg();
  17. EnableNvic(RTC_IRQn, IrqLevel3, TRUE);
  18. Rtc_Cmd(TRUE);
  19. while (1)
  20. {
  21. M0P_GPIO->PDOUT ^= (1U << 5);
  22. if(flag == 1)
  23. {
  24. flag = 0;
  25. Rtc_ReadDateTime(&readtime);
  26. second = readtime.u8Second;
  27. minute = readtime.u8Minute;
  28. hour   = readtime.u8Hour;
  29. str[0] = lcd_tab[minute>>4];
  30. str[1] = lcd_tab[minute&0x0f]|LCD_POINT;
  31. str[2] = lcd_tab[second>>4];
  32. str[3] = lcd_tab[second&0x0f];
  33. LCD_Display(str);
  34. }
  35. delay1ms(500);
  36. }
  37. }

复制代码

有了显示程序固然可喜,但下载工具的作用也是必不可少的,本人使用的第三方的下载工具,并通过虚拟串口来完成下载,见图2和图3所示。


2 下载工具

3 下载过程
在下载程序后,其显示效果如图4所示。

4运行效果

(0)

相关推荐

  • 分享一个12864液晶屏的单片机驱动

    https://www.toutiao.com/a6997216195019833892/ 手上有个12864液晶屏,IC是ST7920的,内置中英文点阵字库.用于显示一些简短的字符串还是蛮合适的.周 ...

  • RTC是什么

    导读:本文主要介绍的是RTC是什么,不懂它是什么东东的童鞋们快来学习一下吧,很涨姿势的哦~~~ 1.RTC是什么--简介 RTC,英文全称:Real-time clock,中文名称:实时时钟,是指可以 ...

  • stm32f10x基于freeRTOS的低功耗实现 | 一只菜鸟攻城狮啊

    0. 写在前面 没有太多时间更新,可能偶尔有时间就更新一些. 因为突然有项目用到了stm32f10x系列并且是电池驱动的,所以需要对功耗进行优化,其他CM3核心系列应该也同样适用. 1. 背景 Stm ...

  • (8条消息) 74HC165的使用

    74HC165是并行输入串行输出的逻辑芯片,一般用于扩展输入的IO口.使用电路如下: 外部可以接8个输入,然后通过3个口与单片机相连.3个口的功能为: PL:输出使能: CP:时钟线: Q7:数据输出 ...

  • 【新提醒】基于HC32F460开发板的RTC电子时钟

    在HC32F460内部配有RTC功能,这里我们为它配上OLED屏显示,这样它就构成一个RTC电子时钟. 所用的OLED屏就是随板子自带的,该OLED屏的原理图见图1所示. 图1  OLED屏原理图 本 ...

  • 【新提醒】HC32L136开发板的OLED驱动及应用

    在HC32L136开发板上配有一个笔段式的液晶屏,但无奈的是厂家却没提供一个能直接调用的显示函数. 在没解决该显示屏的显示函数前,先以轻车熟路的OLED屏来实现显示的问题. 由于手头的OLED屏是一款 ...

  • 【新提醒】HC32L072开发板之 KEY控制LED

    开发板上LED与KEY的原理图如图1所示,可以用SW1和SW2分别控制DS1和DS2.其程序如下: 图1  LED与KEY原理图 实现控制功能的程序如下: /********************* ...

  • 【新提醒】HC32L072开发板驱动 I2C接口光照传感器

    单有了显示单元还只是解决了人机交互的部分问题,要让机器具备感知能力就离不开传感器.传感器的种类有许多种,BH1750光照传感器就是其中的一种,它是一种基于I2C接口的数字式传感器,因此无需对获取的数据 ...

  • 【新提醒】HC32F460开发板OLED屏显示驱动

    与其他的开发板不同,在HC32F460开发板上配置了小巧别致的I2C接口OLED屏. 有了它,我们需要显示的数据和信息就不必完全借助于串口通信了! 好像是华大要测试测评者的水平,尽管开发板配置了OLE ...

  • 【新提醒】HC32F460开发板数据采样及显示

    HC32F460内置有2个独立的12位ADC,并在开发板上配有10K的电位器以模拟电位高低,见图1所示. 由原理图可知该电位器的引脚被连到MCU的PC0上,即ADC12_IN10. 图1 电位器连接 ...

  • 【新提醒】HC32F030开发板上较接近完美彩屏显示

    HC32F030有着64K Flash和8KRAM,可以支持显示屏显示一定尺寸的图片和掌握信息. 有了前面双色OLED屏显示的基础上,就可以调试让HC32F030开发板显示图片和掌握信息了. 为了便于 ...

  • 【新提醒】HC32F030开发板所实现的电子时钟

    HC32F030与HC32L136不同,它自身没有内置硬件的万年历 RTC,要想实现与RTC类似的功能只能借助于systick,利用秒信号来进行计时,并通过程序来完成时间的进制转换. 实现电子时钟功能 ...

  • 【新提醒】HC32F460开发板的程序下载及LED控制

    我使用的HC32F460开发板是基于HC32F460JETA,共有48个引脚.所使用的开发工具,则是第三方的雅特力调试下载器AT_LINK. 该开发板有别于原厂的HC32F460开发板,其LED灯的原 ...