⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 电源.asm

📁 数字电源控制,128*64液晶驱动显示.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*********************************************
 ;四川理工电子设计液晶显示菜单程序
 ;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 + -