打印
[方案相关]

玄宇芯-HC32L072开发板测评 + OLED屏显示

[复制链接]
1376|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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);

配置引脚为输出功能的函数为:
static void App_OLEDInit(void)
{
    stc_gpio_cfg_t stcGpioCfg;
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
    ///< 端口方向配置->输出(其它参数与以上(输入)配置参数一致)
    stcGpioCfg.enDir = GpioDirOut;
    ///< 端口上下拉配置->下拉
    stcGpioCfg.enPu = GpioPuDisable;
    stcGpioCfg.enPd = GpioPdEnable;
    Gpio_ClrIO(GpioPortB, GpioPin8);
    Gpio_ClrIO(GpioPortB, GpioPin9);
    Gpio_Init(GpioPortB, GpioPin8, &stcGpioCfg);
    Gpio_Init(GpioPortB, GpioPin9, &stcGpioCfg);
}


OLED屏的初始化函数为:
void OLED_Init(void)
{
         OLED_SCLK_Set();
         OLED_SDIN_Set();
         delay1ms(800);
         OLED_WR_Byte(0xAE,OLED_CMD);//--display off
         OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
         OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
         OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
         OLED_WR_Byte(0x81,OLED_CMD); // contract control
         OLED_WR_Byte(0xFF,OLED_CMD);//--128  
         OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap
         OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
         OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
         OLED_WR_Byte(0x1F,OLED_CMD);//--1/32 duty
         OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
         OLED_WR_Byte(0x00,OLED_CMD);//
         OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
         OLED_WR_Byte(0xf0,OLED_CMD);//
         OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
         OLED_WR_Byte(0x22,OLED_CMD);//
         OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
         OLED_WR_Byte(0x02,OLED_CMD);//
         OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
         OLED_WR_Byte(0x49,OLED_CMD);//
         OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable
         OLED_WR_Byte(0x14,OLED_CMD);//
         OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
         OLED_Clear();
}

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

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

演示代码文件:

OLED.rar

4.26 KB

使用特权

评论回复
沙发
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屏显示效果:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

453

主题

2750

帖子

38

粉丝