打印

1602显示程序不知什么地方有问题,求助

[复制链接]
2806|6
手机看帖
扫描二维码
随时随地手机跟帖
楼主
lost1421| | 2011-11-4 13:44 | 显示全部楼层 回帖奖励 |倒序浏览
本帖最后由 lost1421 于 2011-11-4 13:47 编辑

楼主使用的4位数据总线与LCD1602进行通讯,在进行数据交换时,要注意数据的正确性。
你的代码:
;=======================
;1602写指令
;=======================
LCD_COM
  BCF  PORTA,RS           ;选择指令寄存器
  BCF  PORTA,RW          ;选择写
  MOVF  COM,W
  MOVWF PORTB           ;送命令字到RB口
  BSF  PORTA,EN           ;使能电平置高,命令字传送
  NOP
  BCF  PORTA,EN           ;恢复使能线电平
  RETURN
;======================
;1602写数据指令
;======================
LCD_DAT
  BSF PORTA,RS           ;选择数据寄存器
  BCF PORTA,RW          ;选择写
  MOVF  DAT,W            ;将数据送到B口
  MOVWF PORTB
  BSF PORTA,EN           ;使能线电平置高,数据传送
  NOP
  BCF  PORTA,EN
  RETURN
-----------
在引脚电平变化后,加几个NOP,不知道你的频率是多少,有可能LCD内部不能及时处理你的信号。

另外LCD的初始化的命令字好像和我以前使用时不一样:
        lcd_write_cmd (0x28);        // 2 lines, 5x8 character matrix
        lcd_write_cmd (0x0C);        // Display ctrl: Disp=ON, Curs/Blnk=OFF
        lcd_write_cmd (0x06);        // Entry mode:  Move right,  no shift
        lcd_write_cmd(0x80);        // Set DDRAM address counter to 0

使用特权

评论回复
沙发
lost1421| | 2011-11-4 13:45 | 显示全部楼层
楼主使用的4位数据总线与LCD1602进行通讯,在进行数据交换时,要注意数据的正确性。
你的代码:
;=======================
;1602写指令
;=======================
LCD_COM
  BCF  PORTA,RS           ;选择指令寄存器
  BCF  PORTA,RW          ;选择写
  MOVF  COM,W
  MOVWF PORTB           ;送命令字到RB口
  BSF  PORTA,EN           ;使能电平置高,命令字传送
  NOP
  BCF  PORTA,EN           ;恢复使能线电平
  RETURN
;======================
;1602写数据指令
;======================
LCD_DAT
  BSF PORTA,RS           ;选择数据寄存器
  BCF PORTA,RW          ;选择写
  MOVF  DAT,W            ;将数据送到B口
  MOVWF PORTB
  BSF PORTA,EN           ;使能线电平置高,数据传送
  NOP
  BCF  PORTA,EN
  RETURN
-----------
在引脚电平变化后,加几个NOP,不知道你的频率是多少,有可能LCD内部不能及时处理你的信号。

另外LCD的初始化的命令字好像和我以前使用时不一样:
        lcd_write_cmd (0x28);        // 2 lines, 5x8 character matrix
        lcd_write_cmd (0x0C);        // Display ctrl:Disp=ON,Curs/Blnk=OFF
        lcd_write_cmd (0x06);        // Entry mode: Move right, no shift
        lcd_write_cmd(0x80);        // Set DDRAM address counter to 0

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则