单片机直流数字电压表,下面是0-5V的,请帮忙改下源程序,让电压表测到0-20v电压,用的是at89c51和adc0808 100

做法是在原来的adc0808的电位器串了个电阻分压,发到xlsxsr_520y@126.com,谢谢了LED_0EQU30HLED_1EQU31HLED_2EQU32H;... 做法是在原来的adc0808的电位器串了个电阻分压,发到xlsxsr_520y@126.com,谢谢了

LED_0 EQU 30H
LED_1 EQU 31H
LED_2 EQU 32H ;存放段码
ADC EQU 35H
CLOCK BIT P2.4 ;定义ADC0808时钟位
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7

ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0

START: MOV LED_0,#00H
MOV LED_1,#00H
MOV LED_2,#00H
MOV DPTR,#TABLE ;段码表首地址
MOV TMOD,#02H
MOV TH0,#245
MOV TL0,#00H
MOV IE,#82H
SETB TR0

WAIT: CLR ST
SETB ST
CLR ST ;启动AD转换
JNB EOC,$ ;等待转换结束
SETB OE
MOV ADC,P1 ;读取AD转换结果
CLR OE
MOV A,ADC
MOV B,#100 ;AD转换结果转换成BCD码
DIV AB
MOV LED_2,A
MOV A,B
MOV B,#10
DIV AB
MOV LED_1,A
MOV LED_0,B
LCALL DISP
SJMP WAIT
INT_T0: CPL CLOCK ;提供ADC0808时钟信号
RETI
DISP: mov dptr,#table
MOV A,LED_0 ;数码显示子程序
MOVC A,@A+DPTR
CLR P2.3
MOV P0,A
LCALL DELAY
SETB P2.3
mov dptr,#table
MOV A,LED_1
MOVC A,@A+DPTR
CLR P2.2
MOV P0,A
LCALL DELAY
SETB P2.2
mov dptr,#table
MOV A,LED_2
MOVC A,@A+DPTR
setb acc.7
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
RET
DELAY: MOV R6,#10 ;延时5毫秒
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
ntov:
mov dptr,#tab
mov a,adc
movc a,@a+dptr
mov b,#2
div ab
mov r1,b

mov r1,b
mov b,#10
div ab
mov led_2,a
mov led_1,b
cjne r1,#01,kk1
mov led_0,#05
back: ret
kk1: mov led_0,#00
ajmp back
RET
TABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
tab:
db 0, 0 , 0 , 1, 0, 2, 0, 0, 3, 0
db 4, 0, 0, 5, 0, 6, 0, 0, 7, 0
db 8, 0, 0, 9, 0, 0, 10, 0, 11, 0
db 0, 12, 0, 13, 0, 0, 14, 0, 15, 0
db 0, 16, 0, 17, 0, 0, 18, 0, 19, 0
db 0, 20, 0, 0, 21, 0, 22, 0, 0, 23
db 0, 24, 0, 0, 25, 0, 26, 0, 0, 27
db 0, 28, 0, 0, 29, 0, 0, 30, 0, 31
db 0, 0, 32, 0, 33, 0, 0, 34, 0, 35
db 0, 0, 36, 0, 37, 0, 0, 38, 0, 39
db 0, 0, 40, 0, 0, 41, 0, 42, 0, 0
db 43, 0, 44, 0, 0, 45, 0, 46, 0, 0
db 47, 0, 48, 0, 0, 49, 0, 50, 0, 0
db 51, 0, 0, 52, 0, 53, 0, 0, 54, 0
db 55, 0, 0, 56, 0, 57, 0, 0, 58, 0
db 59, 0, 0, 60, 0, 0, 61, 0, 62, 0
db 0, 63, 0, 64, 0, 0, 65, 0, 66, 0
db 0, 67, 0, 68, 0, 0, 69, 0, 70, 0
db 0, 71, 0, 0, 72, 0, 73, 0, 0, 74
db 0, 75, 0, 0, 76, 0, 77, 0, 0, 78
db 0, 79, 0, 0, 80, 0, 0, 81, 0, 82
db 0, 0, 83, 0, 84, 0, 0, 85, 0, 86
db 0, 0, 87, 0, 88, 0, 0, 89, 0, 90
db 0, 0, 91, 0, 0, 92, 0, 93, 0, 0
db 94, 0, 95, 0, 0, 96, 0, 97, 0, 0
db 98, 0, 99, 0, 0, 100, 0, 0, 0
END
展开
 我来答
做而论道
高能答主

2012-05-21 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
假设,原程序是正确的。
那么,原来显示的数据范围是多少?
现在,要求显示的范围是多少?

假设,原程序是正确的。
那么,需要改动的,就是下面标注的几行:
……
WAIT:
CLR ST
SETB ST
CLR ST ;启动AD转换.
JNB EOC, $ ;等待转换结束.
SETB OE
MOV ADC, P1 ;读取AD转换结果.
CLR OE
MOV A, ADC
;---------------------------下面需要改动------------------------
MOV B, #100 ;AD转换结果转换成BCD码.
DIV AB
MOV LED_2, A
MOV A, B
MOV B, #10
DIV AB
MOV LED_1, A
MOV LED_0, B
;---------------------------上面需要改动------------------------
CALL DISP
SJMP WAIT
……

不过,看来,原来的程序,好像不对。
不像是显示0~5V,好像是显示:0.00~2.55。
更多追问追答
追问
这,确实能测0-5V的电压,在protues源程序和电路图可以仿真,还有就是0-20v的怎么改
追答
这,确实能测0-5V的电压,

当然能测,现在也能测0-20v的,测一万伏电压也行。
问题是:你现在显示什么?
nihaihaoma___
2012-05-22 · TA获得超过102个赞
知道答主
回答量:520
采纳率:0%
帮助的人:184万
展开全部
按比例扩大啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tony_0620
2012-05-21 · TA获得超过327个赞
知道小有建树答主
回答量:385
采纳率:0%
帮助的人:207万
展开全部
我的是c语言的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式