请选择 进入手机版 | 继续访问电脑版
查看: 2680|回复: 2

基于S08P-Lite开发板的彩色OLED屏的驱动显示

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

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7086
    最后登录
    2023-4-20
    发表于 2021-3-8 18:18:01 | 显示全部楼层 |阅读模式
    前面介绍了OLED屏的驱动显示,但那个屏毕竟是单色的,比较缺少色彩感。为此,又探索着实现了彩色OLED屏的驱动,其显示效果如图所示。
                                  
    360截图16251120173231.png
    彩色OLED屏显示效果图

    该显示屏与MCU的连接关系如下:
    SCK---- PTE0
    SDA---- PTE2
    RST ---- PTE1
    DC ---- PTE3
    CS ---- PTB4
    BLK ---- PTB5
    各引脚输出高低电平的语句定义为:
    #define OLED_SCLK_Set()   PORT_PTED_PTED0   = 1
    #define OLED_SCLK_Clr()   PORT_PTED_PTED0   = 0  //PTE0
    #define OLED_SDIN_Set()   PORT_PTED_PTED2   = 1
    #define OLED_SDIN_Clr()   PORT_PTED_PTED2   = 0 //PTE2
    #define OLED_RST_Set()    PORT_PTED_PTED1   = 1
    #define OLED_RST_Clr()    PORT_PTED_PTED1   = 0 //PTE1
    #define OLED_DC_Set()     PORT_PTED_PTED3   = 1
    #define OLED_DC_Clr()     PORT_PTED_PTED3   = 0 //PTE3
    #define OLED_CS_Set()     PORT_PTBD_PTBD4   = 1
    #define OLED_CS_Clr()     PORT_PTBD_PTBD4   = 0 //PTB4
    #define OLED_BLK_Set()    PORT_PTBD_PTBD5   = 1
    #define OLED_BLK_Clr()    PORT_PTBD_PTBD5   = 0 //PTB5
    配置相关引脚为输出功能的函数为:
    1. void app_oled_init(void)
    2. {
    3. PORT_PTEOE_PTEOE0 = 1;     //PTE0
    4. PORT_PTEOE_PTEOE1 = 1;     //PTE1
    5. PORT_PTEOE_PTEOE2 = 1;     //PTE2
    6. PORT_PTEOE_PTEOE3 = 1;     //PTE3
    7. PORT_PTBOE_PTBOE4 = 1;     //PTB4
    8. PORT_PTBOE_PTBOE5 = 1;     //PTB5
    9. OLED_BLK_Set();
    10. }
    复制代码

    通过I/O口模拟SPI接口发送数据的函数为:
    1. void LCD_Writ_Bus(u8 dat)
    2. {
    3. u8 i;
    4. OLED_CS_Clr();
    5. OLED_CS_Clr();
    6. OLED_CS_Clr();
    7. for(i=0;i<8;i++)
    8. {
    9. OLED_SCLK_Clr();
    10. OLED_SCLK_Clr();
    11. OLED_SCLK_Clr();
    12. if(dat & 0x80)
    13. {
    14. OLED_SDIN_Set();
    15. OLED_SDIN_Set();
    16. OLED_SDIN_Set();
    17. }
    18. else
    19. {
    20. OLED_SDIN_Clr();
    21. OLED_SDIN_Clr();
    22. OLED_SDIN_Clr();
    23. }
    24. OLED_SCLK_Set();
    25. OLED_SCLK_Set();
    26. OLED_SCLK_Set();
    27. dat<<=1;
    28. }
    29. OLED_CS_Set();
    30. OLED_CS_Set();
    31. OLED_CS_Set();
    32. }
    复制代码

    显示字符串的函数为:
    1. void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 color)
    2. {
    3. while(*p!='\0')
    4. {
    5. if(x>LCD_W-16)
    6. {
    7. x=0;
    8. y+=16;
    9. }
    10. if(y>LCD_H-16)
    11. {
    12. y=0;
    13. x=0;
    14. LCD_Clear(RED);
    15. }
    16. LCD_ShowChar(x,y,*p,1,color);
    17. x+=8;
    18. p++;
    19. }
    20. }
    复制代码

    实现显示效果的主程序为:
    1. void main(void)
    2. {
    3. Sys_Init();
    4. EnableInterrupts;
    5. MTIM1_Init();
    6. LED_Init();
    7. LED_Test();
    8. DelayMS(1);
    9. app_oled_init();
    10. Lcd_Init();
    11. LCD_Clear(RED);
    12. BACK_COLOR=BLACK;
    13. LCD_ShowString(10,16,"2021.3.6",WHITE);
    14. LCD_ShowString(10,32,"21:46:02",WHITE);
    15. while(1);
    16. }
    复制代码



    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1334 天

    [LV.10]以坛为家III

    88

    主题

    4290

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9022
    最后登录
    2024-3-29
    发表于 2021-3-8 20:55:44 | 显示全部楼层
    这个小芯片居然也可以玩起来屏幕啊~~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7086
    最后登录
    2023-4-20
     楼主| 发表于 2021-3-8 22:18:52 | 显示全部楼层
    jobszheng5 发表于 2021-3-8 20:55
    这个小芯片居然也可以玩起来屏幕啊~~

    尝试一下还是比较有意思的,遗憾的是我用的CW似乎有点问题,程序只能在16K以内下载,超过的话就不执行!
    辅助显示个图片啥的应该不成问题。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-3-29 19:22 , Processed in 0.127852 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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