为什么LCD1602无法显示超过127的数呢

[复制链接]
1085|8
 楼主| 刘刘牛 发表于 2020-4-27 16:50 来自手机 | 显示全部楼层 |阅读模式
为什么我的LCD1602无法显示超过127的数呢
tianxj01 发表于 2020-4-27 16:58 | 显示全部楼层
谁说的?
1602字符模式,单行可以显示16个字符,你准备显示多少数据?1亿够了不?才9位字符好吧。
 楼主| 刘刘牛 发表于 2020-4-27 17:02 来自手机 | 显示全部楼层
超过127的数字就显示乱码了,我也不知道为什么
 楼主| 刘刘牛 发表于 2020-4-27 17:04 来自手机 | 显示全部楼层
tianxj01 发表于 2020-4-27 16:58
谁说的?
1602字符模式,单行可以显示16个字符,你准备显示多少数据?1亿够了不?才9位字符好吧。 ...

超过127的数字就显示乱码了,我也不知道为什么
tyw 发表于 2020-4-27 17:14 | 显示全部楼层
本帖最后由 tyw 于 2020-4-27 17:15 编辑



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
Cjy_JDxy 发表于 2020-4-27 17:32 | 显示全部楼层
你是不是定义的char型数据
改成unsigned char
tianxj01 发表于 2020-4-27 17:49 | 显示全部楼层
刘刘牛 发表于 2020-4-27 17:04
超过127的数字就显示乱码了,我也不知道为什么

什么叫超过127?难道你是直接用8位内码来显示想显示的数据?
1602,是字符显示器,字符0-9是对应的字符内码。
给你看个1602的核心驱动吧:
  1. // **************************** //
  2. // ***八位数据分2次写入 LCD *** //
  3. // **************************** //
  4. void LCD_WriteData (unsigned char Data)
  5.   {
  6.       LCD_Busy();                   // 测试LCD空闲
  7.       SET_LCD_OUT;                  // LCD 端口定义为输出
  8.       LCD_WD_PORT=(Data >>4);         // 输出高四位数据到LCD数据端口
  9.       LCD_CLEAR_RW() ;              // 设置LCD为写模式
  10.       LCD_SET_RS();                 // 设置LCD为数据模式
  11.       LCD_SET_EN();                  // 激活片选,写数据到LCD
  12.       asm("nop");
  13.       asm("nop");
  14.       asm("nop");
  15.       asm("nop");
  16.       LCD_CLEAR_EN();                // 关闭LCD片选
  17.       LCD_WD_PORT=(Data&0x0f);        // 出低四位数据到LCD数据端口
  18.       LCD_CLEAR_RW() ;              // 设置LCD为写模式
  19.       LCD_SET_RS();                 // 设置LCD为数据模式
  20.       LCD_SET_EN();                  // 激活片选,写数据到LCD
  21.       asm("nop");
  22.       asm("nop");
  23.       asm("nop");
  24.       asm("nop");
  25.       LCD_CLEAR_EN();                // 关闭LCD片选
  26.   }
  1. // ****************************************************************** //
  2. // *** Display a single character, at the current cursor location *** //
  3. // ****************************************************************** //
  4. void LCD_DisplayCharacter (char Char)
  5.   {
  6.       LCD_WriteData (Char);
  7.   }
  8. // ********************************************************************* //
  9. // *** Display a string at the specified row and column, using FLASH *** //
  10. // ********************************************************************* //
  11. void LCD_DisplayString_F (char row, char column , unsigned char __flash *string)
  12.   {
  13.       LCD_Cursor (row, column);
  14.       while (*string)
  15.         {
  16.             LCD_DisplayCharacter (*string++);
  17.         }
  18.   }
  19. // ******************************************************************* //
  20. // *** Display a string at the specified row and column, using RAM *** //
  21. // ******************************************************************* //
  22. void LCD_DisplayString (char row, char column , unsigned char *string)
  23.   {
  24.       LCD_Cursor (row, column);
  25.       while (*string)
  26.           LCD_DisplayCharacter (*string++);
  27.   }


调用过程:
定义数据:
__flash unsigned char txt_eq13[]="  Bass-boost 1  ";
显示命令:
LCD_DisplayString_F(2,1,txt_eq13);
然后显示就是:  Bass-boost 1  
ningling_21 发表于 2020-4-27 22:07 | 显示全部楼层
刘刘牛 发表于 2020-4-27 17:04
超过127的数字就显示乱码了,我也不知道为什么

ASC码惹的祸
chunyang 发表于 2020-4-29 16:23 | 显示全部楼层
显然楼主编程错误,注意数制的定义别搞错了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

12

帖子

0

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