用STC12C2052单片机芯片自带的ad进行采样得到电压并显现在数码管上面,下面是汇编语言源程序:
;===================数字电压表模仿采样===================================
P1M0 EQU 91H ;端口设置寄存器
P1M1 EQU 92H ;端口设置寄存器
AK EQU 0C5H ;A/D转化操控寄存器
ADATA EQU 0C6H ;保存转化数据的高8位
ADATAD EQU 0BEH ;保存转化数据的低2位
ORG 00H
JMP MAIN
;==================================================
MAIN: MOV P1,#00H
MOV P3,#00H
MOV TMOD,#01H
MOV TH0,#0FCH
MOV TL0,#17H
MOV 30H,#01
MOV 32H,#03H
MOV 33H,#04H
MOV 31H,#02H
MOV 8EH,#00H
MOV PCON,#00H
MOV P1,#0FFH
MOV P3,#0FFH
MOV P1M0,#4H ;设置端口为A/D形式
MOV P1M1,#4H ;设置端口为A/D形式
MOV ADATA,#00H
MOV AK,#80H ;翻开A/D电源
CALL DIP
CALL DIP
CALL DIP
CALL DIP
CALL DIP
CALL DIP
;==================================================
MOV AK,#0E2H ;挑选通道P1。2为A/D输入端
;===============================================
LOOP_22: ORL Ak,#08H ;发动转化
LOOP_0: MOV A,#10H
ANL A,AK ;判别是否转化完结
JZ LOOP_0
;==============================================
ANL AK,#0E7H ;把标志位清零
MOV A,ADATA ;读取转化后的高8值
;==============================================
MOV B,#100
DIV AB
MOV 30H,A
MOV A,B
MOV B,#10
DIV AB
MOV 31H,A
MOV 32H,B
;================================================
MOV 66H,#50
LOOP: CALL DIP
DJNZ 66H,LOOP
JMP LOOP_22
;=================================================
DIP: MOV A,30H
CALL TABLE
MOV P3,A
SETB P1.0
MOV 65H,#1
CALL T2MS
CLR P1.0
;=================
MOV A,31H
CALL TABLE
MOV P3,A
SETB P1.1
MOV 65H,#1
CALL T2MS
CLR P1.1
;===============
MOV A,32H
CALL TABLE
MOV P3,A
SETB P1.7
MOV 65H,#1
CALL T2MS
CLR P1.7
;================
MOV A,33H
CALL TABLE
MOV P3,A
SETB P1.4
MOV 65H,#1
CALL T2MS
CLR P1.4
RET
;=================================================
T2MS:
MOV TH0,#0FCH
MOV TL0,#17H
SETB TR0
JNB TF0,$
CLR TF0
DJNZ 65H,T2MS
RET
;=============================================
TABLE: INC A
MOVC A,@A+PC
RET
DB 3FH,06H,9BH,8FH,0A6H,0ADH,0BDH,7H,0BFH,0AFH
;0 1 2 3 4 5 6 7 8 9
;==============================================
END
成功啦 更爱上我的单片机规划