[方案相关] 玄宇芯-HC32L072开发板测评 + OLED屏显示

[复制链接]
1845|2
 楼主| jinglixixi 发表于 2020-9-13 19:57 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2020-9-13 23:57 编辑

好的开发板还需有一个好的显示,因为HC32L072属于节能型芯片,故为其配备了一个OLED屏来显示。
OLED屏采用I2C接口,因此也十分节省I/O资源。
OLED屏与MCU的连接关系为:
SCLK---PB8
SDIN ---PB9

使相应引脚输出高低的语句为:
#define OLED_SCLK_Set()   Gpio_SetIO(GpioPortB, GpioPin8);
#define OLED_SCLK_Clr()   Gpio_ClrIO(GpioPortB, GpioPin8);

#define OLED_SDIN_Set()   Gpio_SetIO(GpioPortB, GpioPin9);
#define OLED_SDIN_Clr()   Gpio_ClrIO(GpioPortB, GpioPin9);

配置引脚为输出功能的函数为:
  1. static 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_ClrIO(GpioPortB, GpioPin8);
  12.     Gpio_ClrIO(GpioPortB, GpioPin9);
  13.     Gpio_Init(GpioPortB, GpioPin8, &stcGpioCfg);
  14.     Gpio_Init(GpioPortB, GpioPin9, &stcGpioCfg);
  15. }


OLED屏的初始化函数为:
  1. void OLED_Init(void)
  2. {
  3.          OLED_SCLK_Set();
  4.          OLED_SDIN_Set();
  5.          delay1ms(800);
  6.          OLED_WR_Byte(0xAE,OLED_CMD);//--display off
  7.          OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
  8.          OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
  9.          OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
  10.          OLED_WR_Byte(0x81,OLED_CMD); // contract control
  11.          OLED_WR_Byte(0xFF,OLED_CMD);//--128  
  12.          OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap
  13.          OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
  14.          OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
  15.          OLED_WR_Byte(0x1F,OLED_CMD);//--1/32 duty
  16.          OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
  17.          OLED_WR_Byte(0x00,OLED_CMD);//
  18.          OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
  19.          OLED_WR_Byte(0xf0,OLED_CMD);//
  20.          OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
  21.          OLED_WR_Byte(0x22,OLED_CMD);//
  22.          OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
  23.          OLED_WR_Byte(0x02,OLED_CMD);//
  24.          OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
  25.          OLED_WR_Byte(0x49,OLED_CMD);//
  26.          OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable
  27.          OLED_WR_Byte(0x14,OLED_CMD);//
  28.          OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
  29.          OLED_Clear();
  30. }

实现显示效果的主程序如下:
  1. int32_t main(void)
  2. {
  3.         App_OLEDInit();
  4.         OLED_Init();
  5.         OLED_ShowString(0,0,"HC32L072 TEST",16);
  6.         OLED_ShowString(0,2,"OLED Display",16);
  7.         while(1);
  8. }

经程序的编译和下载,其运行的效果如图所示。
1.jpg
显示效果图

演示代码文件:

OLED.rar

4.26 KB, 下载次数: 34

rickluo 发表于 2020-9-13 21:10 | 显示全部楼层
牛X,我要把屏这块帮大家配好
 楼主| jinglixixi 发表于 2020-9-13 23:29 | 显示全部楼层
本帖最后由 jinglixixi 于 2020-9-13 23:37 编辑
rickluo 发表于 2020-9-13 21:10
牛X,我要把屏这块帮大家配好

那就更好了!其实如果在板上配上I2C、SPI、UART等接口可能用起来更方便,将器件一插就完成连接了。当然了,mini核心板与评估板会在设计上有所区别和侧重。下面是使用SPI接口完成的彩色OLED屏显示效果:
v.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部