在各種應用中,人機交互都是不可缺少的,要用好LPC824自然也不例外。由于LPC824開發(fā)板所提供的擴展資源并不很多,所以為它配置顯示器件時,就應格外地減少對GPIO資源的占用。這里選用的是只有4個引腳的,以IIC接口工作的雙色OLED屏,除去2個電源引腳,只需使用2個GPIO口。
為使OLED工作,其時鐘引腳SCL是與P1相連,數(shù)據(jù)引腳DIN則與P6相連。相應的高低電平輸出語句則定義為:
#define OLED_SCLK_Clr() GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 1, 0 ); //10 SCL
#define OLED_SCLK_Set() GPIOSetBitValue(LPC_GPIO_PORT->PIN0, 1, 1 );
#define OLED_SDIN_Clr() GPIOSetBitValue(LPC_GPIO_PORT->PIN0,6 , 0 ); //11 SDA
#define OLED_SDIN_Set() GPIOSetBitValue(LPC_GPIO_PORT->PIN0,6, 1 );
使OLED工作的其它參數(shù)則定義為:
#define OLED_MODE 0
#define SIZE 8
#define XLevelL 0x00
#define XLevelH 0x10
#define Max_Column 128
#define Max_Row 64
#define Brightness 0xFF
#define X_WIDTH 128
#define Y_WIDTH 64
#define OLED_CMD 0
#define OLED_DATA 1
OLED的初始化函數(shù)如下:
void OLED_Init(void)
{
GPIOSetDir(LPC_GPIO_PORT->PIN0, 1, 1);
GPIOSetDir(LPC_GPIO_PORT->PIN0, 6, 1);
OLED_SCLK_Set();
OLED_SDIN_Set();
Delay_1ms(800); //delay_ms(800);
OLED_WR_Byte(0xAE,OLED_CMD);//--display off
OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
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(0x3F,OLED_CMD);//--1/32 duty
OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
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(0x80,OLED_CMD);//
OLED_WR_Byte(0xD8,OLED_CMD);//set area color mode off
OLED_WR_Byte(0x05,OLED_CMD);//
OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
OLED_WR_Byte(0xF1,OLED_CMD);//
OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
OLED_WR_Byte(0x12,OLED_CMD);//
OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
OLED_WR_Byte(0x30,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
}
為了實現(xiàn)漢字的顯示,可使用PCtoLCD2002字模提取軟件來獲取字模,其提取字模界面如圖1所示。
圖1 字模提取
在初始化函數(shù)的基礎上,利用商家所提供的OLED顯示程序就可實現(xiàn)相應的顯示功能。本人為激光標線器所制作的界面如圖2所示。
圖2 激光標線器顯示界面