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

在HC32L136开发板上配有一个笔段式的液晶屏,但无奈的是厂家却没提供一个能直接调用的显示函数。
在没解决该显示屏的显示函数前,先以轻车熟路的OLED屏来实现显示的问题。
由于手头的OLED屏是一款I2C接口的单色显示屏,故另其与MCU的连接关系为:
PA11:SCL
PA12:SDA
使这2个引脚输出高低电平的语句定义为:
#define OLED_SCLK_Set()   Gpio_SetIO(GpioPortA, GpioPin11)
#define OLED_SCLK_Clr()   Gpio_ClrIO(GpioPortA, GpioPin11);
#define OLED_SDIN_Set()   Gpio_SetIO(GpioPortA, GpioPin12)
#define OLED_SDIN_Clr()   Gpio_ClrIO(GpioPortA, GpioPin12);
分配2个引脚为输出功能的函数为:
  1. void App_OledInit(void)
  2. {
  3. stc_gpio_cfg_t stcGpioCfg;
  4. ///< 打开GPIO外设时钟门控
  5. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
  6. ///< 端口方向配置->输出(其它参数与以上(输入)配置参数一致)
  7. stcGpioCfg.enDir = GpioDirOut;
  8. ///< 端口上下拉配置->下拉
  9. stcGpioCfg.enPu = GpioPuDisable;
  10. stcGpioCfg.enPd = GpioPdEnable;
  11. ///< GPIO IO OLED端口初始化
  12. Gpio_Init(GpioPortA, GpioPin11, &stcGpioCfg);
  13. Gpio_Init(GpioPortA, GpioPin12, &stcGpioCfg);
  14. }

复制代码

实现图1显示效果的主程序为:

  1. int32_t main(void)
  2. {
  3. stc_rtc_time_t readtime;
  4. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);  //GPIO外设时钟打开
  5. Sysctrl_SetPeripheralGate(SysctrlPeripheralRtc,TRUE);    //RTC模块时钟打开
  6. Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
  7. RTC_Cfg();                                        //配置RTC
  8. EnableNvic(RTC_IRQn, IrqLevel3, TRUE);                //使能RTC中断向量
  9. Rtc_Cmd(TRUE);                                   //使能RTC开始计数
  10. App_OledInit();
  11. OLED_Init();
  12. OLED_Clear();
  13. OLED_ShowString(0,0,"HC32L136 TEST",16);
  14. OLED_ShowString(0,2,"OLED DISPLAY",16);
  15. while (1);
  16. }

复制代码

图1  OLED屏显示效果
实现RTC时间设置的函数为:
  1. void RTC_Cfg(void)
  2. {
  3. stc_rtc_initstruct_t RtcInitStruct;
  4. RtcInitStruct.rtcAmpm = RtcPm;        //12小时制
  5. RtcInitStruct.rtcClksrc = RtcClkRcl;       //内部低速时钟
  6. RtcInitStruct.rtcPrdsel.rtcPrdsel = RtcPrds;  //周期中断类型PRDS
  7. RtcInitStruct.rtcPrdsel.rtcPrds = Rtc1S;      //周期中断事件间隔
  8. RtcInitStruct.rtcTime.u8Second = 0x55;
  9. RtcInitStruct.rtcTime.u8Minute = 0x55;
  10. RtcInitStruct.rtcTime.u8Hour   = 0x10;
  11. RtcInitStruct.rtcTime.u8Day    = 0x06;
  12. RtcInitStruct.rtcTime.u8DayOfWeek = 0x04;
  13. RtcInitStruct.rtcTime.u8Month  = 0x10;
  14. RtcInitStruct.rtcTime.u8Year   = 0x20;
  15. RtcInitStruct.rtcCompen = RtcCompenEnable;
  16. RtcInitStruct.rtcCompValue = 0;//补偿值根据实际情况进行补偿
  17. Rtc_Init(&RtcInitStruct);
  18. Rtc_AlmIeCmd(TRUE);                  //使能闹钟中断
  19. }

复制代码

实现图3  RTC计时效果的主程序为:

  1. int32_t main(void)
  2. {
  3. stc_rtc_time_t readtime;
  4. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);   //GPIO外设时钟打开
  5. Sysctrl_SetPeripheralGate(SysctrlPeripheralRtc,TRUE);     //RTC模块时钟打开
  6. Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
  7. RTC_Cfg();                                        //配置RTC
  8. EnableNvic(RTC_IRQn, IrqLevel3, TRUE);                //使能RTC中断向量
  9. Rtc_Cmd(TRUE);                                   //使能RTC开始计数
  10. App_OledInit();
  11. OLED_Init();
  12. OLED_Clear();
  13. OLED_ShowString(0,0,"HC32L136 TEST",16);
  14. OLED_ShowString(0,2,"OLED  &  RTC",16);
  15. delay1ms(2000);
  16. OLED_Clear();
  17. OLED_ShowString(0,0,"20  -  -",16);
  18. OLED_ShowString(0,2,"    :  :",16);
  19. while (1)
  20. {
  21. if(flag == 1)
  22. {
  23. flag = 0;
  24. Rtc_ReadDateTime(&readtime);
  25. second = readtime.u8Second;
  26. minute = readtime.u8Minute;
  27. hour   = readtime.u8Hour;
  28. day    = readtime.u8Day;
  29. week   = readtime.u8DayOfWeek;
  30. month  = readtime.u8Month;
  31. year   = readtime.u8Year;
  32. OLED_ShowNum(16,0,year/16*10+year%16,2,16);
  33. OLED_ShowNum(40,0,month/16*10+month%16,2,16);
  34. OLED_ShowNum(64,0,day/16*10+day%16,2,16);
  35. OLED_ShowNum(16,2,hour/16*10+hour%16,2,16);
  36. OLED_ShowNum(40,2,minute/16*10+minute%16,2,16);
  37. OLED_ShowNum(64,2,second/16*10+second%16,2,16);
  38. }
  39. }
  40. }

复制代码

图2  RTC起始界面

3.jpg (16.26 KB, 下载次数: 2)

下载附件 保存到相册

2020-10-6 12:33 上传

图3  RTC计时效果
(0)

相关推荐

  • RTC是什么

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

  • 【MicroPython】移植到小钢炮开发板

    小钢炮(CANNON)开发板是最近比较热门的一个蓝牙开发板,它是XXXXX(为了避免广告,此处省略XX字).这里介绍小钢炮开发板,主要因为它使用了STM32F401RE这个MCU,而这个MCU是Mic ...

  • 市场上热门的六款RK3399系列板卡大PK,你更支持谁?

    大家好,我是人见人爱.花见花开的小月月.今天来给大家推荐市场上六款"性能超凡"的RK3399板子,哪一款实力最强?你最喜爱哪一款?欢迎留言! 1.NanoPC-T4 NanoPC- ...

  • 【新提醒】基于HC32V103开发板的OLED显示驱动

    OLED屏是一种自身发光的显示器件,它有许多种类,如按色彩分,可分为单色屏.双色屏及彩色屏等:按尺寸分,可分为0.91'.0.96'屏等:按接口方式分,可分为I2C接口和SPI接口等. 其中,以I2C ...

  • 【新提醒】基于HC32L110开发板的OLED屏显示

     本帖最后由 jinglixixi 于 2020-10-23 10:10 编辑 有了程序下载和点亮LED灯的基础,我们就可以利用I/O口来尝试驱动OLED屏了,这里选的是I2C接口的OLED屏,只需占 ...

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

    在HC32L136的例程中,只有笔段式液晶屏的测试程序,却没有提供一个可供用户直接调用的数值显示函数. 为此在了解液晶屏的工作原理后,在原例程的基础上完成了它的数值显示函数. 1. 液晶屏工作原理及显 ...

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

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

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

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

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

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

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

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

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

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

  • 【新提醒】基于HC32F460开发板的秘密锁功能实现

    本帖最后由 jinglixixi 于 2020-10-2 13:41 编辑 在HC32F460的开发板上,提供了一个I2C接口的AT24C02存储芯片,通过它可进行关键参数的读写. 由于其存储容量相对 ...