📄 电源.asm
字号:
;*********************************************
;四川理工电子设计液晶显示菜单程序
;Controller:ST7920
;MCU:AT89S52 ,晶体频率:12MHz
;LCM:128*64
;LCM 型号:OCMJ4X8C
;by TONGFEI
;键盘程序由中断服务置标志位
;由该程序完成键盘接收的标志进行检测并输出显示同时同时置功能标志
;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7 15:PSB16:NC 17:RST 18:Vout 19:A 20:K
RS EQU P1.0
RW EQU P1.1
E EQU P1.2
; PSB EQU P1.4
; RST EQU P1.3
COM EQU 20H
DAT EQU 21H
COUNPLAY EQU 30H ;主菜单计数
COUNPLAY1 EQU 31H ;子菜单计数
COUNT EQU 32H ;;DDRAM 地址记数器设为最大值
KEYDAT EQU 23H.0 ;键盘响应标志
UPDAT EQU 23H.1 ;向上键
DOWNDAT EQU 23H.2 ;向下键
LEFTDAT EQU 23H.3 ;向左键
RIGHTDAT EQU 23H.4 ;向右键
OKDAT EQU 23H.5 ;确定
CANCLEDAT EQU 23H.6 ;取消
K1DAT EQU 23H.7 ;键1
K2DAT EQU 24H.0 ;键2
K3DAT EQU 24H.1 ;键3
K4DAT EQU 24H.2 ;键4
K5DAT EQU 24H.3 ;键5
K6DAT EQU 24H.4 ;键6
K7DAT EQU 24H.5 ;键7
K8DAT EQU 24H.6 ;键8
K9DAT EQU 24H.7 ;键9
K0DAT EQU 25H.0 ;键0
DYCLZ EQU 37H ;电压测量值
DLCLZ EQU 38H ;电流测量值
DYXSGW EQU 39H ;电压高位
DYXSDW EQU 3AH ;电压低位
DLXSGW EQU 3CH ;电流显示高位
DLXSDW EQU 3DH ;电流显示低位
BIT_CNT DATA 33H
DELAYZ DATA 34H
DECIMAL DATA 35H
REC_BUF DATA 36H
SEND_BUF DATA 37H
CS BIT P1.3
CLK BIT P1.4
DIO BIT P1.5
DYJZ EQU 40H ;电压基准
DYFZ EQU 41H ;电压副值
ORG 0000H
AJMP START
ORG 0003H ;外部中断0入口
AJMP INT_SERVER0 ;外部中断0服务
ORG 0100H ;主程序
START: SETB IT0 ;边沿触发 开中断
SETB EX0
SETB EA
MOV SEND_BUF,#10100100B ;初始化
CALL SEND
SETB CS
MOV SP,#50H
AJMP DISP
;*********************************主程序入口地址
DISP: LCALL DELAY
MOV COM,#30H ;功能设置---8BIT 控制界面,基本指令集
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#0CH ;显示打开,光标关,反白显示关
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#01H ;清除屏幕显示,将 DDRAM 的地址计数器归零
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#06H ;DDRAM 的地址计数器(AC)加 1
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV DYJZ,#2
MOV A,DYJZ ;查调整值
MOV DPTR,#DYTZB ;注意该语句应在程序开头也加入
MOVC A,@A+DPTR
MOV DPTR,#0BFFFH ;装入0832地址 **********************************
MOVX @DPTR,A ; ********************************
; **********以上是模块初始化
;*****************欢迎屏幕***********************
MOV COM,#01H ;清屏
ACALL WRI ;调用写指令子程序
LCALL DELAY
MOV COM,#32H ;功能设置---8BIT 控制界面,绘图显示 ON
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#36H ;功能设置---8BIT 控制界面,扩充指令集
ACALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
DISPLAY6:
MOV DPTR,#DAB2 ;图形数据入口地址
MOV R2,#32 ;32 行,(双屏结构中上半屏)
MOV R3,#80H ;Y 地址寄存器
DISP6: MOV COM,R3 ;设置绘图区的 Y 地址坐标
INC R3 ;Y 地址加 1
LCALL WRI
MOV COM,#80H ;设置绘图区的 X 地址坐标
LCALL WRI
MOV R1,#16 ;16*8 列
DISP7: CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRD
INC DPTR
DJNZ R1,DISP7
DJNZ R2,DISP6 ;写满全屏的 16*8 字节 X64
MOV R2,#32 ;32 行,(双屏结构的下半屏)
MOV R3,#80H ;Y 地址寄存器
DISP8: MOV COM,R3 ;设置绘图区的 Y 地址坐标
INC R3 ;Y 地址加 1
LCALL WRI
MOV COM,#88H ;设置绘图区的 X 地址坐标
LCALL WRI
MOV R1,#16 ;16*8 列
DISP9: CLR A
MOVC A,@A+DPTR
MOV DAT,A
LCALL WRD
INC DPTR
DJNZ R1,DISP9
DJNZ R2,DISP8 ;写满全屏的 16*8 字节 X64
LCALL DELAY1 ;1S 延时子程序
LCALL DELAY1
LCALL DELAY1
;*************设置工作方式
MOV COM,#30H ;功能设置---8BIT 控制界面,基本指令集
CALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#0CH ;显示打开,光标关,反白显示开
CALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#01H ;清除屏幕显示,将 DDRAM 的地址计数器归零
CALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
MOV COM,#06H ;DDRAM 的地址计数器(AC)加 1
CALL WRI ;调用写指令子程序
LCALL DELAY ;延迟 39uS
;*******************************开始
CLDL:
;***************************
;电压显示
;***************************
DYXS: PUSH PSW
DYXS1: SETB C
CALL DXHCL
MOV A,DLCLZ
CJNE A,#0FDH,PDCBZ ;去判断C标志
PDCBZ: JNC GLBJ ;过流报警
MOV DPTR,#CLMB ;装入测量值屏显
CALL XSYP
MOV COM,#95H
CALL WRI
MOV DAT,#33H
CALL WRD
MOV A,DYXSGW
ADD A,#30H ;电压显示位转为ASCII码
MOV DAT,A ;送数据进入显示数据区
CALL WRD
; MOV DAT,#2EH ;送小数点
; CALL WRD
; MOV A,DYXSDW
; ADD A,#30H
; MOV DAT,A
; CALL WRD
MOV COM,#8DH
CALL WRI
MOV A,DLXSGW
ADD A,#30H
MOV DAT,A
CALL WRD
MOV DAT,#2EH
CALL WRD
MOV A,DLXSDW
ADD A,#30H
MOV DAT,A
CALL WRD
AJMP DYXSTC ;退出电压显示
GLBJ: MOV DPTR,#BJTS ;装入报警
CALL XSYP
CLR P2.0 ;报警脉冲
CALL DELAY1 ;延时
SETB P2.0
CALL DELAY
DYXSTC: CALL DELAY1
JB CANCLEDAT,TCXS
AJMP DYXS1 ;去电压显示1
TCXS: POP PSW
CLR CANCLEDAT
CLR UPDAT
CLR DOWNDAT
CLR OKDAT
;************************
;电压调节****************
;************************
DYTJ:
MOV DYFZ,DYJZ ;电压基准寄存器
MOV DPTR,#DYTJB ;装入电压调节表
CALL XSYP
MOV COM,#95H ;送调节值显示
CALL WRI
MOV DAT,#33H
CALL WRD
MOV A,DYFZ
ADD A,#30H
MOV DAT,A
CALL WRD
MOV COM,#95H
CALL WRI
TJDYZ: JNB UPDAT,QXSJ ;判断向上键加
INC DYFZ
MOV A,DYFZ
CJNE A,#7,QXSJ
MOV DYFZ,#0
QXSJ: CLR UPDAT
JNB DOWNDAT,QXXJ ;判断向下键
MOV A,DYFZ
CJNE A,#0,J1F ;不为零减一伏
MOV DYFZ,#7
J1F: DEC DYFZ
QXXJ: CLR DOWNDAT
MOV COM,#95H ;送调节值显示
CALL WRI
MOV DAT,#33H
CALL WRD
MOV A,DYFZ
ADD A,#30H
MOV DAT,A
CALL WRD
MOV COM,#95H
CALL WRI
JB CANCLEDAT,TCTJ ;取消键退出调节不保存
JNB OKDAT,TJDYZ
CLR OKDAT
MOV DYJZ,DYFZ ;OK键保存
MOV A,DYFZ ;查调整值
MOV DPTR,#DYTZB ;注意该语句应在程序开头也加入
MOVC A,@A+DPTR
MOV DPTR,#0BFFFH ;装入0832地址 **********************************
MOVX @DPTR,A ; ********************************
;此处加入查表并送数据到0832
TCTJ: CLR CANCLEDAT
LJMP CLDL
;**************************
;电压电流测量+BCD转换
;**************************
DXHCL:
CLR A
; MOV DPTR,#7FF0H ;指向第一路
; MOVX @DPTR,A ;启动电流AD转换
; NOP
; NOP
; CALL WAIT
; MOVX A,@DPTR
; MOV DYCLZ,A ;转换电压结果装入37H
; MOV DPTR,#DLMB ;装入电量码表
; MOV A,DYCLZ
; MOVC A,@A+DPTR
; MOV B,#100 ;BCD转换
; DIV AB ;求十位
; MOV A,B
; MOV B,#10
; DIV AB
MOV DYXSGW,DYJZ ;39H为高位
; MOV DYXSDW,B ;3AH为个位
CLR A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -