打印
[ZLG-MCU]

我的LCD1602为什么只能显示一行阿?我已经弄了很多天了

[复制链接]
3556|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eagle109|  楼主 | 2007-8-9 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
sanxinwork| | 2007-8-9 16:53 | 只看该作者

原因可能还是1602没使用正确

重点注意:
确定设好了显示第二行时地址码
可以在第一行的基础上+0x40;也可:
WriteCommandLCM(0xc0, 1);    //输入第二行首个字符的首地址

同时还要注意是否关显示了:

WriteCommandLCM(0x08,1); //关闭显示 
WriteCommandLCM(0x0e,1); //开显示 

真不行的话在显第二行之前,先执行
WriteCommandLCM(0x01,1); //清屏光标归位.

总之,你在单片机上1602正常,只是你程序的问题没有暴露出来而已。重新再看看吧。祝你成功

使用特权

评论回复
板凳
sanxinwork| | 2007-8-9 17:01 | 只看该作者

回复1602

顺便问一下:你知道现在LPC2200系列各芯片价格吗?如LPC2210、2212、2290的零售价,前面我用得大多是LPC213X。想用用LPC2200系列
  谢谢

使用特权

评论回复
地板
sanxinwork| | 2007-8-10 00:00 | 只看该作者

1602是否读忙信号了

WriteCommandLCM(0x38,1); //准确意思是:

显示模式设置,开始要求每次检测忙信号 工作方式:总线为8位,显2行,5 X 7

ARM7的速度快,你是否每次在对1602操作时,是否检测了1602为不忙时再进行下一次操作.

使用特权

评论回复
5
sanxinwork| | 2007-8-10 00:09 | 只看该作者

检测忙标志的方法

下面是我51检测忙 的程序段:其中在前面定义了:
#define LCM_Data  P1   //(P)
#define Busy    0x80 //用于检测LCM状态字中的Busy标识 

unsigned char ReadStatusLCM(void) 

 LCM_Data=0xFF;  
 LCM_RS=0;// 
 LCM_RW=1;// 
 LCM_E=0;//
 LCM_E=0;// 
 LCM_E=1; 
 while (LCM_Data & Busy); //检测忙信号   P1.7对应忙标志位
 return(LCM_Data); 


如果为忙,此子函数不返回



//在写指令时 根据需要检测忙 
void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测 

 if (BuysC) ReadStatusLCM(); //根据需要检测忙 
 LCM_Data = WCLCM; 
 LCM_RS = 0; 
 LCM_RW = 0;  
 LCM_E = 0; 
 LCM_E = 0; 
 LCM_E = 1; 
 



   有技术问题欢迎与郑州三芯电子设计工作室联系. HTTP://www.sanxinwork.net

使用特权

评论回复
6
eagle109|  楼主 | 2007-8-10 13:22 | 只看该作者

问题依旧

我加了判忙了,还是不行

我的问题是不能写入0x38这条指令,反正只要在开双行显示那位写入1就不行了

数据的0x38可以,其他的指令和数据都正常

使用特权

评论回复
7
myway| | 2007-8-11 10:18 | 只看该作者

我的网站上有demo

你自己去下载吧

使用特权

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

本版积分规则

19

主题

57

帖子

1

粉丝