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