本帖最后由 jinglixixi 于 2017-4-20 11:50 编辑
由于LPC 54110开发板没有配置相关的显示器件,为此就像双核航母板看齐为它配了一个I2C双色OLED屏,这要比SPI接口的OLED屏更节省GPIO口。遗憾的是当时心急就将插针焊上了,其实还是焊上插排更妥帖,使用OLED屏时就无需连线了。 在LPC 54110开发板上要使用I2C接口的OLED屏其实很简单,在原器件的参考程序上只需稍加感动即可实现显示功能。 首先要做的就是选2个GPIO口与OLED屏的SCL和SDA连接,为了便于使用,这里是选取PIO0.11接SCL,PIO0.11接SDA。 则他们输出高、低电平的语句定义如下: - #define OLED_SCLK_Clr() GPIO_WritePinOutput(GPIO, 0U, 11U, 0);
- #define OLED_SCLK_Set() GPIO_WritePinOutput(GPIO, 0U, 11U, 1);
- #define OLED_SDIN_Clr() GPIO_WritePinOutput(GPIO, 0U, 13U, 0);
- #define OLED_SDIN_Set() GPIO_WritePinOutput(GPIO, 0U, 13U, 1);
复制代码对应的OLED屏初始化函数为: - void OLED_Init(void)
- {
- CLOCK_EnableClock(kCLOCK_Gpio0);
- gpio_pin_config_t oled_config = { kGPIO_DigitalOutput, 0,};
- GPIO_PinInit(GPIO, 0U, 13U, &oled_config);
- GPIO_PinInit(GPIO, 0U, 11U, &oled_config);
- OLED_SCLK_Set();
- OLED_SDIN_Set();
- OLED_DLY_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
- }
复制代码以OLED屏所实现的项目主界面如图1所示,此外稍加修改即可把原例程的功能借由OLED屏显示,其效果如图2所示。 其中,首行显示的是文件对象;第2行显示的是检测温度值;第3行显示的是检测电压值;末行显示的是操作内容及结果(打开文本文件readme.txt,从中读取字符串“abc123”并加以显示)。 有了这个基础,后面就可将音频数据存放到文件中,以便在需要时播放出提示语句。当然为了实现制作目标,还要引入RTC的计时功能,这些是原例程所没有的,需自行探索解决。 图1 项目主界面
图2 检测界面
|