fm373bate.asm
来自「HT1621控制的段码液晶显示驱动。51汇编写的。」· 汇编 代码 · 共 259 行
ASM
259 行
LCDMM EQU 23H
DATAM EQU 25H
NO_C EQU 26H
NO_A EQU 27H
NO EQU 28H
COUNT EQU 29H
DATAB EQU P1.4
WRPIN EQU P1.5
CSPIN EQU P1.6
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP LINT0
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 初始化 ,01H开系统振荡 ,03HLCD ON,
; 28H BIAS1/2 DUTY1/4 ,04H 时基输出失效
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN:
SETB DATAB
SETB WRPIN
SETB CSPIN
MOV LCDMM,#01H
LCALL LCDCM
MOV LCDMM,#03H
LCALL LCDCM
MOV LCDMM,#28H
LCALL LCDCM
MOV LCDMM,#04H
LCALL LCDCM
LCALL CLRLCD
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCALL KEY
MOV NO,#1
LOOP: ACALL SENDDATA
INC NO
LCALL KEY
SJMP LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SENDDATA:
MOV A,NO
MOV DPTR,#TABA
MOVC A,@A+DPTR
MOV NO_A,A
MOV A,NO
MOV B,#02H
MUL AB
MOV NO_C,A
MOV DPTR,#TABCOM
MOV COUNT,#02H
LCALL SEND101
RET
;;;;;;;;;;;;;;;;清屏 ;;;;;;;;;;;;;;;;;;;
CLRLCD:
LCALL key
CLRLCD1: MOV DPTR, #TABC
MOV NO_A,#00H
MOV COUNT,#10H
MOV NO_C,#00H
LCALL SEND101
ret
;;;;;;;;;;;; 写100类命令ID ;;;;;;;;;;;;;;;;;;;;
LCDCM: CLR CSPIN
MOV A, #80H ;100类
MOV R7, #03H
LCM1: RLC A
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
SETB WRPIN
DJNZ R7, LCM1
MOV R7, #08H
MOV A, LCDMM
LCM2: RLC A
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
NOP
DJNZ R7, LCM2
NOP
NOP
NOP
NOP
CLR DATAB
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
NOP
NOP
SETB CSPIN
NOP
NOP
NOP
NOP
SETB DATAB
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 写101命令
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SEND101:
CLR CSPIN
MOV R7, #03H ;101
MOV A, #0A0H
LWR1:
RLC A
MOV DATAB,C
NOP
CLR WRPIN
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
DJNZ R7, LWR1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 连写模式,发送6位ADDRES数据 输入NO_A,NO_C,DPTR,COUNT
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV R7, #06H ;6 addres
MOV A, NO_A
LWR2: RLC A
MOV DATAB, C
NOP
NOP
NOP
NOP
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
NOP
SETB WRPIN
NOP
NOP
DJNZ R7, LWR2
;;;;;;;;;;; 发送表数据,8位;;;;;;;;;;;;;;;;;;;;;;;
MOV R2, COUNT
LOOP7: MOV A, NO_C ;
MOVC A, @A+DPTR
MOV R7, #08H
INC DPTR
LCM3: RLC A ;
MOV DATAB, C
NOP
CLR WRPIN
NOP
NOP
NOP
NOP
lcall DLY50
SETB WRPIN
NOP
DJNZ R7, LCM3
DJNZ R2, LOOP7
NOP
SETB CSPIN
NOP
SETB DATAB
NOP
RET
;;;;;;;;;;;;;;;;;; 按键,p2.0 ;;;;;;;;;;;;;;;;;
KEY:
MOV A,P2
JB ACC.0,KEY
CALL DLY50
CALL DLY50
JB ACC.0,KEY
RET
;;;;;;;;;;;;;;;;;;;; 延时;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DLY50:MOV R3,#01H
DL511:MOV R4,#0dH
DL522:MOV R6,#0AFH
DL533:DJNZ R6,DL533
DJNZ R4,DL522
DJNZ R3,DL511
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LINT0:NOP
NOP
NOP
NOP
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TABA:
DB 00H,04H,08H,0CH,10H,14H,18H,1CH ;;;;;;;;;;
TABCOM:
DB 85H,51H,05H,00H,86H,31H,87h,21h,07H,60H ;
DB 81H,61H,83H,71H,85H,00H,87H,71H,81H,61H
tabC :
DB 00H,00H,00H,00H,00H,00H,00H,00H ;
DB 00H,00H,00H,00H,00H,00H,00H,00H
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?