查看: 2280|回复: 1

[评测分享] 【ESP32-E Arduino开发板】LCD5110显示屏驱动

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2021-8-8 00:26:28 | 显示全部楼层 |阅读模式
    分享到:
    LCD5110显示屏原是诺基亚手机上使用的一款显示屏,该屏采用SPI接口工作,共有8个引脚。
    在使用时,除电源引脚外,其它引脚与开发板的连接关系为:
    DC  --- D2
    RST ---  D3
    CS  ---  GND
    SCL -- SCL
    SDA -- SDA
    LEDB--  A4
    故引脚的相关定义为:
    #define LED_PIN D9
    #define DC D2
    #define RST D3
    LCD5110的初始化函数为:
    1. void LCD5110_Init(void)
    2. {
    3. delay(1600);
    4. digitalWrite(RST, LOW);
    5. digitalWrite(RST, HIGH);
    6. LCD_write_byte(0x21, 0);
    7. LCD_write_byte(06, 0);
    8. LCD_write_byte(0x13, 0);
    9. LCD_write_byte(0xc8, 0);
    10. LCD_write_byte(0x20, 0);
    11. LCD_write_byte(0x0c, 0);
    12. LCD_write_byte(Y_Page_Addr, 0);
    13. LCD_write_byte(X_Col_Addr, 0);
    14. LCD_clr_scr();
    15. }
    复制代码

    相应的清屏函数为:
    1. void LCD_clr_scr(void)
    2. {
    3. unsigned int i;
    4. LCD_write_byte(X_Col_Addr, 0);
    5. LCD_write_byte(Y_Page_Addr,0);
    6. for(i = 504; i; i--)  LCD_write_byte(0x00, 1);
    7. }
    复制代码

    发送字节数据的函数为:
    1. void LCD_write_byte(unsigned char wbyte, unsigned char dat_cmd)
    2. {
    3. unsigned char i;
    4. digitalWrite(CS, LOW);
    5. if(dat_cmd)     digitalWrite(DC, HIGH);
    6. else    digitalWrite(DC, LOW);
    7. for(i = 8; i; i--)
    8. {
    9. if(wbyte & 0x80) digitalWrite(SDA, HIGH);
    10. else     digitalWrite(SDA, LOW);
    11. digitalWrite(SCL, LOW);
    12. wbyte <<= 1;
    13. digitalWrite(SCL, HIGH);
    14. }
    15. digitalWrite(CS, HIGH);
    16. }
    复制代码

    定位显示字符的函数为:
    1. void LCD_printc(unsigned char x, unsigned char y, unsigned char c_dat)
    2. {
    3. unsigned char i, j;
    4. c_dat -= 32;
    5. x <<= 3;    //8
    6. y <<= 1;    //16
    7. for(j = 0; j < 2; j++)
    8. {
    9. LCD_pos_byte(x, (y + j));
    10. for(i = 0; i < 8; i++)   LCD_write_byte(Font_code[c_dat][8 * j + i],1);
    11. }
    12. }
    复制代码

    实现显示效果的配置程序和循环程序为:
    1. void setup() {
    2. pinMode(LED_PIN, OUTPUT);
    3. pinMode(SCL,OUTPUT);
    4. pinMode(SDA,OUTPUT);
    5. pinMode(DC, OUTPUT);
    6. pinMode(RST,OUTPUT);
    7. pinMode(CS,OUTPUT);
    8. pinMode(LEDB, OUTPUT);
    9. digitalWrite(LEDB, HIGH);  // LCD_LED_High();
    10. LCD5110_Init();
    11. LCD_printc(0, 0, 'F');
    12. LCD_printc(1, 0, 'i');
    13. LCD_printc(2, 0, 'r');
    14. LCD_printc(3, 0, 'e');
    15. LCD_printc(4, 0, 'B');
    16. LCD_printc(5, 0, 'e');
    17. LCD_printc(6, 0, 'e');
    18. LCD_printc(7, 0, 't');
    19. LCD_printc(8, 0, 'l');
    20. LCD_printc(9, 0, 'e');
    21. LCD_printc(0, 1, 'E');
    22. LCD_printc(1, 1, 'S');
    23. LCD_printc(2, 1, 'P');
    24. LCD_printc(3, 1, '3');
    25. LCD_printc(4, 1, '2');
    26. LCD_printc(5, 1, '-');
    27. LCD_printc(6, 1, 'E');
    28. LCD_printc(0, 2, 'j');
    29. LCD_printc(1, 2, 'i');
    30. LCD_printc(2, 2, 'n');
    31. LCD_printc(3, 2, 'g');
    32. LCD_printc(4, 2, 'l');
    33. LCD_printc(5, 2, 'i');
    34. LCD_printc(6, 2, 'x');
    35. LCD_printc(7, 2, 'i');
    36. LCD_printc(8, 2, 'x');
    37. LCD_printc(9, 2, 'i');
    38. }

    39. void loop() {
    40. digitalWrite(LED_PIN, HIGH);
    41. delay(500 );
    42. digitalWrite(LED_PIN, LOW);
    43. delay(500 );
    44. }
    复制代码

    经编译与上传,其结果如图1所示,
                                  
    1.jpg
    图1 编译与上传
    2.jpg
    图2 运行效果

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-26 19:36
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2021-12-23 22:48:46 | 显示全部楼层
    源代码在哪里下载
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 04:17 , Processed in 0.124466 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.