本帖最后由 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);
- }
经程序的编译和下载,其运行的效果如图所示。 显示效果图
演示代码文件:
|