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

📄 vfd_max192_adc.asm

📁 10位AD转换器MAX192的使用
💻 ASM
字号:
;器件:10位AD转换器MAX192应用
;测量电压0~40V,并用VFD显示

RST    BIT     P1.1
RS     BIT     P1.0
RW     BIT     P1.3
E      BIT     P1.2
M      BIT     P1.7

SSTRB  BIT     P2.0
CS     BIT     P2.1
SCLK   BIT     P2.2
DOUT   BIT     P3.0
DIN    BIT     P3.1

FLAG   BIT     20H
CLKF   BIT     21H

       ORG     0000H
       AJMP   START
START: CLR     FLAG
       CLR     CLKF
       CLR     RS
       CLR     RW
       CLR     E
       NOP
       NOP
       NOP
       NOP
       MOV     P0,#0CH   ;开显示屏
       NOP
       NOP
       SETB    E
       nop
       nop
       CLR     E
       MOV     P0,#14H   ;字符滚动
       NOP
       NOP
       NOP
       SETB    E
       NOP
       NOP
       NOP
       CLR     E
       MOV     P0,#3AH   ;8Bit接口,显示亮度为50%
       SETB    E
       NOP
       NOP     
       NOP
       CLR     E
       NOP
       NOP
       NOP
;*************************************************
DIS1:  MOV     P0,#1     ;清屏
       SETB    E
       NOP
       NOP
       NOP
       CLR     E
       MOV     R2,#84H    ;第一行第4个字符开始显示

BACK:  
       MOV     P0,R2
       SETB    E
       NOP
       NOP
       CLR     E
       SETB    RS
       MOV     P0,#'V'
       SETB    E
       NOP
       NOP
       CLR     E
       CLR     RS
       MOV     P0,#'o'
       SETB    RS
       setb    E
       NOP
       NOP
       CLR     E
       CLR     RS
       MOV     P0,#'l'
       SETB    RS
       setb    E
       NOP
       NOP
       CLR     E
       CLR     RS
       MOV     P0,#'t'
       SETB    RS
       setb    E
       NOP
       NOP
       CLR     E
       CLR     RS
       MOV     P0,#':'
       SETB    RS
       setb    E
       NOP
       NOP
       CLR     E
       CLR     RS
A_D:   ACALL   AD
       ACALL   TOBCD
       ACALL   BCDASC
       MOV     P0,#8AH
       SETB    E
       NOP
       NOP
       CLR     E
       MOV     A,34H
       SUBB    A,#30H   ;最高位为0则消隐
       JZ      BL
       MOV     P0,34H  
       AJMP    GO
BL:    MOV     P0,#' '
GO:    SETB    RS
       SETB    E
       NOP
       NOP
       CLR     E
       CLR     RS
       MOV     P0,33H
       SETB    RS
       setb    E
       NOP
       NOP
       CLR     E
       CLR     RS
       MOV     P0,#'.'
       SETB    RS
       setb    E
       NOP
       NOP
       CLR     E
       CLR     RS
       MOV     P0,32H
       SETB    RS
       setb    E
       NOP
       NOP
       CLR     E
       CLR     RS	       	 
       AJMP    A_D


;*******************************************
;      电压采集(A/D)
;*******************************************
AD:    MOV     R0,#30H
       MOV     A,#8EH
       SETB    CS      ;采集前的准备
       CLR     SCLK    
       CLR     DIN     
       SETB    DOUT   
       CLR     CS      ;选通

       MOV     R1,#08H ;送控制字
L1:    RLC     A
       MOV     DIN,C   
       NOP
       NOP
       SETB    SCLK    
       NOP
       NOP
       CLR     SCLK    
       DJNZ    R1,L1
       NOP             ;等待转换结束
       NOP            
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       NOP
       SETB    SCLK    
       CLR     DIN     
       MOV     R1,#08H ;读出高8位
L2:    CLR     SCLK    
       NOP
       NOP
       SETB    SCLK   
       NOP
       NOP
       MOV     C,DOUT  
       RLC     A
       DJNZ    R1,L2
       MOV     @R0,A   ;读出低8位
       INC     R0
       MOV     R1,#08H
L3:    CLR     SCLK   
       NOP
       NOP
       SETB    SCLK    
       NOP
       NOP
       MOV     C,DOUT  
       RLC     A
       DJNZ    R1,L3
       MOV     @R0,A

       CLR     C       ;C清零 
       MOV     A,30H   ;取有效位为15位(即量程扩大8倍,再乘以量化单位4)
       RRC     A       ;15位有效位右移1位,即为实际值的数字量.
       MOV     30H,A
       MOV     A,31H
       RRC     A
       MOV     31H,A
       RET
;*****************************************
;    两字节十六进制转BCD
;*****************************************
TOBCD: CLR     A
       MOV     32H,A
       MOV     33H,A
       MOV     34H,A
       MOV     R7,#10H
HTB:   MOV     A,31H
       RLC     A
       MOV     31H,A
       MOV     A,30H
       RLC     A
       MOV     30H,A
       MOV     A,32H
       ADDC    A,32H
       DA      A
       MOV     32H,A
       MOV     A,33H
       ADDC    A,33H
       DA      A
       MOV     33H,A
       MOV     A,34H
       ADDC    A,34H    ;两字节两字节十六进制万位数不大于6,不用转换                                                                                                                                                                                                                        
       MOV     34H,A
       DJNZ    R7,HTB
       RET

;************************************************
;     BCD转ASC(取BCD的高位两个字节转换,低字节舍弃)
;************************************************
BCDASC:MOV     A,34H
       ANL     A,#0FH
       ADD     A,#30H
       MOV     34H,A
       MOV     A,33H
       ACALL   HAS1
       MOV     32H,A
       XCH     A,33H
       SWAP    A
       ACALL   HAS1
       MOV     33H,A
       RET
HAS1:  ANL     A,#0FH
       ADD     A,#30H
       RET

;****************************************
;
;******************************************
       END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -