[通用8051核FLASH系列] 【芯圣SDK-HC89F0541测评】+LCD5110屏驱动

[复制链接]
1606|13
 楼主| jinglixixi 发表于 2020-7-10 08:21 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-24 14:17 编辑

LCD5110显示屏是一款显示内容相对丰富,能耗相对比较低的显示器件,为实现显示功能它与SDK-HC89F0541开发板的连接关系为:
SEC  ---  P2_4
RST  ---  P3_5         
DC    ---  P3_4  
SDI   ---  P3_3   
SCK  ---  P1_6  
LED  ---  P1_7  

为便于编程所作的输出高低电平的宏定义为:
#define LCD_LED_High() LED=1   

#define LCD_CLK_H        SCK=1
#define LCD_CLK_L        SCK=0

#define LCD_DIN_H       SDI=1
#define LCD_DIN_L       SDI=0

#define LCD_DC_H        DC=1
#define LCD_DC_L        DC=0

#define LCD_RST_H      RST=1
#define LCD_RST_L      RST=0

#define LCD_CS_H        SEC=1
#define LCD_CS_L        SEC=0

配置各引脚输出功能的函数为:
  1. void LCD_GPIO_Cogfig(void)
  2. {
  3.            P2M4 = 0xC2;
  4.            P3M5 = 0xC2;
  5.            P3M4 = 0xC2;
  6.            P3M3 = 0xC2;
  7.            P2M1 = 0xC2;
  8.            P1M7 = 0xC2;
  9.            LED=1;
  10. }

单字符显示函数为:
  1. void LCD_printc(unsigned char x, unsigned char y, unsigned char c_dat)
  2. {
  3.          unsigned char i, j,u;
  4.          u =c_dat-32;
  5.          x <<= 3;            
  6.          y <<= 1;            
  7.          for(j = 0; j < 2; j++)
  8.          {
  9.                    LCD_pos_byte(x, (y + j));
  10.                    for(i = 0; i < 8; i++)
  11.                    LCD_write_dat(Font_code[u][8 * j + i]);         
  12.          }
  13. }

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

  6. void LCD5510_Init(void)
  7. {
  8.          LCD_GPIO_Cogfig();
  9.          mdelay(800);
  10.          LCD_reset_hard;                                
  11.          LCD_write_cmd(0x21);            
  12.          LCD_write_cmd(0x06);            
  13.          LCD_write_cmd(0x13);            
  14.          LCD_write_cmd(0xc8);            
  15.          LCD_write_cmd(0x20);            
  16.          LCD_write_cmd(0x0c);            
  17.          LCD_write_cmd(Y_Page_Addr);     
  18.          LCD_write_cmd(X_Col_Addr);        
  19.          LCD_clr_scr();                           
  20. }

实现演示效果的主程序如下:
  1. void main(void)
  2. {
  3.          while((CLKCON&0x20)!=0x20);
  4.          CLKSWR = 0x51;
  5.          while((CLKSWR&0xC0)!=0x40);
  6.          CLKDIV = 0x01;
  7.          P0M0 = 0xC2;
  8.          LED4 = 0;
  9.          LCD5510_Init();
  10.          LCD5510_Init();
  11.          while(1)
  12.          {
  13.            LED4 =0;
  14.            LCD_prints(0,0,"abcdefghijk");
  15.            LCD_prints(0,1,"lmnopqrstuv");
  16.            LCD_prints(0,2,"wxyz{|}~");
  17.            delay();
  18.            delay();
  19.            delay();
  20.            LED4 = 1;
  21.            LCD_prints(0,0,"ABCDEFGHIJK");
  22.            LCD_prints(0,1,"LMNOPQRSTUV");           
  23.            LCD_prints(0,2,"WXYZ");
  24.            delay();
  25.            delay();
  26.            delay();
  27.          }
  28.         
  29. }

1.png
显示小写字符串

2.png
显示大写字符串
lzbf 发表于 2020-8-3 16:27 | 显示全部楼层
Nokia 5110?      
houjiakai 发表于 2020-8-3 16:27 | 显示全部楼层
性价比很高的LCD显示器——诺基亚5110LCD
youtome 发表于 2020-8-3 16:27 | 显示全部楼层
做个5110串口屏  
cemaj 发表于 2020-8-3 16:28 | 显示全部楼层
            
jimmhu 发表于 2020-8-3 16:28 | 显示全部楼层
是自己建立字符串库吗?   
 楼主| jinglixixi 发表于 2020-8-4 08:03 | 显示全部楼层
本帖最后由 jinglixixi 于 2020-8-4 08:19 编辑
jimmhu 发表于 2020-8-3 16:28
是自己建立字符串库吗?

是的,LCD5110屏自身不带字符库。
wowu 发表于 2020-8-7 13:50 | 显示全部楼层
楼主辛苦了
xiaoqizi 发表于 2020-8-7 13:51 | 显示全部楼层
感谢楼主分享
木木guainv 发表于 2020-8-7 13:52 | 显示全部楼层
外接的显示屏?
磨砂 发表于 2020-8-7 13:53 | 显示全部楼层
代码很详细
晓伍 发表于 2020-8-7 13:54 | 显示全部楼层
接口很匹配不用飞线吗
 楼主| jinglixixi 发表于 2020-8-7 15:56 | 显示全部楼层
 楼主| jinglixixi 发表于 2020-8-7 15:57 | 显示全部楼层
晓伍 发表于 2020-8-7 13:54
接口很匹配不用飞线吗

可以不飞线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

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