程序2.使LCD显示字符串
功能说明:LCD显示字符串。开机后,从液晶屏第一行第二个位置处开始显示字符串“Happy new year!”共计15个字符。电路接线同上。
(1)主程序流程图下图所示
附图(a) 附图(b)
附图3 LCM1602显示字符串的程序流程图
(2).主程序
;********89C51引脚定义********
RS BIT P3.0 ;
RW BIT P3.1 ;
E BIT P3.2 ;
LCD EQU P2 ; P2口作为数据口
;*********
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
ACALL INTIAL;调用LCM初始化子程序
MOV LCD,#80H;屏幕第一行的第一个地址
ACALL WRCOM
MOV DPTR,#LINE1 ;Happy new year!
MOV R0,#15 ;R0中放的是要显示字符串是长度,此处字符串长度为15
ACALL DISP
JMP $ ;
INTIAL:
MOV LCD,#00111000B; 设置数据长度为8位,2行,5*7点阵
ACALL WRCOM
MOV LCD,#00001111B; 显示器开,光标允许闪烁
ACALL WRCOM
MOV LCD,#00000110B; 文字不动,光标右移
ACALL WRCOM
RET
;查表显示子程序
DISP:
MOV R1,#0
LOOP:
MOV A,R1
MOVC A,@A+DPTR
MOV LCD,A
INC R1
ACALL WRDATA
DJNZ R0,LOOP
RET
;写命令子程序
WRCOM:
CLR RS ; RS=0,选择指令寄存器
CLR RW ;RW=0,选择写模式
CLR E ; E=0,禁止读/写LCM
ACALL CHECKBUSY ;查忙
SETB E ; E=1,允许读/写LCM
RET
;查忙子程序
CHECKBUSY:
MOV LCD,#0FFH ; 此时不接受外来指令
CLR RS ; RS=0,选择指令寄存器
SETB RW ;RW=1,选择读模式
CLR E ; E=0,禁止读/写LCM
NOP ;
SETB E ;E=1,允许读/写LCM
JB LCD.7,CHECKBUSY ;若忙则循环等待
RET
;写数据子程序
WRDATA:
SETB RS ; 选择数据寄存器 附图4 LCD循环显示程序流程
CLR RW ; RW=0,选择写模式
CLR E ; E=0,禁止读/写LCM
ACALL CHECKBUSY ;查忙
SETB E ; E=1,允许读/写LCM
RET
;清屏子程序
CLS:
MOV LCD,#00000001B
ACALL WRCOM
RET
;延时2S子程序
DEL1:
MOV R5,#100
D1:MOV R6,#100
D2:MOV R7,#100
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
;
LINE1: DB 'Happy new year!'
END
程序3.LCD循环显示
功能说明:LCD循环显示字符串。首先在第一行
显示“Hello!”,
在第二行显示“Welcome to SNUT”,再过2s后
第一行显示“Nothing seek,”
在第二行显示“nothing find.”(无所求则无
所获);再过2s后第一行显示“Cease to
struggle”’
在第二行显示“and you cease to live.”
( 生命不止,奋斗不息)
不断循环显示以上辣行句子
主程序:
RS BIT P3.0 ;
RW BIT P3.1 ;
E BIT P3.2 ;
LCD EQU P2
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
ACALL INITAL;调用LCM初始化子程序
LOOP1:
MOV LCD,#80H;屏幕第一行的第一个地址
ACALL WRCOM
MOV DPTR,#LINE1 ;hello,everyone!
MOV R0,#15 ;R0中放的是要显示字符串是长度,
ACALL DISP ; 此处字符串长度为15,
;以下同样的道理
MOV LCD,#0C0H;屏幕第二行的第一个地址
ACALL WRCOM
MOV DPTR,#LINE2 ;welcome to snut!
MOV R0,#16 ;
ACALL DISP
ACALL DEL1
LCALL CLS
;******************
MOV LCD,#80H;屏幕第一行的第1个地址
ACALL WRCOM
MOV DPTR,#LINE3 ;nothing seek,
MOV R0,#13 ;
ACALL DISP
www.751com.cn
MOV LCD,#80H;屏幕第一行的第1个地址
ACALL WRCOM
MOV DPTR,#LINE5 ; Cease to struggle
MOV R0,#18 ;
ACALL DISP
MOV LCD,#0C0H;屏幕第二行的第一个地址
ACALL WRCOM
MOV DPTR,#LINE6 ; and cease to live
MOV R0,#17 ;
ACALL DISP
ACALL DEL1
ACALL CLS
LJMP LOOP1
;LCM初始化子程序
INITAL:
MOV LCD,#00000001B;清屏并复位光标
ACALL WRCOM
MOV LCD,#00111000B;设置8行,5列,5*7点阵
ACALL WRCOM
MOV LCD,#00001110B;显示器开,不允许光标闪烁
ACALL WRCOM
MOV LCD,#00000110B;文字不动,光标自动右移
ACALL WRCOM
RET
;查表显示子程序
<< 上一页 [11] [12] [13] [14] [15] 下一页