llw15873974865 2025-04-12 21:33 采纳率: 0%
浏览 114

lcd1602只显示一排方块

img


第二行是想显示存放的数据,理想效果是:“time: 12190059”结果每个地方显示16个像素,而不是数字


unsigned char DS1302_Time[]={12,19,00,59};

void LCD_DisplayChar(unsigned char row, unsigned char col, unsigned char *str) { 
    unsigned char address; 
    if (row == 0) 
        address = 0x80 + col; 
    else 
        address = 0xC0 + col; 
   LCD1602_WriteCMD(address); 
    while (*str) { 
        LCD1602_WriteDAT(*str++); 
    } 
} 
void main()
{                            
    int b=9;
    LCD1602_Init();            //初始化液晶
    LCD1602_Display(0x80,"Fingerprint Test",0,16);     //液晶开机显示界面
  Uart_Init();            //初始化串口
    Key_Init();                //初始化按键
     Delay_Ms(200);          //延时500MS,等待指纹模块复位
    Device_Check();               //校对指纹模块是否接入正确,液晶做出相应的提示
    Delay_Ms(1000);            //对接成功界面停留一定时间
    while(1)
    {
        /**************进入主功能界面****************/
        LCD1602_Display(0x80," match add clear",0,16);     //第一排显示搜索指纹
        LCD1602_Display(0xc0,"time: ",0,6);     //添加和删除指纹
        LCD1602_Display(0xc0+6,DS1302_Time,0,16);
  • 写回答

3条回答 默认 最新

  • 紫雾凌寒 新星创作者: 人工智能技术领域 2025-04-12 21:34
    关注

    让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek

    如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞

    1. 关键点分析:
      - LCD1602显示乱码,显示为方块而不是预期的数字。这很可能是由于字符编码、数据传输或初始化设置不正确导致的。
      - 需要正确设置LCD1602的工作模式、初始化它,并将时间数据正确转换为字符形式发送到LCD1602进行显示。
    2. 解决方案:
      - 首先,确保LCD1602已经正确初始化。初始化代码示例(假设使用的是常见的4位模式):
    #include <LiquidCrystal.h>
    
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    
    void setup() {
      lcd.begin(16, 2);
      lcd.print("Initializing...");
      delay(1000);
      lcd.setCursor(0, 0);
      lcd.print("                ");
      lcd.setCursor(0, 1);
      lcd.print("                ");
    }
    
    void loop() {
      // 后续显示代码
    }
    
    • 然后,将时间数据转换为字符形式。以DS1302_Time数组为例,转换代码如下:
    char timeStr[9];
    sprintf(timeStr, "time: %02d%02d%02d%02d", DS1302_Time[0], DS1302_Time[1], DS1302_Time[2], DS1302_Time[3]);
    
    • 最后,将转换后的字符串发送到LCD1602进行显示:
    lcd.setCursor(0, 1);
    lcd.print(timeStr);
    
    1. 多种解决方案优缺点:
      - 方案一:检查硬件连接
      • 优点:如果硬件连接松动或错误,通过检查硬件可以直接解决问题。
      • 缺点:需要打开设备检查连接,比较耗时,且如果硬件本身损坏可能无法解决。
      • 方案二:检查初始化代码
      • 优点:初始化设置错误是常见问题,通过仔细检查初始化代码能快速定位和解决。
      • 缺点:可能忽略其他潜在问题,比如字符编码设置等。
      • 方案三:检查字符编码和数据处理
      • 优点:能全面排查数据处理和编码过程中的问题,确保数据正确发送到LCD1602
      • 缺点:相对复杂,需要对字符编码和数据处理有较深入理解。
    2. 总结:
      - 要解决LCD1602只显示一排方块的问题,首先要确保硬件连接正常,然后仔细检查初始化代码是否正确。在数据处理方面,要将数值正确转换为字符形式,并按LCD1602的显示要求进行发送。通过上述步骤,一般能解决显示异常的问题。

    以上代码基于Arduino平台,不同平台的LCD1602库使用方法可能略有不同,但基本思路是一致的。

    希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。

    评论

报告相同问题?

问题事件

  • 修改了问题 4月12日
  • 创建了问题 4月12日