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