驱动液晶LM016L的问题,

南气子水 2011-07-09 07:53:23
为什么资料上说需要40us才能完成此过程,而我仅仅一个NOP,NOP不是一个机器周期吗,我用的是51,12MHZ,那就是1us了,就解决问题了,纠结中~~~
判断液晶是否处于忙状态,即判断BF的值。根据资料:
“当RS=0,R/W=1是执行读取的操作,这时候,LCM的忙碌标志BF将放置在数据总线上的D7位。。。整个执行过程需要40us。”
下面是我的代码:
CHECK_BF:

PUSH ACC

BUSY: CLR RS ;RS清零

SETB RW ;RW置为1

SETB EN ;使能EN

NOP ;注意延时(去掉就不可以正常工作,我纳闷为什么这里延时1US就OK了?)

MOV A,LCD ;LCD代表液晶的8位值(前有语句LCD EQU P2)

CLR EN

JB ACC.7,BUSY

CALL DELAY

POP ACC

RET

;============================================================

...全文
501 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
南气子水 2011-07-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 mhjerry 的回复:]
为什么资料上说需要40us才能完成此过程,而我仅仅一个NOP,NOP不是一个机器周期吗,我用的是51,12MHZ,那就是1us了,就解决问题了,纠结中~~~
判断液晶是否处于忙状态,即判断BF的值。根据资料:
“当RS=0,R/W=1是执行读取的操作,这时候,LCM的忙碌标志BF将放置在数据总线上的D7位。。。整个执行过程需要40us。”
下面是我的代码:

Assembly code……
[/Quote]
说的真好~
DISINHUI 2011-07-09
  • 打赏
  • 举报
回复
一般的参数都是安全操作的参数,留有余量。
不建议用延时来判断忙标志,代码稳定性差。应该循环查询忙标志,直到空闲为止。如果对LCD质量没有把握,可以开启WDT或者定时器,超时直接退出循环,报错。

27,512

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧