这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 驱动液晶LM016L的问题

共6条 1/1 1 跳转至

驱动液晶LM016L的问题

菜鸟
2011-07-08 09:32:07     打赏
判断液晶是否处于忙状态,即判断BF的值。根据资料:
“当RS=0,R/W=1是执行读取的操作,这时候,LCM的忙碌标志BF将放置在数据总线上的D7位,而LCM的地址计数器内容也将放置在数据总线上的D6~D0位,分别为A6 A5 A4 A3 A2 A1 A0。整个执行过程需要40us。”

下面是我的代码:
CHECK_BF: PUSH ACC 
BUSY: CLR RS 
SETB RW 
SETB EN 
NOP ;注意延时 
MOV A,LCD
 CLR EN 
JB ACC.7,BUSY 
CALL DELAY 
POP ACC RET ;============================================================ 

问题是:为什么资料上说需要40us才能完成此过程,而我仅仅一个NOP,NOP不是一个机器周期吗,我用的是51,12MHZ,那就是1us了。这样就可以正常显示了。
我把这个NOP去掉就不可以正常显示。



关键词: 驱动     液晶     LM016L     问题    

菜鸟
2011-07-08 20:42:21     打赏
2楼
为什么资料上执行过程需要40us,而我一个1us的延时就解决问题了?纠结中~~~

高工
2011-08-03 14:18:33     打赏
3楼
一个nop为1个指令周期,主要用于精确定时或者延时

nop指令的作用:
1)就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。(一般用来内存地址偶数对齐,比如有一条指令,占3字节,这时候使用nop指令,cpu 就可以从第四个字节处读取指令了。)
2)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟;-->具体应该说是占用了3个时钟脉冲!
3)i/o传输时,也会用一下 nop,等待缓冲区清空,总线恢复;
4)清除由上一个算术逻辑指令设置的flag位;
5)破解:)对于原程序中验证部分使用nop来填充,使验证失效;

菜鸟
2011-09-16 12:42:30     打赏
4楼
当RS=0,R/W=1是执行读取的操作 , 你读取正常吗?
液晶显示是执行写操作,你读取正常与否和你的显示正常不正常没关系。

菜鸟
2011-09-16 12:52:32     打赏
5楼

你的液晶显示正常说明你的液晶不忙,如果你频繁的给液晶刷屏,液晶就会处于忙状态,
而你又仅仅延时了1us,不能保证立刻判断出液晶忙,刷屏显示就可能失效

按资料说的改成40us,不要只看表面现象。暂时显示正常不代表什么条件都不出错


菜鸟
2014-03-02 15:10:13     打赏
6楼

谁有驱动液晶LM016L的程序

 


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]