📄 12864汇编程序.asm
字号:
;LCD12864 汇编源程序
;=================NAME: HANDSET=====================
LCDSCLK BIT 0C2H
LCDSI BIT 0C1h
LCDA0 BIT P2.4 ;命令与数据选择位
LCDRES BIT P2.5 ;复位
LCDCS1 BIT 0C3h ;片选
ST_PAGE EQU 37H ;起始显示页
COL_MSB EQU 38H ;起始显示列(高位)
COL_LSB EQU 39H ;起始显示列(低位)
TD_DATA EQU 40H
TD_NUM EQU 41H
;******************************************************
ORG 0000H
AJMP MAIN
ORG 0100H
;---------------------------------
MAIN:
MOV SP,#060H
LCALL LCDINI ;初始化
NOP
NOP
LCALL CLR_SCR ;清屏
NOP
NOP
NOP
NOP
;MOV TD_DATA,#2fH
MOV TD_NUM,#128
LCALL TDIS
NOP
NOP
SJMP $
TDIS:
MOV COL_LSB,#10H ;起始显示列(低位)
MOV COL_MSB,#00H ;起始显示列(高位)
MOV ST_PAGE,#0B0H ;页B0写入2F
MOV TD_DATA,#2fH
LCALL DIS_1SL
NOP
MOV ST_PAGE,#0B1H
MOV TD_DATA,#22H
LCALL DIS_1SL
NOP
MOV ST_PAGE,#0B2H
MOV TD_DATA,#0f5H
LCALL DIS_1SL
NOP
MOV ST_PAGE,#0B3H
MOV TD_DATA,#52H
LCALL DIS_1SL
NOP
MOV ST_PAGE,#0B4H
MOV TD_DATA,#11H
LCALL DIS_1SL
NOP
MOV ST_PAGE,#0B5H
MOV TD_DATA,#40H
LCALL DIS_1SL
NOP
MOV ST_PAGE,#0B6H
MOV TD_DATA,#25H
LCALL DIS_1SL
NOP
MOV ST_PAGE,#0B7H
MOV TD_DATA,#2fH
LCALL DIS_1SL
RET
;NOP
; SJMP $
;======================================================
DIS_1SL:
CLR LCDA0 ;送命令
MOV A,ST_PAGE ;选中页
LCALL LCD_SEND
MOV A,COL_MSB ;定义页的起始列(包括高,底列)
LCALL LCD_SEND
MOV A,COL_LSB
LCALL LCD_SEND
SETB LCDA0 ;送数据
MOV A,TD_NUM
MOV R4,A
TDIS0:
MOV A,TD_DATA ;写满128个字节
LCALL LCD_SEND
DJNZ R4,TDIS0
RET
;=======================================================
;清屏子程序
CLR_SCR: ;清屏
MOV ST_PAGE,#0B0H ;第0页地址
CSCR0:
CLR LCDA0 ;送命令
MOV A,ST_PAGE
LCALL LCD_SEND
MOV A,#10H ;起始显示列(低位)
LCALL LCD_SEND
MOV A,#00H ;起始显示列(高位)
LCALL LCD_SEND
SETB LCDA0 ;送数据
MOV R6,#128
CSCR1:
MOV A,#00H ;页全部清零
LCALL LCD_SEND
DJNZ R6,CSCR1 ;送0循环128次
CLR C ;B0-B7页全部清零
INC ST_PAGE
MOV A,ST_PAGE
SUBB A,#0B8H
JC CSCR0
RET
;========================================================
;LCD初始化
LCDINI:
CLR LCDCS1 ;选择LCM
SETB LCDRES ;复位
CLR LCDRES
NOP
NOP
SETB LCDRES
CLR LCDA0 ;A0=1.送控制命令
MOV A,#0E2H ;软件复位
LCALL LCD_SEND
MOV A,#0A2H ;BIAS=1/7[A2H=1/9偏压]
LCALL LCD_SEND
MOV A,#0A0H ;ADC
LCALL LCD_SEND
MOV A,#0C0H ;Common Output Status Slect=normal
LCALL LCD_SEND
MOV A,#026H ;Set on-chip resistance factor for Vlc1 Voltage regulator
LCALL LCD_SEND
MOV A,#081H ;Electronic volume mode set command(first byte)
LCALL LCD_SEND
MOV A,#20H ;Second byte
LCALL LCD_SEND
MOV A,#02FH ;Power contrl set [Vb Vr Vf]=111
LCALL LCD_SEND
;LCALL DELAY1 ;delay 1s
MOV A,#0AFH ;Display ON
LCALL LCD_SEND
MOV A,#0A4H ;Normal display mode
LCALL LCD_SEND
RET
;----------------------------------------------------
;-----------------------------向LCD传送1个字节的数据[IN:A],寄存器只用到R7
LCD_SEND:
MOV R7,#8
LSEND1:
CLR LCDSCLK
RLC A ;带进位位循环左移
MOV LCDSI,C
SETB LCDSCLK
DJNZ R7,LSEND1
CLR LCDSCLK
RET
;----------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -