首先oled的接口是iic,所以只需要接4根线,vcc 、GND、SCL和SDA。
其中SCL接板子的PB5
SDA接板子的PB8
接线连好之后,就先看看初始化程序
void OLED_Init(void) { OLED_WR_Byte(0xAE,OLED_CMD);//-- 关闭显示。 OLED_WR_Byte(0x00,OLED_CMD);//设置低列地址 OLED_WR_Byte(0x10,OLED_CMD);//设置高列地址 OLED_WR_Byte(0x40,OLED_CMD);//--设置起始行地址 OLED_WR_Byte(0xB0,OLED_CMD);//--设置页地址 OLED_WR_Byte(0x81,OLED_CMD); // 设置对比度控制 OLED_WR_Byte(0xFF,OLED_CMD);//--128 设置对比度值(最大对比度 ) OLED_WR_Byte(0xA1,OLED_CMD);//设置段重映射,通常是将段的映射方式从左到右或从右到左。 OLED_WR_Byte(0xA6,OLED_CMD);//设置正常/反转显示模式 OLED_WR_Byte(0xA8,OLED_CMD);//--设置复用比率(1/64) OLED_WR_Byte(0x3F,OLED_CMD);//--设置1/32的占空比 OLED_WR_Byte(0xC8,OLED_CMD);//设置COM扫描方向 OLED_WR_Byte(0xD3,OLED_CMD);//- 设置显示偏移 OLED_WR_Byte(0x00,OLED_CMD);//设置显示偏移值为0 OLED_WR_Byte(0xD5,OLED_CMD);//设置振荡器分频 OLED_WR_Byte(0x80,OLED_CMD);//设置分频值为1 OLED_WR_Byte(0xD8,OLED_CMD);//设置区域颜色模式关闭 OLED_WR_Byte(0x05,OLED_CMD);//设置区域颜色模式相关的参数。 OLED_WR_Byte(0xD9,OLED_CMD);//设置预充电周期 OLED_WR_Byte(0xF1,OLED_CMD);//设置预充电周期的值为F1 OLED_WR_Byte(0xDA,OLED_CMD);//设置COM引脚配置 OLED_WR_Byte(0x12,OLED_CMD);//设置COM引脚配置的参数 OLED_WR_Byte(0xDB,OLED_CMD);//设置VCOMH(虚阴极电压) OLED_WR_Byte(0x30,OLED_CMD);//设置VCOMH的值为0x30 OLED_WR_Byte(0x8D,OLED_CMD);//设置充电泵使能 OLED_WR_Byte(0x14,OLED_CMD);//设置充电泵的值为0x14。 OLED_WR_Byte(0xAF,OLED_CMD);//打开OLED面板显示 }
好,有了初始化函数,就来看看任意位置画图的函数
void OLED_DrawBitmap(int16_t iX, int16_t iY, int16_t iWidth, int16_t iHeight, const uint8_t *pchBuffer){ //unsigned char j=0; unsigned char x,y; int16_t y0 = iY/8; int16_t y1 = iY + iHeight; if(y1%8==0) y1=y1/8; else y1 = y1/8+1; for(y = y0;y < y1; y++){ //OLED_Set_Pos(iX,y); OLED_WR_Byte(0xb0+y,OLED_CMD); OLED_WR_Byte((((iX+0)&0xf0)>>4)|0x10,OLED_CMD); OLED_WR_Byte(((iX+0)&0x0f),OLED_CMD); uint16_t offect = (y-y0)*8*iWidth;//uint16_t offect = 128*8*i; for(x = 0;x < iWidth;x++){ u8 data_ram = 0x00; for(uint16_t j = 0; j < 8; j++){ if(pchBuffer[offect + x + iWidth *j] >= 0x80){ //data_ram &= ~(0x01<<j); data_ram |= (0x01<<j); } } OLED_WR_Byte(data_ram,OLED_DATA); } } }
首先,(iX,iY)就是在屏幕的这个点开始画图,图形的宽度为iWidth ,高度为iHeight
图形数据为uint8_t类型,也就是一个字节表示一个点。
点亮后显示图片的效果如下
程序下载链接如下
下一篇介绍如何移植arm公司开源的arm-2d