在HC32F030开发板上设计有笔端式液晶屏的接口,可能是节省成本的考虑,亦或是HC32F030并没有配置LCD驱动器。 为了给开发板配备一个人机交互的桥梁,决定以I2C接口的OLED屏为目标对象。 那么取哪2个引脚来驱动OLED屏呢? 启初试过一些引脚因各种原因没有成功,最后的选择落到了PA11和PA12的身上,使OLED屏露出了笑脸。 为使这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) 随后移植OLED屏厂家的例程即可实现驱动的目的,编译下载后的显示效果如图1所示。 图1 OLED屏显示效果 事情到这里似乎就该结束,当总觉得还是差了些什么? 原来问题是出在OLED屏被游离在开发板之外,并没有成为一个整体。 那该这样做呢? 最早是想利用原液晶屏的位置改造出一片焊盘来飞线进行连接,但那样对板子的损伤较大。 于是就大胆想在原液晶屏的焊盘上入手,当棘手的是这里并没有提供电源的引脚,更别提引脚的顺序要一致了。 经大胆测试,最终是通过以I/O输出高低电平来虚拟出了一组3V的电源,定义虚拟电源的语句如下: #define OLED_VCC() Gpio_SetIO(GpioPortA, GpioPin9) #define OLED_GND() Gpio_ClrIO(GpioPortA, GpioPin10) 这样就成功的以OLED屏取代了原来的液晶屏显示方案,其效果如图2所示。 怎么样,它比原来的显示方案更节省I/O引脚,更节省空间,显示的信息量也更大,内容和形式也更丰富,特与大家共享所获。 图2 新的驱动效果
|