查看: 665|回复: 5

LPC55S69搭配单色屏oled1306移植lvgl

[复制链接]

该用户从未签到

2

主题

8

帖子

0

注册会员

Rank: 2

积分
92
最后登录
2023-9-5
发表于 2023-8-22 17:10:57 | 显示全部楼层 |阅读模式
本帖最后由 eefocus_3937441 于 2023-8-23 08:46 编辑

1.使用硬件spi连接上oled屏 捕获.PNG
2.配置LCD的SPI信息,如图默认使用SPI8
捕获.PNG


3.进行初始化
捕获.PNG
ssd1306init
   //以下为SSD1306设置初始化代码,基本不用改动               
    _writeCommand(0xAE); //关闭显示
    _writeCommand(0xD5); //设置时钟分频因子,振荡频率
    _writeCommand(80);   //[3:0],分频因子;[7:4],振荡频率
    _writeCommand(0xA8); //设置驱动路数
    _writeCommand(0X3F); //默认0X3F(1/64)
    _writeCommand(0xD3); //设置显示偏移
    _writeCommand(0X00); //默认为0

    _writeCommand(0x40); //设置显示开始行 [5:0],行数.

    _writeCommand(0x8D); //电荷泵设置
    _writeCommand(0x14); //bit2 开启/关闭
    _writeCommand(0x20); //设置内存地址模式
    _writeCommand(0x02); //[1:0],00列地址模式;01行地址模式;10,页地址模式;默认10;
    _writeCommand(0xA1); //段重定义设置,bit0:0,0->0;1,0->127;
    _writeCommand(0xC0); //设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数
    _writeCommand(0xDA); //设置COM口硬件引脚配置
    _writeCommand(0x12); //[5:4]配置

    _writeCommand(0x81); //对比度设置
    _writeCommand(0xEF); //1~255;默认0X7F (亮度设置,越大越亮)
    _writeCommand(0xD9); //设置预充电周期
    _writeCommand(0xf1); //[3:0],PHASE 1;[7:4],PHASE 2;
    _writeCommand(0xDB); //设置VCOMH 电压倍率
    _writeCommand(0x30); //[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;

    _writeCommand(0xA4); //全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏)
    _writeCommand(0xA6); //设置显示方式;bit0:1,反相显示;0,正常显示                                   
    _writeCommand(0xAF); //开启显示

这里写入命令直接套用的原来的函数DEMO_SPI_LCD_WriteData,DEMO_SPI_LCD_WriteCmd
4.初始化后需要修改刷新函数
捕获.PNG
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
    PRINTF("Refresh area:x1=%d, y1=%d, x2=%d, y2=%d\r\n", area->x1,area->y1,area->x2,area->y2);
    //*刷新显示区每个点的像素值*/
    for (uint8_t y = area->y1; y <= area->y2; y++){
        for (uint8_t x = area->x1; x <= area->x2; x++){
        if(color_p->full != 0)OLED_DrawPoint(x, y,1);//由于用的OLED只有黑白,所以配置的2种颜色,当颜色值为1时设置该像素点
        else
        OLED_DrawPoint(x, y,0);//由于我是用的OLED只有黑白,所以配置的2种颜色,当颜色值为0时设置清除像素点
        PRINTF("%d",OLED_GRAM[x][y]);
        color_p++;
        }
    }
    //将缓冲buf写入oled
    OLED_Refresh_Gram();
     //最后必须得调用,通知lvgl库你已经flushing拷贝完成了
     lv_disp_flush_ready(disp_drv);
}

这里OLED_DrawPoint(x, y,1)是对OLED_GRAM[x][y])数组进行赋值,OLED_GRAM[x][y])是全局变量,将这个数组写入到显示屏就可以显示了。


5.因为1306是单色屏所以色深也要改为1
/*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH 1

/*Swap the 2 bytes of RGB565 color. Useful if the display has an 8-bit interface (e.g. SPI)*/
#define LV_COLOR_16_SWAP 0
6.效果图如下
捕获.PNG
1d6ac325-0f33-4e9d-be0c-7596506514e4.jpg








Core.zip

2.51 MB, 下载次数: 2, 下载积分: 威望 1

回复

使用道具 举报

  • TA的每日心情
    慵懒
    昨天 00:06
  • 签到天数: 1941 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17305
    最后登录
    2024-4-27
    发表于 2023-8-22 19:28:24 | 显示全部楼层
    移植好了?咋不搞个效果图出来看下啊
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    8

    帖子

    0

    注册会员

    Rank: 2

    积分
    92
    最后登录
    2023-9-5
     楼主| 发表于 2023-8-23 08:42:42 | 显示全部楼层
    流水源 发表于 2023-8-22 19:28
    移植好了?咋不搞个效果图出来看下啊

    上传了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 00:06
  • 签到天数: 1941 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17305
    最后登录
    2024-4-27
    发表于 2023-8-23 09:01:04 | 显示全部楼层
    666,不错不错
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2023-8-23 23:03:47 | 显示全部楼层
    练习了SPI接口了
    好主意
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-10-22 20:28
  • 签到天数: 289 天

    [LV.8]以坛为家I

    8

    主题

    702

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1932
    最后登录
    2024-4-25
    发表于 2023-10-11 19:12:54 | 显示全部楼层
    本帖最后由 行色匆匆 于 2023-10-11 19:13 编辑

    赞一个
    nxp.JPG
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-28 05:47 , Processed in 0.130746 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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