[应用方案] 【NuMaker-M471测评】LCD5110屏显示

[复制链接]
5028|15
 楼主| jinglixixi 发表于 2021-8-7 23:50 | 显示全部楼层 |阅读模式
LCD5110液晶屏原是一款用于手机的显示屏,将它与M471开发板所配置的Arduino接口相配合,无需连线即可直接实现显示功能,其显示效果如图1所示。
                              
1.jpg
图1 显示效果
该显示屏与开发板的连接关系为:
1.VCC---VREF
2.GND---VSS
3.SCE---PA2
4.RST--- PA1
5.D/C--- PA0
6.SDIN--- PA3
7.SCLK--- PA4
8.LED+--- PA5
2.jpg
图2 Arduino接口
为实现LCD5110屏的显示驱动,其引脚的配置函数为:
  1. void LCD_GPIO_Cogfig(void)
  2. {
  3. GPIO_SetMode(PA, BIT5, GPIO_MODE_OUTPUT);
  4. GPIO_SetMode(PA, BIT4, GPIO_MODE_OUTPUT);
  5. GPIO_SetMode(PA, BIT3, GPIO_MODE_OUTPUT);
  6. GPIO_SetMode(PA, BIT2, GPIO_MODE_OUTPUT);
  7. GPIO_SetMode(PA, BIT1, GPIO_MODE_OUTPUT);
  8. GPIO_SetMode(PA, BIT0, GPIO_MODE_OUTPUT);
  9. PA5=1;
  10. PA2=0;
  11. }

相应的以I/O口模拟SPI接口发送数据的函数为:
  1. void LCD_write_byte(unsigned char wbyte, unsigned char dat_cmd)
  2. {
  3. unsigned char i;
  4. if(dat_cmd)
  5. {
  6. PA0=1;
  7. }
  8. else
  9. {
  10. PA0=0;
  11. }
  12. for(i = 8; i; i--)  
  13. {
  14. if(wbyte & 0x80)
  15. {
  16. PA3=1;
  17. }
  18. else
  19. {
  20. PA3=0;
  21. }
  22. PA4=0;
  23. wbyte <<= 1;   
  24. TIMER_Delay(TIMER0, 1);
  25. PA4=1;
  26. }
  27. }

LCD5110屏的初始化函数为:
  1. void LCD5510_Init(void)
  2. {
  3. LCD_GPIO_Cogfig();
  4. TIMER_Delay(TIMER0, 800000);//mdelay(800);
  5. PA1=0;
  6. TIMER_Delay(TIMER0, 2);
  7. PA1=1;
  8. LCD_write_cmd(0x21);
  9. LCD_write_cmd(0x06);
  10. LCD_write_cmd(0x13);
  11. LCD_write_cmd(0xc8);
  12. LCD_write_cmd(0x20);
  13. LCD_write_cmd(0x0c);
  14. LCD_write_cmd(Y_Page_Addr);
  15. LCD_write_cmd(X_Col_Addr);
  16. LCD_clr_scr();
  17. }

实现清屏的函数为:
  1. void LCD_clr_scr(void)
  2. {
  3. unsigned int i;
  4. LCD_write_cmd(X_Col_Addr);
  5. LCD_write_cmd(Y_Page_Addr);
  6. for(i = 504; i; i--) LCD_write_dat(0x00);
  7. }

实现字符串显示的函数为:
  1. void LCD_prints(unsigned char x, unsigned char y, unsigned char *s_dat)
  2. {
  3. while(*s_dat && x < 10)
  4. {
  5. LCD_printc(x++, y, *s_dat);
  6. s_dat++;
  7. }
  8. }

而实现显示效果的主程序则是:
  1. int main()
  2. {
  3. SYS_Init();
  4. GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);
  5. GPIO_SetMode(PH, BIT4, GPIO_MODE_INPUT);
  6. PB14 = 1;
  7. LCD5510_Init();
  8. LCD_prints(0,0,"M471 TEST");
  9. LCD_prints(0,1,"LCD5510 ");
  10. LCD_prints(0,2,"jinglixixi");         
  11. while(1)
  12. {
  13. PB14 = 0;
  14. TIMER_Delay(TIMER0, 500000);
  15. PB14 = 1;
  16. TIMER_Delay(TIMER0, 500000);
  17. }
  18. }

有了LCD5110屏的显示驱动函数,再有信息显示或数据显示的任务交由它就可以了。
huquanz711 发表于 2021-8-9 08:23 来自手机 | 显示全部楼层
这个当年神机的显示屏居然还有用
carpsnow 发表于 2021-8-9 15:53 | 显示全部楼层
不错,手里的存货都用起来了
哈哈哈
 楼主| jinglixixi 发表于 2021-8-10 00:46 | 显示全部楼层
huquanz711 发表于 2021-8-9 08:23
这个当年神机的显示屏居然还有用

有一阵以为损毁了,后来无意发现它还能用。
 楼主| jinglixixi 发表于 2021-8-10 00:47 | 显示全部楼层
carpsnow 发表于 2021-8-9 15:53
不错,手里的存货都用起来了
哈哈哈

还好,还能用。
mintspring 发表于 2023-2-19 17:30 | 显示全部楼层
这个屏幕都是拆机件吗
 楼主| jinglixixi 发表于 2023-2-19 17:37 | 显示全部楼层
mintspring 发表于 2023-2-19 17:30
这个屏幕都是拆机件吗

以前网上买的
vivilyly 发表于 2023-4-16 21:51 | 显示全部楼层
LCD5110 是一种低功耗液晶显示屏,通常用于单片机等嵌入式系统中。
claretttt 发表于 2023-4-18 13:47 | 显示全部楼层
LCD5110 显示屏的使用需要一定的硬件和软件基础,例如 SPI 接口、图形绘制、字体库等方面的知识。
sdlls 发表于 2023-4-18 15:17 | 显示全部楼层
lcd5110引脚din是什么意思
kkzz 发表于 2023-4-18 15:24 | 显示全部楼层
LCD5110屏还是比较好用的,且大家也多在用。
mattlincoln 发表于 2023-4-18 16:06 | 显示全部楼层
protues 7.5 有LCD5110么?
dspmana 发表于 2023-4-18 16:27 | 显示全部楼层
求一个NOKIA 5110 LCD驱动电路模块
 楼主| jinglixixi 发表于 2023-4-18 20:20 | 显示全部楼层
sdlls 发表于 2023-4-18 15:17
lcd5110引脚din是什么意思

SDIN是数据引脚
xiaoyaodz 发表于 2023-4-18 22:29 | 显示全部楼层
通过 SPI 总线向 PCD8544 芯片发送初始化命令,以初始化显示屏。
huahuagg 发表于 2023-9-27 19:56 | 显示全部楼层
这个屏幕很经典。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部