在1602LCD中如何控制光标移位?

[复制链接]
 楼主| gaohq 发表于 2009-3-22 14:09 | 显示全部楼层 |阅读模式
1.一开始让光标在第二行第五位(0x80+0x40+5)处闪烁,想按一下KEY1光标就向右移一位继续闪,当移到第8位时就又返回到第5位,程序怎么写啊?<br />2.一开始让光标在第二行第五位(0x80+0x40+5)处闪烁,当按一下KEY2光标处的那个字符就从0到9循环加一并显示出来.怎么写?<br /><br />刚学会了1602的部分显示方法.如写指令,写数据,光标定位.
NYWJLWJH 发表于 2009-3-24 18:01 | 显示全部楼层

这个好办

1.闪烁:在某一位间断写入带光标和不带光标的字符,光标就闪烁了。如在第二行第五位先发送一个字符“A”,0.5S后再在此位写一个带光标的字符“A&quot;,<br />那么光标就闪烁了。<br />2.光标移位:设一个光标位置计数器,当按一下KEY1时计数器加一或减一,根据光标位置计数器的内容来选择需闪动光标的位,光标就可以移位了。<br /><br />3.一开始让光标在第二行第五位(0x80+0x40+5)处闪烁,当按一下KEY2光标处的那个字符就从0到9循环加一并显示出来.怎么写?<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;按一下KEY2让闪烁位中的内容加1,加到10后将其清零。<br />
 楼主| gaohq 发表于 2009-3-24 18:54 | 显示全部楼层

谢谢楼上.

目前读光标位置的命令还没调好.按楼主的法子可行但不具有通用性.<br />if(key3==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(key3==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(key3==0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//if(i&gt10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//i=8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//possit(0x40+i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_com(0x14);&nbsp;&nbsp;&nbsp;//此命令让光标右移一位.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=readgb_add();&nbsp;&nbsp;&nbsp;&nbsp;//读光标所处的位置.此命令不行.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i==0x4A)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=0x48;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;possit(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />=============================<br />uchar&nbsp;readgb_add()<br />{&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;add;<br />&nbsp;&nbsp;&nbsp;&nbsp;rs=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;rw=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;en=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;add=P0;<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;en=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;add=add&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;add;<br />}<br /><br />
bin362422 发表于 2009-8-23 19:52 | 显示全部楼层
看看数据手册
为什么要左移一位呢,读进来的状态D0~D7是当前地址指针的数据啊。

这儿为什么QQ截图粘不上啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

378

主题

3765

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部

378

主题

3765

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部