📄 12864zk串.asm
字号:
; SMG12864ZK串行接口程序
;***************************************************************************
;连线图:*LCM---8031* *LCM---8031* *LCM------------8031* *LCM----------8031 *
; *CS----P3.1* *STD---P3.3* *SCLK-----------P3.0* *PSB----------P3.4 *
; *RESET----------P3.5 (详见说明书) *
;注:8031的晶振频率为12MHz *
;***************************************************************************
;MODUL SMG112864ZK
;RS=CS=CS
;R/W=STD=STD
;E=SCLK=SCLK
PSB BIT P3.4
RES BIT P3.5
CS BIT P3.1
STD BIT P3.3 ;串行数据线
SCLK BIT P3.0 ;串行时钟线
START EQU 30H ;起始字节
COM EQU 31H ;命令/数据
HDATA EQU 32H ;命令/数据字节高位
LDATA EQU 33H ;命令/数据字节低位
ASC EQU 34H ;ASCII数据单元
XPOS EQU 35H
YPOS EQU 36H
ORG 0000H
MAIN:
MOV SP,#60H
CLR RES
SETB RES ; 可以直接接电源VDD
SETB CS ; 可以直接接电源VDD
CLR PSB ; 可以直接接地VSS
CALL LCDRESET ; 模块系统初始化
CALL HZKDIS ; 显示汉字子程序
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#80H ; 设定显示位置
CALL LCDWRITE
MOV START,#0FAH ;写数据 (11111010)
MOV COM,#10H ;显示字符
CALL LCDWRITE
MOV COM,#11H ;显示字符
CALL LCDWRITE
MOV COM,#1EH ;显示字符
CALL LCDWRITE
MOV COM,#1FH ;显示字符
CALL LCDWRITE
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#34H ;扩充功能设定
CALL LCDWRITE
MOV COM,#05H ;反白选择
CALL LCDWRITE
CALL DL40MS ;延时
CALL DL40MS
CALL DL40MS
MOV A,#055H ;绘图方式下写55数据
CALL LCDFILL
CALL CLEAR ;清屏
JMP MAIN
CLEAR: ;清屏子程序
MOV A,#00H
CALL LCDFILL
RET
LCDRESET:
LCALL DL1MS ;延时等待内部复位
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#30H ;使用基本指令集
LCALL LCDWRITE
MOV COM,#0CH
LCALL LCDWRITE ;整体显示ON
MOV COM,#01H ;清屏
LCALL LCDWRITE
LCALL DL1MS
MOV COM,#06H ;显示右移
LCALL LCDWRITE
LCALL DL1MS
RET
LCDWRITE: ;模块写入子程序
MOV A,COM ;送待发数据命令A
ANL A,#0F0H ;屏蔽低4位
MOV HDATA,A ;将高4位送HDATA单元
MOV A,COM ;取低4位
SWAP A ;高低4位互换
ANL A,#0F0H
MOV LDATA,A ;将低4位送LDATA单元
MOV A,START ;取起始字节
LCALL SENDBIT ;发送
LCALL DL1MS ;延时1ms
MOV A,HDATA
LCALL SENDBIT
LCALL DL1MS
MOV A,LDATA
LCALL SENDBIT
LCALL DL1MS
RET
HZKDIS: ;显示汉字子程序
MOV R5,#2
MOV START,#0F8H ;写入命令(11111000)
MOV COM,#80H ;设定显示位置
LCALL LCDWRITE
MOV DPTR,#TAB ;指向文字型代码表
MOV A,#00H ;取汉字代码低位
DIS_1: MOV R6,#8 ;每行八个汉字
DIS_2: MOV START,#0FAH ;写数据 (11111010)
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR ;取汉字代码高位
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR
CALL DL40MS
DJNZ R6,DIS_2 ;未显示完则继续
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#90H ;第二行地址
CALL LCDWRITE
DJNZ R5,DIS_1
MOV R5,#2
MOV START,#0F8H ;写入命令(11111000)
MOV COM,#88H ;第三行地址
CALL LCDWRITE
DIS_4: MOV R6,#08H
DIS_3:
MOV START,#0FAH ;写数据 (11111010)
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR ;取汉字代码高位
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR
CALL DL40MS
DJNZ R6,DIS_3 ;未显示完则继续
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#98H ;第四行地址
CALL LCDWRITE
DJNZ R5,DIS_4 ;遇“0”结束显示
RET ;写完两行则结束
LCDFILL: ;绘图
MOV R4,A
MOV XPOS,#0
MOV YPOS,#0
MOV START,#0F8H
MOV COM,#30H ;重新选择基本指令?
CALL LCDWRITE
MOV COM,#01H ;清屏
CALL LCDWRITE
MOV COM,#36H ;扩充功能设定
CALL LCDWRITE
LCD_A1:
MOV YPOS,#0
LCD_A2:
MOV START,#0F8H
MOV A,XPOS ;设定绘图首地址
ADD A,#80H ; X坐标
MOV COM,A
CALL LCDWRITE
MOV A,YPOS ;Y坐标
ADD A,#80H
MOV B,A
MOV COM,A
CALL LCDWRITE
MOV START,#0FAH
MOV COM,R4
CALL LCDWRITE
CALL LCDWRITE
INC YPOS
MOV A,B
CJNE A,#87H,LCD_A2 ;最后一列地址为87H
INC XPOS
MOV A,XPOS
CJNE A,#20H,LCD_A1 ;最后行地址为80H+20H=0A0H
MOV XPOS,#0
LCD_A3:MOV YPOS,#0
LCD_A4:
MOV START,#0F8H
MOV A,XPOS ;设定绘图首地址
ADD A,#80H ; X坐标
MOV COM,A
CALL LCDWRITE
MOV A,YPOS ;Y坐标
ADD A,#80H
MOV B,A
MOV COM,A
CALL LCDWRITE
MOV START,#0FAH
MOV COM,R4
CALL LCDWRITE
CALL LCDWRITE
INC YPOS
MOV A,B
CJNE A,#8FH,LCD_A4 ;最后一列地址为8FH
INC XPOS
MOV A,XPOS
CJNE A,#20H,LCD_A3 ;最后行地址为80H+20H=0A0H
RET
SENDBIT: ;串行字节数据发送子程序
MOV R7,#08H ;发送8位
SEND_1: RLC A
MOV STD,C ;数据送数据线
CLR SCLK ;产生同步时钟
SETB SCLK
DJNZ R7,SEND_1 ;未发送完8位继续
RET
DL1MS: ;延时子程序
PUSH 00H ;0.1MS
PUSH 01H
PUSH 02H
MOV R2,#01H
WA_PA: MOV R0,#0FH
WA_PB: MOV R1,#0FH
DJNZ R1,$
DJNZ R0,WA_PB
DJNZ R2,WA_PA
POP 02H
POP 01H
POP 00H
RET
NOP
RET
DL40MS: ;延时子程序
PUSH 00H ;40MS
PUSH 01H
PUSH 02H
MOV R2,#01H
DL_PA: MOV R0,#0FFH
DL_PB: MOV R1,#0FFH
DJNZ R1,$
DJNZ R0,DL_PB
DJNZ R2,DL_PA
POP 02H
POP 01H
POP 00H
RET
NOP
NOP
NOP
RET
TAB:
DB "中文图形 "
DB "----太阳人电子--"
DB "--液晶显示模块--"
DB "电话0731-4167808"
DB 00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -