查看: 4895|回复: 2

[原创] 【LPC54114】学习4--I2C双色OLED屏显示

[复制链接]
  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
    发表于 2017-4-11 09:53:51 | 显示全部楼层 |阅读模式
    本帖最后由 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。
    则他们输出高、低电平的语句定义如下:
    1. #define OLED_SCLK_Clr()  GPIO_WritePinOutput(GPIO, 0U, 11U, 0);
    2. #define OLED_SCLK_Set()  GPIO_WritePinOutput(GPIO, 0U, 11U, 1);
    3. #define OLED_SDIN_Clr() GPIO_WritePinOutput(GPIO, 0U, 13U, 0);  
    4. #define OLED_SDIN_Set() GPIO_WritePinOutput(GPIO, 0U, 13U, 1);
    复制代码
    对应的OLED屏初始化函数为:
    1. void OLED_Init(void)
    2. {         
    3.         CLOCK_EnableClock(kCLOCK_Gpio0);
    4.         gpio_pin_config_t oled_config = {  kGPIO_DigitalOutput, 0,};
    5.         GPIO_PinInit(GPIO, 0U, 13U, &oled_config);
    6.         GPIO_PinInit(GPIO, 0U, 11U, &oled_config);
    7.         OLED_SCLK_Set();
    8.         OLED_SDIN_Set();        
    9.         OLED_DLY_ms(800);
    10.         OLED_WR_Byte(0xAE,OLED_CMD);//--display off
    11.         OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
    12.         OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
    13.         OLED_WR_Byte(0x40,OLED_CMD);//--set start line address  
    14.         OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
    15.         OLED_WR_Byte(0x81,OLED_CMD); // contract control
    16.         OLED_WR_Byte(0xFF,OLED_CMD);//--128   
    17.         OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap
    18.         OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
    19.         OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
    20.         OLED_WR_Byte(0x3F,OLED_CMD);//--1/32 duty
    21.         OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
    22.         OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
    23.         OLED_WR_Byte(0x00,OLED_CMD);//
    24.         OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
    25.         OLED_WR_Byte(0x80,OLED_CMD);//
    26.         OLED_WR_Byte(0xD8,OLED_CMD);//set area color mode off
    27.         OLED_WR_Byte(0x05,OLED_CMD);//
    28.         OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
    29.         OLED_WR_Byte(0xF1,OLED_CMD);//
    30.         OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
    31.         OLED_WR_Byte(0x12,OLED_CMD);//
    32.         OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh
    33.         OLED_WR_Byte(0x30,OLED_CMD);//
    34.         OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable
    35.         OLED_WR_Byte(0x14,OLED_CMD);//
    36.         OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
    37. }
    复制代码
    OLED屏所实现的项目主界面如图1所示,此外稍加修改即可把原例程的功能借由OLED屏显示,其效果如图2所示。
    其中,首行显示的是文件对象;第2行显示的是检测温度值;第3行显示的是检测电压值;末行显示的是操作内容及结果(打开文本文件readme.txt,从中读取字符串“abc123”并加以显示)。
    有了这个基础,后面就可将音频数据存放到文件中,以便在需要时播放出提示语句。当然为了实现制作目标,还要引入RTC的计时功能,这些是原例程所没有的,需自行探索解决。
    图片1.png
    1 项目主界面

    图片2.png
    2 检测界面

    回复

    使用道具 举报

  • TA的每日心情

    7 小时前
  • 签到天数: 1974 天

    连续签到: 24 天

    [LV.Master]伴坛终老

    4

    主题

    8951

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13938
    最后登录
    2025-7-23
    发表于 2017-11-15 09:08:49 | 显示全部楼层
    不错干得不错
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7123
    最后登录
    2023-4-20
     楼主| 发表于 2017-11-15 09:37:27 | 显示全部楼层
    感谢鼓励和支持!!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-23 16:47 , Processed in 0.089412 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表