📄 jdq.asm
字号:
;液晶板显示当前模拟电压
; 功能:数码显示0.20---2.00
; 作者:http://www.mcuprog.com
; 05-02-01
;***********************************************************
;***********************************************************
E BIT P2.2 ;LCD口线的定义
RW BIT P2.1
RS BIT P2.0
LCDPORT EQU P0
JDQ BIT P3.6
CMD_BYTE EQU 2EH
DAT_BYTE EQU 2FH
KEYBIT BIT 00H ;有按键按下标志
OUTEDBIT BIT 01H ;输出开关位
KEYTIME EQU 35H ;20MS扫一次按键
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIME0_1
;以下为主程序的开始
ORG 0030H
MAIN:
MOV 20H,#00H
LCALL INITLCD
MOV KEYTIME,#04H
MOV CMD_BYTE,#80H //设置DDRAM的地址
LCALL WRITE_CMD
LCALL DELAY0
MOV DAT_BYTE,#"S"
LCALL WRITE_DAT
MOV DAT_BYTE,#"T"
LCALL WRITE_DAT
MOV DAT_BYTE,#"A"
LCALL WRITE_DAT
MOV DAT_BYTE,#"T"
LCALL WRITE_DAT
MOV DAT_BYTE,#"E"
LCALL WRITE_DAT
MOV DAT_BYTE,#":"
LCALL WRITE_DAT
MOV TH0,#0EEH ;16位的定时器,定时5MS
MOV TL0,#00H
MOV TMOD,#01H
SETB TR0
MOV IE,#82H ;定时器0中断
SJMP $
ORG 0100H
TIME0_1: MOV TH0,#0EEH
MOV TL0,#00H
DJNZ KEYTIME,TIME0_RE
MOV KEYTIME,#04H ;每20MS进行一次按键扫描
JB P1.0,CLRKEYBIT
JB KEYBIT,DPUSE
SETB KEYBIT
CPL OUTEDBIT
CPL JDQ
AJMP DPUSE
CLRKEYBIT: CLR KEYBIT
DPUSE: ACALL DISPSTATE
TIME0_RE: RETI
;LCD1602要用到的一些子程序
;写命令(入口参数CMD_BYTE)
WRITE_CMD: CLR RS
CLR RW
MOV A,CMD_BYTE
MOV LCDPORT,A
SETB E
NOP
NOP
CLR E
LCALL DELAY0
RET
;写显示数据(入口参数DAT_BYTE)
WRITE_DAT: SETB RS
CLR RW
MOV A,DAT_BYTE
MOV LCDPORT,A
SETB E
NOP
NOP
CLR E
LCALL DELAY0
RET
;LCD显示初始化
INITLCD: MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#38H ;设定工作方式
LCALL WRITE_CMD
MOV CMD_BYTE,#0CH ;显示状态设置
LCALL WRITE_CMD
MOV CMD_BYTE,#01H ;清屏
LCALL WRITE_CMD
MOV CMD_BYTE,#06H ;输入方式设置
LCALL WRITE_CMD
RET
;延时子程序
DELAY0: MOV R5,#0A0H
DELAY1: NOP
DJNZ R5,DELAY1
RET
;显示状态
DISPSTATE: MOV CMD_BYTE,#87H //设置DDRAM的地址
LCALL WRITE_CMD
JB OUTEDBIT,OPEN
MOV DAT_BYTE,#"C"
LCALL WRITE_DAT
MOV DAT_BYTE,#"L"
LCALL WRITE_DAT
MOV DAT_BYTE,#"O"
LCALL WRITE_DAT
MOV DAT_BYTE,#"S"
LCALL WRITE_DAT
MOV DAT_BYTE,#"E"
LCALL WRITE_DAT
RET
OPEN: MOV DAT_BYTE,#"O"
LCALL WRITE_DAT
MOV DAT_BYTE,#"P"
LCALL WRITE_DAT
MOV DAT_BYTE,#"E"
LCALL WRITE_DAT
MOV DAT_BYTE,#"N"
LCALL WRITE_DAT
MOV DAT_BYTE,#" "
LCALL WRITE_DAT
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -