标题:
lcd1602液晶全屏移动汇编程序
[打印本页]
作者:
daniu
时间:
2014-12-27 18:07
标题:
lcd1602液晶全屏移动汇编程序
;=================================================================
;程序编写人:兰建文
;编写地点:51hei培训机构
;时间:6月2日下午星期二
;功能:本程序实现液晶的信息功能
;=======================开始初始化================================
EN BIT P2.5 ;时钟信号
RS BIT P3.4 ;决定要传送的是命令还是数据
RW BIT P3.5 ;决定要读还是写,一般写的时候多
SJ EQU P0 ;数据线
SHUZI EQU 30H
;========================系统程序==================================
ORG 0000H
JMP START
ORG 30H
START:MOV R0,#32
CALL CHUSHIHUA ;LCD初始化
MAIN:
CALL XIANSHI ;显示
JMP MAIN
;======================初始化子程序===============================
;输入:无
;输出:无
;实现的功能:初始化LCD
;=================================================================
CHUSHIHUA:MOV SJ,#38H
ACALL ENABLE ;写指令08H,设定LCD为16*2显示,5*6点阵,8位数据接口
MOV SJ,#08H
ACALL ENABLE ;写指令08H
MOV SJ,#01H
ACALL ENABLE ;写指令01H,显示清屏
MOV SJ,#06H
ACALL ENABLE ;写指令06H,显示光标自动右移,整屏不移动
MOV SJ,#0CH
ACALL ENABLE ;写指令0CH,开显示,不显示光标
RET
;========================显示子程序===============================
;输入:
;输出:"P0口"
;实现的功能:把数输出到P0口显示
;=================================================================
XIANSHI:
MOV SJ,#18H
CALL ENABLE
MOV SJ,#80H ;第一行显示第一个字符的位置
CALL ENABLE ;调用写指令
MOV DPTR,#TAB0;第一行表头位置
CALL WRITE1 ;调用第一行写子程序
CALL DELAY1
MOV SJ,#0C0H ;第二行位置
CALL ENABLE ;调用写指令
MOV DPTR,#TAB1;第二行表头位置
CALL WRITE1 ;调用第二行写子程序
CALL DELAY1
DJNZ R0,L
MOV R0,#32
MOV R1,#10
LL:CALL DELAY
DJNZ R1,LL
L:RET
;======================写命令时序程序=============================
;输入:
;输出:"P0口"
;实现的功能:写时序
;=================================================================
ENABLE:CLR RS
CLR RW
SETB EN
CALL DELAY
CLR EN
RET
;==========================写入子程序=============================
;输入:
;输出:"P0口"
;实现的功能:写时序
;=================================================================
WRITE1:MOV SHUZI,#00H ;将30H清0
L1:MOV A,SHUZI ;把30H的值送到ACC
MOVC A,@A+DPTR ;查表取将显示的数据并把要显示的数送入ACC
CALL WRITE2 ;调用写程序写入单个字节
INC SHUZI ;将工作寄存器指针加一
MOV A,SHUZI ;把30H的内容送到ACC
CJNE A,#10H,L1 ;ACC的值加到16后就返回到L1处
RET
;=======================写数据时序子程序==========================
;输入:
;输出:
;实现的功能:写数据
;=================================================================
WRITE2:MOV SJ,A ;写单个字符
SETB RS ;写数据到显示端口
CLR RW ;写数据时序
SETB EN
CALL DELAY
CLR EN
RET
;============================延时子程序============================
;输入;无
;输出: 无
;实现的功能:延时5MS
;==================================================================
DELAY:
MOV R6,#4
L7:MOV R5,#100
DJNZ R5,$
DJNZ R6,L7
RET
DELAY1:MOV R7,#10
L9:MOV R3,#25
L8:MOV R4,#100
DJNZ R4,$
DJNZ R3,L8
DJNZ R7,L9
RET
;==============================表的制作============================
TAB0:DB "WWW#SsONEEDU#COMWWW#STsNEEDU#COM"
TAB1:DB "MCU-20-L-JIANWENMCU-20-L-JIANWEN"
;=========================程序结束=================================
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1