单片机(型号89C52)之简易数字电压表的设计
发布网友
发布时间:2022-05-05 01:15
我来回答
共3个回答
热心网友
时间:2022-06-28 03:07
这个是最基本的,你首先要把他分开,AD采样,和数值显示两部分,其实你可以先读懂C的程序,用Keil编译器编译,然后在Keil编译器里就可以看到汇编了,下面给你个参看,运行条件为8051单片机,12M晶振,ADC0808,共阴数码管。
;********************************************************
;########################################################
OE BIT P3.0 ;ADC0808的OE端
EOC BIT P3.1 ;ADC0808的EOC端
ST BIT P3.2 ;ADC0808的START和ALE端
ADD0 BIT P3.4 ;ADC0808的模拟输入选择端
ADD1 BIT P3.5
ADD2 BIT P3.6
LED_0 DATA 30H ;显示缓冲区
LED_1 DATA 31H
LED_2 DATA 32H
LED_3 DATA 33H
ADC DATA 34H ;存放转换后的数据
;//////主程序开始////////////////////////////////////////
ORG 0000H
AJMP START
ORG 0030H
;------初始化-----------------------------------
START: MOV SP,#60H ;设置堆栈
MOV LED_0,#00H ;清空显示缓冲区
MOV LED_1,#00H
MOV LED_2,#00H
MOV LED_3,#00H
MOV DPTR,#TABLE ;送字型码表首地址
SETB ADD0
SETB ADD1
CLR ADD2 ;选择ADC0808的通道3
;------ADC0808转换------------------------------
WAIT: CLR ST
SETB ST
CLR ST ;启动转换
JNB EOC,$ ;等待转换结束
SETB OE ;允许输出
MOV ADC,P1 ;暂存转换结果
CLR OE ;关闭输出
;------数据处理,已备显示------------------------
MOV A,ADC ;将AD转换结果转换成BCD码
MOV B,#0C3H ;乘以19.5MV
MUL AB
MOV R7,A
MOV R6,B
HB2: CLR A ;BCD码初始化
CLR C
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;转换双字节十六进制整数
HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD码带进位自身相加,相当于乘2
ADDC A,R5
DA A ;十进制调整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整
DJNZ R2,HB3
MOV A,R5
SWAP A
ANL A,#0FH
MOV LED_0,A
MOV A,R4
ANL A,#0FH
MOV LED_1,A
MOV A,R4
SWAP A
ANL A,#0FH
MOV LED_2,A
MOV A,R3
ANL A,#0FH
MOV LED_3,A
LCALL DISP ;调用显示子程序
AJMP WAIT
;//////数码管显示子程序///////////////////////////////////////////////
DISP: MOV A,LED_0 ;数码显示子程序
MOVC A,@A+DPTR
CLR P2.3
MOV P0,A
LCALL DELAY
SETB P2.3
MOV A,LED_1
MOVC A,@A+DPTR
CLR P2.2
MOV P0,A
LCALL DELAY
SETB P2.2
MOV A,LED_2
MOVC A,@A+DPTR
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
MOV A,LED_3
MOVC A,@A+DPTR
CLR P2.0
MOV P0,A
SETB P0.7
LCALL DELAY
SETB P2.0
RET
;//////延时子程序////////////////////////////////////
DELAY: MOV R6,#0AH ;延时5毫秒
D1: MOV R7,#0FAH
DJNZ R7,$
DJNZ R6,D1
RET
;//////数码管字形码表/////////////////////////////////
TABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
;/////程序结束////////////////////////////////////////
END
热心网友
时间:2022-06-28 03:07
楼主可以去中国电子DIY之家参考其他同学的制作实例和资料
热心网友
时间:2022-06-28 03:08
数字电压表
参考资料:数字电压表