?? m1601.asm
字號:
; SMC1601接口程序(MCS51模擬口線方式)
;***************************************************************************
;* Title : Accessing to LCD-CONTROLLER *
;* Date : 2000.4.27 *
;* Support telephone: 0731-4167806,4167808(CHANGSHA SUNMAN) *
;* Support fax :0731-4167807 Support E-mail:sunman@public.cs.hn.cn *
;* Create by :褚建軍(chujianjun),朱長春(zhuchangchun) *
;* DESCRIPTION:This subroutine shows how to write data to LCD-CONTROLLER *
;***************************************************************************
;連線圖: *LCM---8031* *LCM---8031* *LCM------------8031*
; *DB0---P1.0* *DB4---P1.4* *RS-------------P3.0*
; *DB1---P1.1* *DB5---P1.5* *RW-------------P3.1*
; *DB2---P1.2* *DB6---P1.6* *E--------------P3.5* (參見說明書)
; *DB3---P1.3* *DB7---P1.7* *VLCD接10K可調電阻到GND*
;注:8031的晶振頻率為12MHz
;**************************************************************************
RSPIN EQU P3.0
RWPIN EQU P3.1
EPIN EQU P3.5
XPOS EQU 20H ;列方向地址指針(用于LCDPOS子程序)
ORG 0000H
JMP START
START: MOV SP,#60H
CLR EPIN
MAIN:
MOV R7,#'0' ;測試主程序
MN_PA: ;整屏循環顯示"0"到"9"及空格
CALL LCDRESET
MOV A,R7
CALL LCDFILL
CALL DELAY400MS
INC R7
MOV A,R7
CJNE A,#'9'+1,MN_PA
MOV A,#' '
CALL LCDFILL
CALL DELAY400MS
JMP MAIN
LCDFILL:
MOV B,A
MOV XPOS,#0 ;整屏顯示A中所代表字符
LFL_PA: MOV A,B
CALL LCDWRITE
INC XPOS
MOV A,XPOS
CJNE A,#16,LFL_PA
RET
LCDPOS: ;設置第XPOS個字符的DDRAM地址
PUSH ACC
ANL XPOS,#0FH ;X位置范圍(0到15)
MOV A,XPOS ;XPOS對應DDRAM地址
JNB ACC.3,LPS_LAX ;(前8個字符)X: 第0-----7個字符
ANL A,#07H ; DDRAM: 0-----7(十六進制)
ADD A,#40H ;(后8個字符)X: 第8----15個字符
; ; DDRAM: 40---47(十六進制)
LPS_LAX:ORL A,#80H ;設置DDRAM地址
CALL LCDWC
POP ACC
RET
LCDWRITE: ;定位寫字符子程序
CALL LCDPOS ;定位顯示地址
CALL LCDWD ;寫字符
RET
LCDRESET: ;初始化程序
CALL DELAY5MS ;延時15MS
CALL DELAY5MS
CALL DELAY5MS
MOV A,#38H ;顯示模式設置(不檢測忙信號)
CALL LCDWCN ;共三次
CALL DELAY5MS
MOV A,#38H
CALL LCDWCN
CALL DELAY5MS
MOV A,#38H
CALL LCDWCN
MOV A,#38H ;顯示模式設置(以后均檢測忙信號)
CALL LCDWC
MOV A,#08H ;顯示關閉
CALL LCDWC
MOV A,#01H ;顯示清屏
CALL LCDWC
MOV A,#06H ;顯示光標移動設置
CALL LCDWC
MOV A,#0CH ;顯示開及光標設置
CALL LCDWC
RET
LCDWC: ;送控制字子程序(檢測忙信號)
CALL WAITIDLE
LCDWCN: ;送控制字子程序(不檢測忙信號)
CLR RSPIN ;RS=0 RW=0 E=高脈沖
CLR RWPIN
MOV P1,A
SETB EPIN
NOP
CLR EPIN
RET
LCDWD: ;寫字符子程序
CALL WAITIDLE
SETB RSPIN ;RS=1 RW=0 E=高脈沖
CLR RWPIN
MOV P1,A
SETB EPIN
NOP
CLR EPIN
RET
WAITIDLE:
PUSH ACC ;正常讀寫操作之前必須檢測LCD控制器狀態
MOV P1,#0FFH
CLR RSPIN ;RS=0 RW=1 E=高電平
SETB RWPIN
SETB EPIN
WTD_PA: NOP ;DB7: 0 LCD控制器空閑
JB P1.7,WTD_PA ; 1 LCD控制器忙
CLR EPIN
POP ACC
RET
DELAY5MS:
MOV R1,#25 ;延時子程序(5MS)
DL5_PA: MOV R2,#100
DJNZ R2,$
DJNZ R1,DL5_PA
RET
DELAY400MS:
MOV R0,#20 ;延時子程序(400MS)
DL4_PA: MOV R1,#100
DL4_PB: MOV R2,#100
DJNZ R2,$
DJNZ R1,DL4_PB
DJNZ R0,DL4_PA
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -