求助一个关于1602液晶的程序修改

[复制链接]
3270|3
 楼主| 夏之剑客 发表于 2007-3-15 21:30 | 显示全部楼层 |阅读模式
谁能帮忙告诉我为什么这个程序每次显示&quot;welcome!&nbsp;SHNU<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;www.shnu.edu.cn&quot;完以后,又会反复重新显示,如何才能使它显示完一次以后一直保持这个状态,初学液晶程序,我用的是1602的,谁能帮忙下啊,表示感谢阿!!!!!!!!&nbsp;<br />;***************************************************<br />;FILE:LED1<br />;NAME:1602液晶显示器基础<br />;date:2007年3月1日<br />;function;开机时显示&quot;welcome!&nbsp;SHNU<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;www.shnu.edu.cn&quot;<br />;***************************************************<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RS&nbsp;BIT&nbsp;P3.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;寄存器选择,1表示数据寄存器,0表示指令寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RW&nbsp;BIT&nbsp;P3.5&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;;RS&nbsp;RW同时为低表示写指令,RS低RW高则是读忙信号,反之写入数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;E&nbsp;&nbsp;BIT&nbsp;P3.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;液晶显示使能,高到低时执行命令<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OUTPUT&nbsp;EQU&nbsp;P0&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;0000h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ajmp&nbsp;main<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;0040h<br />main:&nbsp;mov&nbsp;sp,#60h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;output,#01h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清屏<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;enable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;每次操作都要保存<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;output,#38h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;功能选择<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;enable&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;output,#0fh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;开显示幕<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;enable<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;output,#06h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;表示光标向右移,屏幕上文字不移动<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;enable&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;output,#80h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;设定第一行起始地址<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;enable<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dptr,#table1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;display<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;output,#0c0h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;enable&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dptr,#table2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;display<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;output,#0c0h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;表示光标停在第二行第一个'0'这里&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret<br />;-----------------写入程序寄存器--------------------------<br />enable:clr&nbsp;rs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;写指令到寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clr&nbsp;rw<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clr&nbsp;e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;先禁止,在第二次进入的时候就有效了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;delay<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setb&nbsp;e<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret<br />;------------------写入数据寄存器,显示-------------------<br />display:&nbsp;clr&nbsp;rs0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clr&nbsp;rs1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r1,#16&nbsp;&nbsp;&nbsp;;每行显示十六个字<br />loop1:&nbsp;&nbsp;&nbsp;clr&nbsp;a&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movc&nbsp;a,@a+dptr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;output,a<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clr&nbsp;rw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;写数据到寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setb&nbsp;rs<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clr&nbsp;e<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lcall&nbsp;delay<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setb&nbsp;e<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;dptr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;djnz&nbsp;r1,loop1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;&nbsp;&nbsp;&nbsp;<br />;----------------延时程序---------------------------------<br />delay:mov&nbsp;r7,#248&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;50ms延时<br />loop2:mov&nbsp;r6,#100<br />loop3:djnz&nbsp;r6,loop3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;djnz&nbsp;r7,loop2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret<br />table1:db&nbsp;'&nbsp;&nbsp;welcome!SHNU&nbsp;&nbsp;'<br />table2:db&nbsp;'www.shnu.edu.cn&nbsp;'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
安步当车 发表于 2007-3-16 12:31 | 显示全部楼层

啊哦

自己动脑筋啊
zhaoyu2005 发表于 2007-3-16 15:08 | 显示全部楼层

你都没有告诉单片机停在哪里,它怎么停?

在需要停的地方加上<br />AJMP&nbsp;&nbsp;$
 楼主| 夏之剑客 发表于 2007-3-17 12:30 | 显示全部楼层

回复

想出来了,和三楼的想法一样啊,但是还是很感谢阿
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

11

帖子

0

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