急求!设计数字电压表,要求能够测量0-5V电压能够通过数码管显示被测量的值.谢谢啦~~

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/25 13:34:18
急求!设计数字电压表,要求能够测量0-5V电压能够通过数码管显示被测量的值.谢谢啦~~
x}R[Io^p]@ܗMvCLB-0frH`_kȝ- wq ̕+׼VЦfة3;n;#>m[=56wӅR--0z6l3k#k?ţ'cFk=oj%kBµZ+}hD=:j$^?yB =~ݾkx}흾|3|? ܹw?z;|_񚹔Vvd= (}v" ֶاs3 nb䄹Osꙑzj~TL% 2 s);)IL0c.O@н|4_~%:Z;F6ipUQrk<ཝgVt׭(> +{w*,^o%0w ;ƛy$""L# ML 3I$#QlAC„M}*qM̕׼?|& `Mu{* x 4|ifdm K:n$HgM{^CakV|7,'(;lce1j4SZ[SqTaQn3YnӛCMts4{ ꢕ ~Xf%H`Ʒȡ3rDΕK0%Y%AqשQ`>xaNM/ ɰٓ] @Y+1s' `"{FdۅCɰaKWR5VD(257FbX@J/1%ՐK18̟@( R:-7Cn쯫8L(P0YX q% ,%r!pߘ7C=>Ow{wCZߠ}O{׆᷿j=`jw깧PwC}Cw!sP_}[Mܿ 襹}<=ZJ(ծiwΈ sPw;07G}{Wí3}zp=2wq 0ơMW]=lkxo D@%fg|6߸<xXxfMSt]3VCacwzZW6t& A]n1t1>l28e#I0#Z]cJU7{`7aG R 8z) FBeH}1~U\B*K-U}gŇ +!c|Xށ݋0]!$& VU,~gp .&,fzb.Ѵ2Jkah,Ra~gX# yW܆\R5 aAzZэenF'!4NeQ>5'!6Uџ[m?_Zoό4W =Yw\!&+gtzu^wz>LHcOooR^䦭\;n"Kz.0,t@4^B3B>5N298Ao8ѽ=0F"mBFl0R1sN%N4BHȢKiф H5#3yj^HkRn?L`/B9lJ7c)fl KN^MC)_W,56cg#mNL8@`wi%kU8/司/򙸝Eƶf#}Oxk"OcP%sq~8;袭L`KK ϠaKh H~.>/?3Q'|V/> qQD@e9+8qD(_ }f ( Z{`k`\fN3)xGr ƫB,1r|v,B)ƁͥFF DFbϟ<|^-Rs`8;-A\KN lDQ}.p1D0,ͷ!ԡ *(ę]Z X 1:+CXňM*kh4I1f1 ł2EIP$ֆVv &`=kF\E 0@ʮnzOK#>9c @e&(c$EwDTntNB$`(-OT+` @ 9},Ǭ vdIJ²q(Xʁ=9ݐsy+,hd2SY+f<@7y ؖF0}髁l dM@|רPDhePI1L 6s hl8_$1\ G%֗=nŒoEHyn ~_绔n?`su])=EE6=gbJ2u-kLٞqeN``WW%^чK/}<^.@9/N WZ0#[Vi,`H:0?!{Wf5hOc);ۆe sE1wd\LSLW3q!V)!$% ˜KclSCN`*45JEON/ŷ1+掯$@A M׾`|H۶r$ZB* ɍ1/Z$ a%5Q~FDq\#kRԃ% (B f} J) +lDDdP@uc((FuljQ #n9g\]MIB ^T5<ȁ.|f.;2r99ڤXI'rk'8h`(o4w]A '\Jʎɂ3]}SY|?3oa݁ZR[Z}tH8\Z0S09?PpubL=3ap?Q A'd!цLIAFP84c#y)YZhJ*_R| ȩ5]=j b+IPơbC>*.s#ܡANfҎp! r\EtӅ"e) ss!d-Cf1Xq2S$EeFN4W9"C:v4cK ?V~QQ_@u9wHpM&*0ݰ;7:3&jB-4# $"!"<\b"-4|6#BeN9ynv/qdY6Y_'a0֌9AmRWUU=bW8WP&LpO!5[>tFO!M%BQK !"榞'99CqZzXY" ƀ9}PMQd+,*h{L #t,>(0V v7 Є6dsU0sA6y`Y FTF_lVrRx!OG/_oU)]U[_ jv=ㆪ׻/|XUe/C4UuRBE&zUw U0$}ʈKFʈn>PAs%W1g~?wJlҔ U-M9FمG b~I8Xحa.\jJSá>Qlkh#{XƥV@hp8 D] "L Mu-0I0D!p O{_^>%"yǢov7dU\RzmMIc މV+ I!d W+)>:.8Dx/aE l\S@ .Du"!R=MpF$cmPOG3'xjNwGIvzݚp7IKq&챚t(d9/՗=]7I*|nX(|0&щAPV PiA , }8&a 1`pܾF){\!DmkVGXٜ`{dg;p)kŸk`7dricf yKd"T7d]s4BЍ^5qp x[<9Ή&]Z=aW& {zJNDܙ͒8)NPRo cJ{e UZ=:A>ߚbWjpײ:8 { YYCQq "xt6 X@h&J/G|qK>Ԟ,Sx4|?xq  mڶ)QjMi(vLnZ[9IJ'YDt L M(Eĩ Y~P :͚*{o`];}v9d2&#08ܤ6&,f宯LF &%fdF (k1#,h&hW#y<$/,1Ge@G@j XlNU<aG;qmn 9=1S»d0MS ur1VEC^ڐVX`8曚5wjzk$TScf /JO3Z!rr_ uʏ-_PA!=$x_үG@Fc`^e<=jlO꽥 cن-QD~upmc0sn`R`V]4q, XҘb 8 c&?sZD~m=:f*Q -3Fl\W5R8nIv it1,@18d.$y}ܑݒML)lR2=TZ҇y<\A %hc)zoILotk2#ؚ HTcH `>SI*7RZ`d\إֹI|WzH>[E{z]Hcu~ 7T?CRH#{`Jz 4QXXl(R%QwѷiޤUDɍy1w+;6dRD]%fU>t"-sl}ϝUFGLMybxǘ>63W[`}0&NNkԌU_MZ ݜDDE>w@Pe>FFqwv_w?rE3_4# \:Ls6֩UBwv_ʡ_q6Kp.iC!XdNT;X M*^KF-Ïݫƪ/,o`!J-24A)93q6ovP/h03qA2B|4蒼)YVL+c,~|W^Si]Q>—z,>]~\:O~~39֦[OWQ|AÔiة Λ*<6y@ŋ Hћv| (V2 x]¨lZm!DIq OaSO$DiU[*Q~@1:Q գlr &gs:M"5ZK;Պa v5<<} 37HO ;hx421c_.1 ]/FS%ZsSIm9K]l/Fsↁ9j?7&SMĞ8ouo^=Xk~HpT$aYϖNs{Gnȷ`(!$C!~b>#-O}at0/Lİ/l Ɉi&qDE YG'XanNI ,;V֘|B«GM\|j:ǩ͗pnj?4A`#g{1*gF(f.Lkx9TWN JH>ݙy ǔ/'yxclQe" g @'VrrIRjr8y8W۾Dðn `8.IԳ,NEQ5T3qϓG|8ޤ`o.εe3l:x(~Ba~G8F1Wpg \.'MC|&'̈́-T\I3UhK2pI~f{tB=%ĢŶ{˯M 5 P< w#8wwķ"v2g0K%x#aaŞwI |*)uAK38Vk.5^ Aw&=Za7{6Rϡb?)P#"ϡi&s% 1ǚߍ( yd8w O2b|uݣ٣3s!ZXBŅD6*1ߞ+^"M@Ʀ@cG3W`!5\y X!#|dm.Xå(5J Ŏhc54J 8sZ@￑w=:$Isʡ|8 ܑwf0BlƣIS/YIBNDrN/mTCtPbR.mxn}IDUBxSINV0[3/J|Jsw /aHy|

急求!设计数字电压表,要求能够测量0-5V电压能够通过数码管显示被测量的值.谢谢啦~~
急求!设计数字电压表,要求能够测量0-5V电压能够通过数码管显示被测量的值.
谢谢啦~~

急求!设计数字电压表,要求能够测量0-5V电压能够通过数码管显示被测量的值.谢谢啦~~
看看这个合不合你胃口:
http://www.iccavr.com/forum/dispbbs.asp?BoardID=2&ID=21449&replyID=&skin=1
也是测量0-5V的

用一个带A/D转换接口的单片机轻松实现。

目录
摘要及关键词……………………………………………………………… 2
一、实现方案……………………………………………………………… 3
1.硬件选择方案……………………………………………………… 4
2.程序设计…………………………………………………………… 12
二、系统的测试与结果…………………………………………………… 17
三、调试过程及问...

全部展开

目录
摘要及关键词……………………………………………………………… 2
一、实现方案……………………………………………………………… 3
1.硬件选择方案……………………………………………………… 4
2.程序设计…………………………………………………………… 12
二、系统的测试与结果…………………………………………………… 17
三、调试过程及问题解决方法…………………………………………… 18
四、课题设计的收获及心得……………………………………………… 18
参考文献…………………………………………………………………… 18
摘要:

本课题实验主要采用AT89S51芯片和ADC0809芯片来完成一个简易的数字电压表,能够对输入的0~5 V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示,测量误差约为0.02 V。该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。数据处理则由芯片AT89S51来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。显示模块主要由7段数码管及相应的驱动芯片(74HC245)组成,显示测量到的电压值。
关键词:简易数字电压表、ADC0809、AT89S51。
Abstract:
The experiment is mainly to make a simple digital voltage meter with the adoption of AT89S51 and ADC0809 chips which can measure the input analog DC voltage of 0~5 V . It shows the voltage through an integral digital code tube of 7 pieces of LED. The measuring error is about 0.02 V. The circuit of the Voltage meter is mainly consisted of three mould pieces: A/D converting mould piece, data processing mould piece and manifestation controlling mould piece. A/D converting is mainly completed by the ADC0809, it converts the collected analog data into the digital data and transmits the outcome to the manifestation controlling mould piece. Data processing is mainly completed by the AT89S51chip, it processes the data produced by the ADC0809 chip and generates the right manifestation codes, also transmits the codes to the manifestation controlling mould piece. Also, the AT89S51 chip controls the ADC0809 chip to work. Manifestation controlling mould piece is mainly consisted of the digital code tube and the driving chip (74HC245), it shows the voltage measured by the voltage meter.
KEYWORDS: simple digital voltage meter , ADC0809 , AT89S51.
实现方案:

本实验采用AT89S51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1所示。该电路通过ADC0809芯片采样输入口IN0输入的0~5 V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89S51芯片的P0口。AT89S51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1口经驱动芯片74HC245驱动,再传送给数码管。同时它还通过其三位I/O口P3.0、P3.1、P3.2产生位选信号,控制数码管的亮灭。另外,AT89S51还控制着ADC0809的工作。其ALE管脚为ADC0809提供了1MHz工作的时钟脉冲;P2.3控制ADC0809的地址锁存端(ALE);P2.4控制ADC0809的启动端(START);P2.5控制ADC0809的输出允许端(OE);P3.7控制ADC0809的转换结束信号(EOC)。系统框图如图1-2所示。

图1-1 电路原理图

图1-2 系统框图
硬件选择方案:
一.实验所需元器件:
1. AT89S51芯片 1块
2. ADC0809芯片 1块
3. 74HC245芯片 2块
4. 4位一体数码 1个
5. 6MHz晶振 1个
6. 33pF电容 2个
7. 0.1uF滤波电容 2个
8. 10uF电解电容 1个
9. 按键开关 1个
10.发光二极管1个
11.4.7KΩ精密电位器1个
12.510Ω电阻 12个
13.8.2KΩ电阻1个
14.10KΩ电阻1个
15.导线 若干
二.主要元器件的介绍
1. 模数转换芯片ADC0809:
ADC0809是典型的8位8通道逐次逼近式A/D转换器,其实物如图1-3所示。它可以和微型计算机直接接口。ADC0809转换器的系列芯片是ADC0808,可以相互替换。

图1-3 ADC0809实物图

1) ADC0809内部逻辑结构

图1-4 ADC0809的内部逻辑结构及引脚图

ADC0809的内部逻辑结构如图1-4所示。图中多路模拟开关可选通8路模拟通道,允许8路模拟量分时输入,并共用一个A/D转换器进行转换。地址锁存与译码电路完成对A、B、C三个地址位进行锁存与译码,如表1-1所示。
表1-1 ADC0809通道选择表
C(ADDC)B(ADDB)A(ADDA)选择的通道
000IN0
001IN1
010IN2
011IN3
100IN4
101IN5
110IN6
111IN7
2) ADC0809的引脚
ADC0809芯片为28引脚双列直插式封装,其引脚排列如图1-4所示。
(1)IN0~IN7:8路模拟量输入通道。
(2)A、B、C:模拟通道地址线。这3根地址线用于对8路模拟通道的选择,其译码关系如表1-1所示。其中,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。
(3)ALE:地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
(4)START:转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。本信号有时简写为ST。
(5)D7~D0:数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高。
(6)OE:输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
(7)CLK:时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号。
(8)EOC:转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
(9)Vcc: +5V电源,GND:地。
(10)Vref:参考电压。参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=0V)。
3) ADC0809的工作原理:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
(注意:ALE信号常与START信号连在一起,这样连接可以在信号的前沿写入地址信号,在其后沿启动A/D转换,图1-5为ADC0809信号的时序配合图)。
图1-5 ADC0809信号的时序配合

2. 数据处理及控制芯片AT89S51:
AT89S51是美国ATMEL公司生产的低功耗、高性能CMOS 8位单片机。图1-6和1-7分别为其实物图和内部总体结构图。AT89S51片内含有4k字节Flash闪速存储器,128字节内部 RAM,32个I/O 口线,看门狗(WDT),两个数据指针,两个16 位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存 RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1-6 AT89S51实物图


1) 主要性能参数
与MCS-51产品指令系列完全兼容;
4K字节在系统编程(ISP)Flash闪速存储器;
1000次擦写周期;
4.0~5.5 V工作电压范围;
全静态工作模式:0Hz~33MHz;
三级程序加密锁;
128字节内部RAM;
32个可编程I/O口线;
2个16位的定时/计数器;
6个中断源;

图1-7 AT89S51芯片内部总体结构图
全双工串行UART通道;
低工耗空闲和掉电模式;
中断可从空闲模式唤醒系统;
2) AT89S51的引脚:
AT89S51芯片为40引脚双列直插式封装,其引脚排列如图1-8所示。

图1-8 AT89S51的引脚图
(5)P2口:P2口是一个内部提供上拉电阻的8位双向I/O口,P2口的输出缓冲器可驱动4个TTL逻辑门电路。对P2口管脚写入“1”后,被内部上拉电阻拉高,可用作输入。P2口被外部下拉为低电平时,将输出电流,这是由于内部接有上拉电阻的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在访问8位地址外部数据存储器时,P2口线上的内容,在整个访问期间不改变。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
(6)P3口:P3口是一个内部提供上拉电阻的8位双向I/O口,P3口的输出缓冲器可驱动4个TTL逻辑门电路。对P3口管脚写入“1”后,被内部上拉电阻拉高,可用作输入。P3口被外部下拉为低电平时,将输出电流,这是由于内部接有上拉电阻的缘故。P3口除了一般I/O线的功能外,还具有更为重要的第二功能,如表1-3所示。P3口同时为FLASH编程和编程校验接收一些控制信号。
(1)V (1)VCC:电源电压;
(2)GND:接地;
(3)P0口:P0口是一组8位漏极开路双向I/O口,每位引脚可驱动8个TTL逻辑门路。对P0口的管脚写“1”时,被定义为高阻抗输入。在访问外部数据存储器或程序存储器时,它可以被定义为数据总线和地址总线的低八位。在FLASH编程时,P0 口作为原码输入口;当FLASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
(4)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口的输出缓冲器可驱动4个TTL逻辑门电路。对P1口管脚写入“1”后,被内部上拉电阻拉高,可用作输入。P1口被外部下拉为低电平时,将输出电流,这是由于内部接有上拉电阻的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P1口还具有第二功能,如表1-2所示。
表1-2 P1口的第二功能
端口引脚第二功能
P1.5MOSI(用于ISP编程)
P1.6MISO(用于ISP编程)
P1.7SCK(用于ISP编程)
表1-3 P3口的第二功能
端口引脚第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INTO(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(定时器0外部输入)
P3.5T1(定时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
(7) RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
(8) ALE//RPOG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
(9)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的信号将不出现。
(10)/EA/VPP:当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
(11)XTAL1:片内高增益反向放大器的输入及内部时钟工作电路的输入。
(12)XTAL2:片内高增益反向放大器的输出端。
3) AT89S51与AT89C51的区别
AT89S51在AT89C51的基础上,又增加了许多功能,性能有了较大提升。
(1)ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。
(2)工作频率为33MHz,大家都知道89C51的极限工作频率只有24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
(3)具有双工UART串行通道。
(4)内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。
(5)双数据指示器。
(6)电源关闭标识。
(7)全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
(8)兼容性方面:向下完全兼容51全部字系列产品。比如8051、89C51等等早期MCS-51兼容产品。在89C51上一样可以照常运行,这就是所谓的向下兼容。
4) AT89S51的复位电路
AT89S51的复位电路如图1-9所示。当单片机一上电,立即复位;另外,如果在运行中,外界干扰等因素使单片机的程序陷入死循环状态或“跑飞”,就可以通过按键使其复位。复位也是使单片机退出低功耗工作方式而进入正常状态的一种操作。

图1-9 复位电路
电容C和电阻R1实现上电自动复位。增加按键开关S和电阻R2又可实现按键复位功能。R2的作用是在S按下的时候,防止电容C放电电流过大烧坏开关S的触点。因保证R1/R2 >10。一般取C=10uF,R2=100Ω,R1=8.2KΩ。
5) AT89S51与ADC0809的连接
AT89S51与ADC0809的连接电路如图1-10所示。
AT89S51与ADC0809的连接必须注意处理好3个问题:
(1)在START端送一个100ns宽的启动正脉冲;
(2)获取EOC端上的状态信息,因为它是A/D转换的结束标志;
(3)给“三态输出锁存器”分配一个端口地址,也就是给OE端送一个地址译码器的输出信号。

图1-10 AT89S51与ADC0809的连接电路
3. 驱动芯片74HC245
74HC245为三态输出的八组总线收发器,在本实验中作为驱动芯片使用,用于驱动数码管的点亮。图1-11和图1-12分别为其实物图和引脚图。
(1)A:A总线端;
(2)B:B总线端;
(3)/G:三态允许端(低电平有效);
(4)DIR:方向控制端;
(5)Vcc:电源;
(6)GND:地。

图1-11 74HC245的实物图

图1-12 74HC245引脚图
4. 4位一体7段LED数码管
本实验的显示模块主要由一个4位一体的7段LED数码管(SM410564)构成,用于显示测量到的电压值。它是一个共阳极的数码管,每一位数码管的原理图如图1-13所示。每一位数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收AT89S51的P1口产生的显示段码。1,2,3,4引脚端为其位选端,用于接收AT89S51的P3口产生的位选码。图1-14和图1-15分别为其实物图和引脚图。

图1-13 一位数码管的原理图

图1-14 SM410564数码管实物图
1.主程序设计
初始化中主要对AT89S51,ADC0809的管脚和数码管的位选及所用到的内存单元70H,78H,79H,7AH 进行初始化设置。
准备工作做好后便启动ADC0809对IN0脚输入进的0~5V电压模拟信号进行数据采集并转换成相对应的0~255十进制数字量。
在数据处理子程序中,运用标度变换知识,编写算法将0~255十进制数字量转换成0.00~5.00V的数据,输出到显示子程序进行显示。
整个主程序就是在A/D转换,数据处理及显示程序循环执行。整个程序流程框图如图1-16所示。

图1-16 主程序流程图
2.各子程序设计
1)A/D转换子程序
启动ADC0809对模拟量输入信号进行转换,通过判断EOC(P3.1引脚)来确定转换是否完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,将转换完成的数据存储到70H中。
程序流程图如图1-17所示。

图1-17 A/D转换程序流程图
2)数据处理子程序

程序流程图如图1-18所示

图1-18 数据处理子程序流程图
3)显示子程序
显示子程序采用动态扫描法实现三位数码管的数值显示。测量所得的A/D转换数据放在70H内存单元中,测量数据在显示时需转换成10进制BCD码放在78H~7AH单元中。寄存器R1用作显示数据地址指针。程序流程图如图1-19所示。

图1-19 显示子程序流程图

3.源程序
ORG 0000H
LJMP START
ORG 0003H
RETI
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
RETI
ORG 002BH
RETI
ORG 0030H
;初始化参数
START: CLR A
SETB P3.7 ;初始化EOC
CLR P3.0 ;初始化LED位选,全不选中。
CLR P3.1
CLR P3.2
MOV P2 , A ;初始化P2口,清除对ADC0809的控制信号。
MOV 70H , A ;初始化数据采样后存储空间。
MOV 78H , A ;初始化数据处理后3位有效数字的存储空间(78H最高位,7AH最低位)。
MOV 79H , A
MOV 7AH , A
MOV A , #0FFH ;初始化P0,P1口,写入高电平。
MOV P0 , A
MOV P1 , A
;主程序
MAIN: LCALL AD_SUB ;调用A/D转换子程序,开始采样并转换。
LCALL TURN_SUB ;调用数码转换子程序,将采样转换来的0-255转换成一一对应的
;0.00-5.00
LCALL DISP_SUB ;调用显示子程序。
LJMP MAIN
;==============================================================================
;A/D转换子程序
AD_SUB: CLR A
MOV P2 , A ;初始化P2口,清除对ADC0809的控制信号。
MOV R0 , #70H
LCALL AD_ST ;调用采样转换子程序
WAIT: JB P3.7 , DATASAVE ;判断采样转换是否完毕,完毕则跳转到DATASAVE进行存储。
AJMP WAIT ;否则继续等待。
;启动采样,送脉冲时序
AD_ST: SETB P2.3 ;ALE 脉冲时序
NOP
NOP
CLR P2.3
SETB P2.4 ;START 脉冲时序(上跳清零,下跳开始转换)
NOP
NOP
CLR P2.4
NOP
NOP
RET
;采样转换的数据存储
DATASAVE: SETB P2.5 ;置位OE端,允许ADC0809输出数据
MOV A , P0 ;将转换的数据存储到70H中
MOV @R0 , A
CLR P2.5
CLR A ;初始化P0,P1,P2口(P0,P1高电平,P2低电平)
MOV P2 , A
MOV A , #0FFH
MOV P0 , A
MOV P1 , A
RET
;将0~255转换为0.00~5.00
TURN_SUB: MOV A , @R0
MOV B , #51
DIV AB
MOV 78H , A ;以上这一段是整数部分(个位)放入78H
MOV A , B ;余数部分放入A
CLR F0
SUBB A , #1AH ;余数和51的一半即1AH比较,以便四舍五入
MOV F0 , C
MOV A , #10
MUL AB ;余数乘以10,以便再除以51
MOV B , #51
DIV AB
JB F0 , LOOP1 ;判断四舍五入,跳到LOOP1是“四舍”
ADD A , #5 ;这是“五入”
LOOP1: MOV 79H , A ;十分位
MOV A , B
CLR F0
SUBB A , #1AH
MOV F0,C
MOV A , #10
MUL AB
MOV B , #51
DIV AB
JB F0 , LOOP2
ADD A , #5
LOOP2: MOV 7AH , A ;百分位
RET
;==============================================================================
;显示子程序
DISP_SUB: MOV R1 , #78H ;R1辅助寄存器,用于存放要显示的数据的地址(初始为最高位78H)
CLR A
MOV P1 , #0FFH ;初始化P1,P2口(P1高电平,P2低电平)
ANL P2 , A
LCALL PLAY ;调用显示位码子程序
CLR P1.7 ;显示最高位(个位)后的小数点
SETB P3.0 ;选中最高位LED数码管
LCALL DELAY ;调用延迟子程序
CLR P3.0 ;取消最高位位选
INC R1 ;提取第二位有效数字(十分位)的数据地址(79H)
LCALL PLAY ;调用显示位码子程序
SETB P3.1 ;选中第二位LED数码管
LCALL DELAY ;调用延迟子程序
CLR P3.1 ;取消第二位位选
INC R1 ;提取最低位(百分位)的数据地址(7AH)
LCALL PLAY ;调用显示位码子程序
SETB P3.2 ;选中最低位LED数码管
LCALL DELAY ;调用延迟子程序
CLR P3.2 ;取消最低位位选
RET
;位码显示
PLAY: MOV A , @R1 ;送偏移量
MOV DPTR , #TAB ;送表首地址
MOVC A , @A+DPTR ;查表得出相应LED段码
MOV P1 , A ;输出显示
RET
;==============================================================================
;延时程序
DELAY: MOV R6 , #10H
DL1: MOV R7 , #10H
DL2: DJNZ R7 , DL2
DJNZ R6 , DL1
RET
;==============================================================================
;0-9段码
TAB: DB 0C0H , 0F9H , 0A4H , 0B0H , 99H , 92H , 82H , 0F8H , 80H , 90H
END
.硬件实物图

图1-20 实验硬件实物图
2.测量结果
显示数值(V) 0.45 1.07 2.21 3.15 4.05 4.60 5.00
测量数值(V) 0.458 1.075 2.217 3.158 4.060 4.620 5.020
系统调试中遇到的问题及解决的方法
1)实验初期,我们选用的是三极管作为数码管的驱动元件,但是在测试过程中发现数码管显示不稳定,发生频闪现象,而且亮度不够。我们就换用了74HC245芯片作为驱动元件,解决了上述问题。
2)在应用滤波电容的过程中,一开始是把电容串联在电路中,导致电路无法导通,而后我们短路电容,解决了问题。
3)电源指示灯上,一开始发现接上电源,指示灯不亮,经过仪器测量发现正负极接反,后重新焊接,问题解决。
4)由于源程序的多处错误,使得仿真无法通过,后经过单步调试,把存在的错误一一排除,通过了软件仿真。
5)在烧录芯片的过程中,由于选择烧录文件的错误及芯片自身问题(因多次烧录,无法再次烧录)使得烧录失败,后经过老师指导并更换了AT89C51芯片,解决了问题。
心得体会
通过本次课题设计,我们对单片机这门课程有了更进一步的了解。无论是在其硬件连接方面还是在软件编程方面,都取得了新的收获。本次实验采用了AT89S51单片机芯片,与以往我们我们所熟悉的C51芯片有许多不同之处,通过本次实验及查阅相关资料,我们对其之间的区别有了一定的认识,在本课题设计报告的硬件介绍部分也对其作了详细的论述。S51在C51的基础上增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。另外,在对单片机编程方面,我们又掌握了一些新的编程思想,使得程序更为简练、易懂,而且更为严谨,程序执行的稳定性得到了提高。
实验中我们还用到了模/数转换芯片ADC0809,以前在学单片机这门课程时只是对其理论知识有了初步的了解。通过本次实验,我们对它的工作原理彻底理解了,对其启动设置、转换结束判断以及输出控制等都基本掌握。电路连接方面,我们对其与单片机的连接也有了更为直观的认识,通过实验的摸索以及必要的理论知识,我们准确的实现了它于单片机的互连。
这是我们第一次涉及实物元器件焊接的实验,对焊接技术掌握的还不够。另外,在布线方面,我们也存在一些问题,导致我们做好的电路板在外观上不怎么美观。在以后的实验中,我们会吸取经验,不断提高在这方面的能力。
参考文献
1.( 978-7-301-10760-7/TN 0032) 魏立峰 王宝兴、《单片机原理及应用技术》、2006年8月、第一版、北京大学出版社、P165~P169。
2.( 9787560935911) 胡乾斌、《单片机原理与应用》、2006年2月、第二版、华中科技大学出版社、P20~P24。
3.( 9787810778374) 李广弟 朱月秀冷祖祁、《单片机基础》、2007年6月、第一版、北京航空航天大学出版社、P65~P67。
致谢
本课程设计能够顺利的完成,离不开王超峰老师,邵雷老师的细心指导以及同学们的关心和帮助,在这里表示由衷的感谢。
在本实验中参考了魏立峰 王宝兴主编的《单片机原理及应用技术》、胡乾斌主编的《单片机原理与应用》以及李广弟 朱月秀 冷祖祁主编的《单片机基础》三本书,给予我们很大的帮助,在此表示感谢

收起

急求!设计数字电压表,要求能够测量0-5V电压能够通过数码管显示被测量的值.谢谢啦~~ 利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,精度越高越好 利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,测量结果用4为数码显示. 利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,测量结果用4为数码显示 利用单片机设计一个数字电压表,能够测量40路0~5V的直流电压值,测量结果用4为数码显示. 简易数字电压表的设计一道题的答案,简易数字电压表的设计要求:简易数字电压表可以测量0~5V的8路输入电压值,并在四位LED数码管上轮流显示或单路选择显示.测量最小分辨率为0.019V,测最 数字电压表的设计技术指标要求:(1),三位半LCD显示; (2),测量直流电压范围0~1V,5V; (3),电压量程自动切换; (4),分辨率100微伏 利用如图所示的实验器材设计电路 要求,灯l1,l2并联,电流表测量l2中的电流(电流值小于0.3A)电压表测量灯l1两端电压,开关控制整个电路. 求电路图怎么画 急 简易数字电压表的设计三、设计要求:1、可以测量0-5V范围内的输入电压;2、输入电压为8路,在4位LED数码管上轮流显示;3、测量最小分辨率为0.02V.用汇编语言编程,还要protus软件制作的仿真 数字电压表设计原理 数字电压表设计论文怎么写利用51单片机与ADC0809 测量0-5V之间的直流电压值,四位数码显示. 仪器仪表类题目(直流数字电压表)一、任务设计并制作直流数字电压表.二、要求1.基本要求(1)测量范围:0V~3V(2)量程:300mV,3V(3)显示范围:十进制数0~2999(4)测量分辨率:0.1mV 用ADC0809和单片机STC12C5A60S2设计一个简易数字电压表,要求四位共阳极数码管显示0到5V电压,数码管是595串并联的,求大神帮帮忙这个的C程序,财富值多多的…… 用ADC0809制作数字电压表不测量时屏幕数字乱跳测量范围是0~5V,测量的时候还蛮准的,但不测量时总会显示不同的数值,求解释以及解决方法 求简易数字电压表的设计测量0-5V的8路输入电压值 在4位LED数码管上轮流显示或单路选择显示 测量误差为正负0.02设计详细的结构原理图 定义设置各I/o口,各位及寄存器硬件电路设计及描述 软 简易直流数字电压表设计 数字电压表的设计设计具有测量0~100伏交直流电压并显示的数字电压表,利用模拟电子和数字电子知识,合理选用测量控制元件,选合适IC芯片级外部元件及驱动元件设计内容:1.选用A/D转换器完 如何制作一个测量0-12v直流电压的数字电压表,可用51单片机,也可不用.求详细过程和程序.急需,非常感谢!非常感谢!急需!最好有完整的设计资料和元件清单,有的可发至q q 2 7 5 8 7 3 1 8 0这个q q邮