1回答

0收藏

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

#板卡评测 #板卡评测 3512 人阅读 | 1 人回复 | 2021-08-08

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 编译与上传
图2 运行效果

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

藝石

发表于 2021-12-23 22:48:46 | 只看该作者

源代码在哪里下载
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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