📄 x9313wp.asm
字号:
;LCD_TAB 查要LCD显示的32个值,放入LCDDA1开始的后32个地址里
;LCD_SETUP LCD上电时功能设置
;LCD_READY 把LCDDA1开始地址后的32值给LCD显示
X9313_INC BIT P2.5 ;加/减计数脉冲输入端,下降沿触发
X9313_UD BIT P2.4 ;加/减计数控制端,U/ 脚输入高电平时为加计数,输入低电平时为减计数
X9313_CS BIT P3.0 ;片选输入端,当 端输入低电平时器件被选中。当 端为高电平时, 端的上升沿
;可使当前计数器的值被贮存在非易失性存贮器中。当 端为低电平时, 端的上升沿
;不能贮存数据,而是返回等待。
OK_UP BIT 20H.0
OK_DOWN BIT 20H.1
LCD_RS BIT P3.5 ;LCD的数据(H)、指令(L)寄存器选择位
LCD_RW BIT P2.6 ;LCD的读(H)、写(L)选择位
LCD_E BIT P2.7 ;片选信号,下降沿触发
MODE BIT P2.0
SETUP BIT P2.1
UP BIT P2.2
DOWN BIT P2.3
LCD_DA EQU P0 ;LCD数据传输线
YANS EQU 21H
SOUND_NUM EQU 22H
TAB_DA EQU 23H
LCD1_1 EQU 24H ;LCD数据1
LCD1_2 EQU 25H ;LCD数据2
LCD1_3 EQU 26H ;LCD数据3
LCD1_4 EQU 27H ;LCD数据4
LCD1_5 EQU 28H ;LCD数据5
LCD1_6 EQU 29H ;LCD数据6
LCD1_7 EQU 2AH ;LCD数据7
LCD1_8 EQU 2BH ;LCD数据8
LCD1_9 EQU 2CH ;LCD数据9
LCD1_10 EQU 2DH ;LCD数据10
LCD1_11 EQU 2EH ;LCD数据11
LCD1_12 EQU 2FH ;LCD数据12
LCD1_13 EQU 30H ;LCD数据13
LCD1_14 EQU 31H ;LCD数据14
LCD1_15 EQU 32H ;LCD数据15
LCD1_16 EQU 33H ;LCD数据16
LCD2_1 EQU 34H ;LCD数据17
LCD2_2 EQU 35H ;LCD数据18
LCD2_3 EQU 36H ;LCD数据19
LCD2_4 EQU 37H ;LCD数据20
LCD2_5 EQU 38H ;LCD数据21
LCD2_6 EQU 39H ;LCD数据22
LCD2_7 EQU 3AH ;LCD数据23
LCD2_8 EQU 3BH ;LCD数据24
LCD2_9 EQU 3CH ;LCD数据25
LCD2_10 EQU 3DH ;LCD数据26
LCD2_11 EQU 3EH ;LCD数据27
LCD2_12 EQU 3FH ;LCD数据28
LCD2_13 EQU 40H ;LCD数据29
LCD2_14 EQU 41H ;LCD数据30
LCD2_15 EQU 42H ;LCD数据31
LCD2_16 EQU 43H ;LCD数据32
START: ;显示产品型号
MOV A,R2
CJNE A,#55H,ON_POWER
LJMP TWO_POWER
ON_POWER:
MOV R2,#55H
MOV SOUND_NUM,#00
TWO_POWER:
LCALL LCD_SETUP ;LCD上电设置
MOV DPTR,#WORKS_MODE
LCALL LCD_TAB
NEXT:
LCALL SOUND_ASCII
LCALL LCD_READY
NEXT1:
NOP
NOP
JB SETUP,NEXT1
NEXT2:
NOP
JB UP,IF_X9313_DEC
INC SOUND_NUM
MOV A,SOUND_NUM
CJNE A,#32,X9313
MOV SOUND_NUM,#31
LJMP X9313
IF_X9313_DEC:
JB DOWN,NEXT1
DEC SOUND_NUM
MOV A,SOUND_NUM
CJNE A,#0FFH,X9313
MOV SOUND_NUM,#00
X9313:
CLR X9313_CS ;选中
MOV YANS,#38
CLR X9313_UD ;执行减
X9313_RET: ;X9313清0
SETB X9313_INC
LCALL SP_YANS
CLR X9313_INC
LCALL SP_YANS
DJNZ YANS,X9313_RET
;***********************经过38次减已到00
X9313_RUN:
MOV A,SOUND_NUM
JZ X9313_END
SETB X9313_UD ;执行加
MOV YANS,A
WRITE_X9313:
SETB X9313_INC
LCALL SP_YANS
CLR X9313_INC
LCALL SP_YANS
DJNZ YANS,WRITE_X9313
X9313_END:
LCALL SP_YANS
SETB X9313_INC ;准备存
LCALL SP_YANS
SETB X9313_CS ;存入
LJMP NEXT
LCD_SETUP:
CLR LCD_RS
CLR LCD_RW
SETB LCD_E
MOV LCD_DA,#30H ;1
CLR LCD_E
MOV R0,#5
LCD_5MS:
LCALL LCD_WHITE_1MS
DJNZ R0,LCD_5MS
SETB LCD_E
MOV LCD_DA,#30H ;2
CLR LCD_E
MOV R0,#240
W100US:
DJNZ R0,W100US ;DELAY 100US
SETB LCD_E
MOV LCD_DA,#30H ;3
CLR LCD_E
LCALL LCD_WHITE_40US ;DELAY 40US
SETB LCD_E
MOV LCD_DA,#38H ;8位接口2行显示
CLR LCD_E
LCALL LCD_WHITE_40US ;DELAY 40US
SETB LCD_E
MOV LCD_DA,#08H ;5 DIS OFF关显示
CLR LCD_E
LCALL LCD_WHITE_40US
SETB LCD_E
MOV LCD_DA,#01H ;6 CLEARS ALL DISPLAY AND RETURN 清屏及显示有移位
CLR LCD_E
MOV R0,#10
LCD_10MS:
LCALL LCD_WHITE_1MS ;CURSOR TO HOME POSITION
DJNZ R0,LCD_10MS
RET
LCD_TAB:
MOV R0,#00H ;查表基址清0
MOV R1,#LCD1_1 ;付值查表结果存放基址
TAB_LOOP:
MOV A,R0 ;付查表基址给A
MOVC A,@A+DPTR ;查表
MOV @R1,A ;存结果
INC R0 ;查表基址加1
INC R1 ;存放基址加1
CJNE R0,#32,TAB_LOOP ;完成?
RET
LCD_READY: ;LCD 准备
MOV R0,#00H ;LCD输出移位基址清0
MOV R1,#LCD1_1 ;LCD输出基值付值
CLR LCD_RW
CLR LCD_RS
SETB LCD_E
MOV LCD_DA,#0CH ;清屏并返回
CLR LCD_E
LCALL LCD_WHITE_40US
SETB LCD_E
MOV LCD_DA,#80H ;选LCD显示地址,第一行 1X16
CLR LCD_E
LCALL LCD_WHITE_40US
SETB LCD_RS ;写数据开
LCD_SHOW: ;1X16
SETB LCD_E
MOV LCD_DA,@R1
CLR LCD_E
LCALL LCD_WHITE_40US
INC R0
INC R1
CJNE R0,#16,LCD_SHOW
;********
CLR LCD_RS
SETB LCD_E
MOV LCD_DA,#0C0H ;选LCD显示地址,第二行 2X16
CLR LCD_E
LCALL LCD_WHITE_40US
SETB LCD_RS ;写数据开
LCD_SHOW1: ;2X16
SETB LCD_E
MOV LCD_DA,@R1
CLR LCD_E
LCALL LCD_WHITE_40US
INC R0
INC R1
CJNE R0,#32,LCD_SHOW1
RET
;************************************************
LCD_WHITE_1MS:
MOV R6,#20
DEL1:
MOV R7,#100
DEL2:
DJNZ R7,DEL2
DJNZ R6,DEL1
RET
;************************************************
LCD_WHITE_40US:
MOV R7,#80
LCD_WHITE_40US_W:
NOP
DJNZ R7,LCD_WHITE_40US_W
RET
;************************************************
SOUND_ASCII:
MOV A,SOUND_NUM
MOV B,#10
DIV AB
MOV LCD2_16,B ;个
MOV B,#10
DIV AB
MOV LCD2_15,B ;十
ORL LCD2_15,#30H
ORL LCD2_16,#30H
RET
WORKS_MODE:
DB ' WELCOME USE '
DB '====AUDIO===== '
SP_YANS:
MOV R3,#200
SP_YANS1:
NOP
DJNZ R3,SP_YANS1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -