找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

LCD1602首地址数字显示异常 附单片机代码

查看数: 2214 | 评论数: 13 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-3-29 23:54

正文摘要:

#1:同样的代码,仿真显示正常 #2:只要首地址写入数字,就显示不对;比如首地址写入1,那么硬件上显示的为q;若首地址写入0,那么硬件上显示的为p; #3:请大哥们帮忙分析一下,抱拳谢过! --发送数据 void ...

回复

ID:577162 发表于 2023-3-31 01:00
zhuls 发表于 2023-3-31 00:49
按你这个说法是字库坏了,不过一般 来说,很少坏成这样。如果只是坏了一个字符,倒可以补救:用自定义字符 ...

只有80H的地址坏了;其他都是好的。我从80H开始写,就没一点问题;不折腾了,感谢评论!
ID:69038 发表于 2023-3-31 00:49
按你这个说法是字库坏了,不过一般 来说,很少坏成这样。如果只是坏了一个字符,倒可以补救:用自定义字符的方式补上就是麻烦了点
ID:384109 发表于 2023-3-30 19:54
应该是查忙而不是延时
ID:577162 发表于 2023-3-30 19:26
lkc8210 发表于 2023-3-30 16:43
LCD_Write_command(); 和 LCD_Write_data(); 的代码呢?

疏忽了,这就补齐;麻烦帮我分析一下
  1. void LCD_Write_data(uchar dat)
  2. {
  3.     LCD_E = 0;
  4.     LCD_RS = 1;
  5.     LCD_RW = 0;
  6.     LCD_DATA = dat;//4线接P0口高四位
  7.     //delay_n40us(5);
  8.     Lcd1602_Delay1ms(1);
  9.     LCD_E = 1;
  10. //delay_n40us(10);
  11.     Lcd1602_Delay1ms(5);
  12.     LCD_E = 0;
  13.                 LCD_DATA=dat<<4;//写入低四位
  14.             Lcd1602_Delay1ms(1);

  15.             LCD_E = 1;
  16. //delay_n40us(10);
  17.     Lcd1602_Delay1ms(5);
  18.     LCD_E = 0;
  19.        
  20. }
  21. void LCD_Write_command(uchar cmd)
  22. {
  23.     LCD_E = 0;
  24.     LCD_RS = 0; //0指令 1数据
  25.     LCD_RW = 0; //0写入 1读出
  26.     LCD_DATA = cmd;
  27.    
  28.     Lcd1602_Delay1ms(1);
  29.        
  30.     LCD_E = 1; //允许

  31.     Lcd1602_Delay1ms(5);
  32.     LCD_E = 0; //1->0写命令
  33.         LCD_DATA=cmd<<4;
  34.         Lcd1602_Delay1ms(1);
  35.             LCD_E = 1; //允许

  36.     Lcd1602_Delay1ms(5);
  37.     LCD_E = 0; //1->0写命令
  38.        
  39. }
复制代码
ID:577162 发表于 2023-3-30 18:10
zhuls 发表于 2023-3-30 17:16
楼主你确定:仿真是8位并口的,实物是串行SPI的。。两个不同的东东,代码能一样?
PS :可能我看错了,你这 ...

我这是4口的;仿真也是用的P0口高四位
ID:69038 发表于 2023-3-30 17:16
楼主你确定:仿真是8位并口的,实物是串行SPI的。。两个不同的东东,代码能一样?
PS :可能我看错了,你这是4位并口的?
ID:161164 发表于 2023-3-30 16:43
LCD_Write_command(); 和 LCD_Write_data(); 的代码呢?
ID:577162 发表于 2023-3-30 09:19
rayin 发表于 2023-3-30 07:47
清屏指令0x01 之后的延时5ms加大到20ms试试.

好的;晚上我试试,tks
ID:577162 发表于 2023-3-30 07:58
如果写入的值>=40H;显示正常
如果写入的值<=40H;显示关系如下:
30H  0---------->70H    p(相差40H)
31H  1---------->71H    q
.
.
.
40H  @---------->40H   @(正常)
ID:577162 发表于 2023-3-30 07:53
反复琢磨,发现有这么一个规律;写入的值与实际显示值相差40H
PS:如果写入的第一个值的十六进制>=40H,则显示正常;比如写入@(40H)A(41H)
        写入值                           实际显示值
hex     ascii                     hex          ascii
2f         /                         6f             o
30        0                         70             p
31        1                         71             q
32        2                         72             r
ID:517951 发表于 2023-3-30 07:47
清屏指令0x01 之后的延时5ms加大到20ms试试.

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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