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

📄 adc0--5.txt

📁 AD 转换 数码管显示 0到5V ad0804
💻 TXT
字号:
;//定义ADC的连接端口
ad_cs   equ P1.7   ;芯片选择
ad_wr   equ P3.6   ;转换开始
ad_rd   equ P3.7   ;RD=LOW,数字信号输出
ad_input_port   equ p2   ;定义数据位

FIRST   EQU     P1.2    ;第一位数码管的位控制
SECOND  EQU     P1.1   ;第二位数码管的位控制
THREE   EQU     P1.0   ; 第三位数码管的位控制


    org 0000h
    ajmp    main
    org 0030h
main:
    MOV     P1,#0FFH
    MOV     P0,#0FFH
    MOV     P2,#0FFH        ;初始化,所显示器,LED灭
LOOP:
    lcall adc_demo      ;调用AD子程序
    ajmp    LOOP

;//==========================================
;// 启动AD转换
;//==========================================
Adc_Start:
    clr     ad_cs
    nop    
    clr     ad_wr
    nop
    setb    ad_wr
    nop
    setb    ad_cs
    nop
    ret
;//==========================================
;// 读AD转换
;//==========================================
Adc_Read:
    mov ad_input_port,#0ffh
    clr ad_cs
    nop
    clr ad_rd
    nop
    nop
    mov a,AD_INPUT_PORT
    nop
    setb    ad_rd
    nop
    setb    ad_cs
    ret
;//==========================================
;// AD转换读取延时程序,显示读到的数值
;//==========================================
Adc_Demo:
  lcall Adc_Start
  lcall delay1ms
  lcall adc_read
  CLR  C
  MOV  B,#02H
  MUL  AB
  MOV  R3,B
  MOV  R2,A
  LCALL  CHANGEBCD
  lcall  DISP
  RET

DISP:                       ;定时器T0的中断响应程序动态扫描
    PUSH    ACC             ;ACC入栈
    PUSH    PSW             ;PSW入栈
    MOV     TH0,#HIGH(65536-2000);定时时间为2000个周期,约2170微秒
    MOV     TL0,#LOW(65536-2000)
    MOV     DPTR,#DISPTAB
    SETB    FIRST
    SETB    SECOND          ;关显示
    SETB    THREE
   
    MOV     A,R4
    ANL     A,#0FH
    MOVC    A,@A+DPTR
    MOV     P0,A
    CLR     THREE
    LCALL   delay1ms
    SETB    THREE
    MOV     A,R4
    ANL     A,#0F0H
    SWAP    A
    MOVC    A,@A+DPTR
    MOV     P0,A
    CLR     SECOND
    LCALL   delay1ms
    SETB    SECOND
    MOV     A,R5
    ANL     A,#0FH
    MOVC     A,@A+DPTR
    MOV     P0,A
    CLR     P0.5
    CLR     FIRST
    LCALL   delay1ms
    SETB    FIRST
    SETB     P0.5
    POP     PSW
    POP     ACC
    RETI
DISPTAB:db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h ;字形代码表
;0 1 2 3 4 5 6 7 8 9
delay1ms:                       ;延时子程序
 mov r1,#10
 MM:mov r0,#50
 djnz r0,$  ;2us
 djnz r1,MM
 ret
CHANGEBCD:
    CLR    A
    MOV    R4,A
    MOV    R5,A
    MOV    R6,A
    MOV    R7,#10H
LOOP1:
    CLR    C
    MOV    A,R2
    RLC    A
    MOV    R2,A
    MOV    A,R3
    RLC    A
    MOV    R3,A
    MOV    A,R4
    ADDC   A,R4
    DA     A
    MOV    R4,A
    MOV    A,R5
    ADDC   A,R5
    DA     A
    MOV    R5,A
    MOV    A,R6
    ADDC   A,R6
    MOV    R6,A
    DJNZ   R7,LOOP1
    
    RET    
    end

⌨️ 快捷键说明

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