尽管Air105 核心板的外设资源不是很多,但它所提供的例程还是较为丰富的,例如对OLED屏的显示驱动等。
原本打算是在GPIO口的基础上,来自行完成OLED屏的显示驱动,既然有现成的就不再浪费劳动了。
例程所支持的OLED屏是一种基于I2C接口的0.96寸单色显示屏,该显示屏的核心芯片为ssd1306。
从例程来看,驱动OLED屏所用的引脚是I2C接口的SCL和SDA,方便对应着PE7和PE6。
但在开发板上,其实际的对应关系则如图1所示,这一点在实际使用过程要注意不能搞错。


图1 I2C引脚关系
在程序下载后,其输出、调试控制台及终端栏的输出信息如图2至图4所示。

图2 输出栏信息

图3 调试控制台信息

图4 终端输出信息
由程序可知,其使用的函数及功能有:
字体设置函数:u8g2.SetFont(字体)
字符显示函数:u8g2.DrawUTF8(显示内容,x1, n)
画线函数:u8g2.DrawLine(x1,y1,x2,y2)
画圆函数:u8g2.DrawCircle(x,y,r,n)
和u8g2.DrawDisc(x,y,r,n)
椭圆函数:u8g2.DrawEllipse(30,50,6,10,15)
方框函数:u8g2.DrawBox(x1,y1,x2,y2)
和u8g2.DrawFrame(x1,y1,x2,y2)
圆角方框函数:u8g2.DrawRBox(x1,y1,x2,y2)
和u8g2.DrawRFrame(x1,y1,x2,y2)
三角形函数:u8g2.DrawTriangle(x1,y1,x2,y2,x3,y3)
本人所用的一种双色OLED屏,来连接就绪的情况下,其显示效果包括字符与汉字的显示及几种几何图形的显示,其效果见图5至图7所示。

图5 显示字符与汉字


图6 显示几何图形

图7 显示符号图案
值得注意的是,这款双色屏是款准双色屏,即它的色彩是按区域来划分的,不能随意来指定。
为了达到美观的显示效果,应使显示的内容处于同一个色彩区域,否则会呈现出一种混乱感,将影响双色屏的自身优势。
此外,稍感不足的是这样驱动方式的灵活性较弱,不如使用GPIO口驱动的方式那样灵活及扩展修改。