標(biāo)題:
lcd1602液晶全屏移動匯編程序
[打印本頁]
作者:
daniu
時間:
2014-12-27 18:07
標(biāo)題:
lcd1602液晶全屏移動匯編程序
;=================================================================
;程序編寫人:蘭建文
;編寫地點:51hei培訓(xùn)機構(gòu)
;時間:6月2日下午星期二
;功能:本程序?qū)崿F(xiàn)液晶的信息功能
;=======================開始初始化================================
EN BIT P2.5 ;時鐘信號
RS BIT P3.4 ;決定要傳送的是命令還是數(shù)據(jù)
RW BIT P3.5 ;決定要讀還是寫,一般寫的時候多
SJ EQU P0 ;數(shù)據(jù)線
SHUZI EQU 30H
;========================系統(tǒng)程序==================================
ORG 0000H
JMP START
ORG 30H
START:MOV R0,#32
CALL CHUSHIHUA ;LCD初始化
MAIN:
CALL XIANSHI ;顯示
JMP MAIN
;======================初始化子程序===============================
;輸入:無
;輸出:無
;實現(xiàn)的功能:初始化LCD
;=================================================================
CHUSHIHUA:MOV SJ,#38H
ACALL ENABLE ;寫指令08H,設(shè)定LCD為16*2顯示,5*6點陣,8位數(shù)據(jù)接口
MOV SJ,#08H
ACALL ENABLE ;寫指令08H
MOV SJ,#01H
ACALL ENABLE ;寫指令01H,顯示清屏
MOV SJ,#06H
ACALL ENABLE ;寫指令06H,顯示光標(biāo)自動右移,整屏不移動
MOV SJ,#0CH
ACALL ENABLE ;寫指令0CH,開顯示,不顯示光標(biāo)
RET
;========================顯示子程序===============================
;輸入:
;輸出:"P0口"
;實現(xiàn)的功能:把數(shù)輸出到P0口顯示
;=================================================================
XIANSHI:
MOV SJ,#18H
CALL ENABLE
MOV SJ,#80H ;第一行顯示第一個字符的位置
CALL ENABLE ;調(diào)用寫指令
MOV DPTR,#TAB0;第一行表頭位置
CALL WRITE1 ;調(diào)用第一行寫子程序
CALL DELAY1
MOV SJ,#0C0H ;第二行位置
CALL ENABLE ;調(diào)用寫指令
MOV DPTR,#TAB1;第二行表頭位置
CALL WRITE1 ;調(diào)用第二行寫子程序
CALL DELAY1
DJNZ R0,L
MOV R0,#32
MOV R1,#10
LL:CALL DELAY
DJNZ R1,LL
L:RET
;======================寫命令時序程序=============================
;輸入:
;輸出:"P0口"
;實現(xiàn)的功能:寫時序
;=================================================================
ENABLE:CLR RS
CLR RW
SETB EN
CALL DELAY
CLR EN
RET
;==========================寫入子程序=============================
;輸入:
;輸出:"P0口"
;實現(xiàn)的功能:寫時序
;=================================================================
WRITE1:MOV SHUZI,#00H ;將30H清0
L1:MOV A,SHUZI ;把30H的值送到ACC
MOVC A,@A+DPTR ;查表取將顯示的數(shù)據(jù)并把要顯示的數(shù)送入ACC
CALL WRITE2 ;調(diào)用寫程序?qū)懭雴蝹字節(jié)
INC SHUZI ;將工作寄存器指針加一
MOV A,SHUZI ;把30H的內(nèi)容送到ACC
CJNE A,#10H,L1 ;ACC的值加到16后就返回到L1處
RET
;=======================寫數(shù)據(jù)時序子程序==========================
;輸入:
;輸出:
;實現(xiàn)的功能:寫數(shù)據(jù)
;=================================================================
WRITE2:MOV SJ,A ;寫單個字符
SETB RS ;寫數(shù)據(jù)到顯示端口
CLR RW ;寫數(shù)據(jù)時序
SETB EN
CALL DELAY
CLR EN
RET
;============================延時子程序============================
;輸入;無
;輸出: 無
;實現(xiàn)的功能:延時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"
;=========================程序結(jié)束=================================
END
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1