简易数字电压表设计--毕业论文.doc
宁夏大学新华学院 本科毕业设计(2017届)题 目 简易数字电压表设计 系 别 专 业 年 级 学生学号 学生姓名 指导教师 年 月 日宁夏大学新华学院本科学位论文摘 要一个测试结果稳定、准确的数字电压表,既能减少了使用者的工作量,又提高了测量的精准度,而且人为误差被大大减小,方便与电路打交道的人快速有效的完成自己的工作。本项目设计并实现了一个能够对0-200V范围的直流电压进行测量的数字电压表,显示部分小数点自动实现切换。项目基于AT89C51单片机,拓展AD转换、显示部分。不同档位的待测电压通过不同档位的衰减电路后变为0-200mV,再通过一个OPA336一致放大到0-2V送入AD的输入端,然后通过芯片AT89C51内的程序控制AD转换并输出。不同档位的电压信号又不同的程序控制输出到数码管显示。该电路设计新颖、功能强大、可扩展性强,连线简单易于实现,而且成本很低,测出的电压精度也足够满足需求。关键词: 数字电压表;AT89C51单片机;A/D转换IAbstract A stable and accurate test results of the digital voltmeter, which can reduce the user workload, and improve the measuring precision, and human error is greatly reduced, easy to deal with circuit quickly and effectively complete their work. This project was designed and implemented a to the range of 0-200 - v dc voltage measurement of digital voltmeter, shows part of the decimal point automatically switch. Project based on AT89C51 and expand the AD conversion, display part. Different gear after attenuation circuit of the voltage through different gear under test into a 0-200 mv, then through a consistent OPA336 amplification to 0 to 2 v into the input end of the AD, and then through the procedure in the chip AT89C51 control AD conversion and output. Different gear voltage signal and program control output to the digital tube display. The circuit design, powerful, strong scalability, attachment simple and easy to implement, and the cost is low, measured voltage precision is enough to meet demand.Key words: Digital voltmeter; AT89C51; A/D conversionII目 录第1章 前言1.1 概述1.2 系统设计目标1.3 可行性方案1.4 系统总体设计第2章 系统硬件设计与实现2.1 AD转换部分设计2.2 ADC0809芯片介绍2.3芯片及显示部分设计第3章 系统的软件设计3.1数字电压表功能模块3.2软件部分的实现第4章系统测试与结果分析致谢参考文献附录第1章 前言 电压、电流、功率是表征电信号能量大小的三个基本参量。在电子电路中,只要测量出其中一个参量就可以根据电路的阻抗求出其它二个参量。考虑到测量的方便性、安全性、准确性等因素,几乎都用测量电压的方法来测定表征电信号能量大小的三个基本参量。此外,许多参数,例如频率特性、谐波失真度、调制度等都可视为电压的派生量。所以电压的测量是其它许多电参量,也包括非电量测量的基础。电压是基本的电参数,其它许多电参数可看作电压的派生量,由于电压测量方便,因此电压测量是电子测量中最基本的测量。按测量结果的显示方式可将电子电压表分为模拟式和数字式两大类。数字式电压表的核心是A/D转换器,A/D转换器最基本的两种类型是积分型和比较型。前者抗干扰能力强,测量精度高,但测量速率低;后者测量速度快,但抗干扰能力差。总的来说,积分型特别是双斜积分式DVM性能较优,应用较广泛。数字电压表除具有一般的所具有的准确度高、数字显示、读数迅速准确、分辨力高、输入阻抗高、能自动调零、自动转换量程、自动转换及显示极性等优点,因而体积小,可靠性好,操作简便,由于数字电压表具有上述这些优点,使得它获得越来越广泛的应用。使用数字万用表的注意事项:(1)要注意该电压表的量程,切误测量比额定值大。(2)电压表使用或存放应避免高温、寒冷、阳光直射、高湿度及强烈振动环境。1.1 概述 数字电压表(Digital Voltmeter)简称DVM,它是利用模拟/数字变换器(A/D)原理,以十进制数字形式显示被测电压值的仪表。DVM除了广泛用于电压测量外,通过各种变换器还可以测量其他电量或非电量,用途十分广泛。DVM的高速发展,使它已成为实现量程自动化、提高工作效率不可缺少的仪表。数字化是当前计量仪器仪表发展的主要方向之一。而高准确度直流DVM的出现,又使DVM进入了精密标准测量领域。DVM广泛应用在测量领域中,其测量结果的准确度和可信度取决于它结构主要性能和技术指标。评价某种DVM性能的优劣,产品质量是否合格,是否满足技术指标的要求,必须通过正确的鉴定和测试结果才能分析判断出来。传统的指针式电压表功能单一,精度底,读数不方便,不能满足数字化时代的需要。采用单片机的数字电压表,具有精度高,抗干扰能力强,可扩展性强等优点。现今,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量,工业自动化仪表,自动测试系统等智能化测量领域,展示了强大的生命力。而且,由DVM扩展而成的各种通用及专用数字仪表仪器,也把电量及非电量测量技术提高到新的水平。本设计中电压表可以测量直流电压测量范围(0200V)共分四档:200mv、2v、20v、200v,并且通过4位LED数码管三位半显示其数值。 所谓三位半的三位是指可以显示09的十个数字,称作全位。千位数最大显示为1(小于1时消隐),这位在理论上讲最大能显示2,比如在2V挡,最大显示应该是2.000,但实际显示1.999,和理论值还差一。那么这位理论值最大应该显示2,而实际只能显示1,就叫做1/2位。理论值为分母,实际显示最大值为分子。根据数字电压表的功能实现要求,选用AT89C51单片机作控制系统,由ADC0809实现AD转换功能,放大器选用OPA336实现放大10倍的功能。在保证送入A/D的电压为2V的等效电压时,利用AD还可以较精确地测出其值。因为对不同电压档位采用不同的端口和程序控制,所以可以大大减小电路的要求,更利于实现。1.2系统设计目标本项目要求设计并实现一个数字电压表的装置,该装置能够对0-200V范围的直流电压进行测量。输入为模拟直流电压,输出为数字量,并在必要的辅助输出显示设备上显示。同时具有正、负电压极性显示,小数点显示。能判读并显示被测量信号超出所选择的量程范围。并根据不同的量程能自动调整小数点。 数字电压表测量范围0-200V,能将被测的模拟直流电压在显示设备上显示出来。数字电压表以基本量程为基础,同时设计衰减器进行量程的扩展。 具有位(三位半)显示:有3位完整的显示,另外最高位只显示0或1。能够判读并显示被测电压的极性。测量速度为25 次/秒,分辨率为0.1mV,测量误差g<±0.1%。1.2可行性方案方案一:用A/D转换、LED显示芯、各种需要的中规模门电路芯片、电阻、电容等纯硬件实现数字电压表:通过电阻衰减网络得到衰减后的电压,送入CC7107,将其输出的数字量接入LED显示。该方法是用纯硬件实现数字电压表,硬件连接较复杂,电路体积大,测量方式不灵活,测量的误差比较大、精确度难做高。 利用ICL7106实现的电路连线图如图1ICL7106是美国Intersil公司的产品,是目前应用最广泛的一种单片三位半的A/D转换器。图1该仪表的量程UM=200Mv,称之为基本表或基本档。其中:C1、R1分别为振荡电容和振荡电阻。RP、R2组成基准电压的分压电路。RP采用精密多圈电位器,R2为固定电阻,调整RP可使基准电压Uref=100.0mV。R3、C3为模拟输入端的高频阻容式滤波器,以提高仪表的抗干扰能力。因ICL7106的输入阻抗很大,输入电流很小,故可取R3=1M,C3=0.01uF。C2、C4分别为基准电容与自动调零电容。C5,R4依次为积分电容和积分电阻。仪表采用9V电池供电。电路中将IN-端与COM端短接。该电压表的测量速率约为2.5次/秒。而ICL7106只有液晶笔段及背电极驱动端,没有小数点驱动端8。要显示小数点,需另加外围电路。方案二:采用单片机+A/D芯片+显示芯片设计数字电压表:单片机型号广泛、并且价格低廉。只要单片机内部具有中断、I/O、RS232等模块就能够满足选型基本要求,系统的精度能够保证。该方法硬件连接相对简单,测量误差较小,精度较高。原理框图如图2据数字电压表的功能实现要求,选AT89C51单片机作控制系统,低电压经放大器选用OPA336实现放大10倍、高电压经大电阻分压从而控制输入ADC0809的信号在2V左右实现AD转换经AT89C51送入LED显示。图2A/D转换方案模/数转换器是一种连接的模拟量转化成离散数字量的一种电路或器件。模拟信号转换为数字信号一般需要经过抽样保持和量化编码两个过程。针对不同的采样对象,有不同的A/D转换器可供选择,其中有通用的也有专用的。有些ADC还包含有其他的功能,在选择A/D器件时需要考虑多种因素,除了关键参数、分辨率和转换速度以外,还需考虑其他因素,如静态与动态精度,数据接口类型,控制接口与定时,采样保持性能,基本要求,校准能力、功耗、使用环境要求、封装形式以及与软件相关的问题。ADC按功能划分可以分为直接转换和非直接转换两大类,其中非直接转换又有逐次分级转换、积分式转换等类型。 A/D转换器在实际应用时,除了要设计适当的采样/保持电路、基准电路和多路模拟开关等电路外,还应根据实际选择的具体芯片进行输入模拟信号极性转换等设计。 方案1:采用分级式转换器,这种转换采用两步或多步进行分辨率的闪烁式转换,进而快速的完成模/数转换,同时可以实现较高的分辨率。例如,在利用两步分级完成n位转换的过程中,首先完成m位的粗转换,然后使用精度至少为m位的模/数转换器,将此结果转换达到1/2的精度并且与输入信号比较。对此信号用一个k位转换器转换,最后将两个输出结果合并。方案2:采用双积分型A/D转换器,如ICL7153等。双积分型A/D转换器转换精度高,但转换速度不太快,若用于温度测量,不能及时地反映当前温度值,而且多数双积分型A/D转换器其输出端都不是二进制码,而是直接驱动数码管的。所以,若直接将其输出端接I/O接口会给软件设计带来极大的不方便。 方案3:采用逐次逼近式转换器,对于这种转换方式,通常是采用一个比较器输入信号与为基准的n位DAC输出进行比较,并执行n次1位转换。这种方法类似于天平上用二进制码称量物质。采用逐次逼近寄存器,输入信号仅与高位比较,确定DAC的高位。确定后结果别、被锁存,同时加到DAC上,以决定DAC的输出。逐次逼近型转换器,如ADC0809,AD574等,其特点是转换速度快,精度也比较高,输出为二进制码,直接接I/O口,软件设计简单。ADC0809芯片内包含8位模/数转换器,8通道多路转换器与微控制器兼容的控制逻辑。8通道多路转换器能直接连通8个单端输入信号中的任何一个。由于ADC0809设计时考虑到若干中模/数转换技术优点,所以该芯片非常适合于过程控制,微控制器输入通道的结合口电路、智能仪器和机床控制等应用场合,并且价格低廉,降低设计成本。 方案选择:选择方案3。理由:用ADC0809采样速度快,价格低廉,降低设计成本。最终,我决定选择第二个方案,也就是用单片机实现。因为相比纯硬件,不需要消耗太多的电子元器件,集成度稍微高一点;相比FPGA,它又稍微偏硬件一些,更贴合这次硬件课设的宗旨。而且它不但可其精度和显示可以精确控制,且电路相对简单成本低,稳定性较高,功能扩展方便,故采用此设计。1.4 系统总体设计系统总体框图如下:时钟主要四个模块:档位部分,AD转换部分,芯片AT89C51(内部烧录程序),显示部分(LED数码管)(附加一个时钟模块)。档位部分:四种不同的电压值送到不同的档位,全部都衰减至0-200mV,然后经放大器OPA820放大10倍到0-2V; AD转换:0-2V的衰减电压经0809转换输出0-255的二进制电平值;芯片及显示部分:输出的二进制电平直接送到AT89C51,通过芯片内部程序将信号送到LED显示;时钟部分:涉及0809的一个分频模块,因为ADC0809需要500KHz的输入,而芯片AT89C51(30脚)提供一个2MHz的时钟,所以要经过一个分频模块送给ADC0809。第2章 系统硬件设计与实现2.1 AD转换部分设计 把输入的1路模拟信号量化转换为8路数字量,然后把8路数字量送入芯片处理,再由芯片输出到数码管。 如图为连线图:8位二进制电平输出到芯片的I/O端 ABC三个选择端均接地,故输入端地址000,也就是0输入端>IN-0口。 电压经过衰减和放大后进入IN-0口进入AD,然后芯片AT89C51的P3.0,P3.1,P3.2分别控制转换开始和转换结束后数据允许输出。 1路模拟信号进入IN-0量化转换为8路数字量。 如AD转换输入为A,则输出电平为8位二进制数(对应十进制B)B = A*255/5; 实际显示到数码管:C = B*5/255。(显示代码处理常乘以1000,然后适当加上小数点用以数码管输出显示) 2.1 ADC0809芯片介绍ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。 ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。ADC0809的内部逻辑结构ADC0809引脚结构图IN0IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表所示。地址输入线的通道选择CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三态输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ。 VREF(),VREF()为参考电压输入。 (1)ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。 (2)初始化时,使ST和OE信号全为低电平。 (3)送要转换的哪一通道的地址到A,B,C端口上。 (4)在ST端给出一个至少有100ns宽的正脉冲信号。 (5)是否转换完毕,我们根据EOC信号来判断。 (6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。2.3 芯片及显示部分设计芯片为整个硬件设计的核心,烧录进芯片的代码既负责控制AD的转换和AD量化的数字电压信号的输出,还负责数字电压信号的处理和输出到数码管显示的控制,所以做好与芯片部分有关的设计十分关键。4位位选信号8位段选信号档位标志位AD转换和输出控制连接AD的8位输出电平上面的显示部分采用4合1的8段数码管。单片机的P2.0、P2.1、P2.2、P2.3、P2.4、P2.5、P2.6、P2.7分别与数码管的a、b、c、d、e、f、g、dp相连接,芯片的P2口提供数码管的段码;单片机的P0.0、P0.1、P0.2、P0.3与四位八段数码管的选位输入D1、D2、D3、D4相连接,芯片的P0.0P0.3提供位选信号,用单片机P0.0、P0.1、P0.2、P0.3控制P2口输出到四位LED的相应位。AT89C51的几个I/O口连线很清楚,将AD模块和数码管模块连接起来,并且利用其中的程序起到了一个总的控制和存储作用,也使得电路大大简化。2.4 AT89C51单片机的介绍AT89C51是美国ATM公司生产的低电压,高性能CMOS8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(EPROM)和128bytes的随机存取数据序存器(RAM),器件采用ATMEL公司的高密度/非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,AT89C51单片机为许多嵌入式控制系统提供了一种灵活行高且价廉的方案。管脚排布如图2-2所示。·4K字节可编程FLASH存储器(寿命:1000写/擦循环) ·全静态工作:0Hz-24KHz·三级程序存储器保密锁定·128*8位内部RAM·32条可编程I/O线图2-2 AT89C51管脚排列·两个16位定时器/计数器·6个中断源·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:管脚 备选功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位信号的输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。分频模块设计之所以会有分频模块,是因为AD部分工作的时钟是500KHz与芯片AT89C51能提供的时钟(2MHz)相差较大,所以把AT89C51(30脚)提供的时钟进行四分频,得到500KHz送入AD。 分频电路所需原件及连线接AD0809接芯片30脚U4B的11脚接到单片机的ALE脚(30脚)输入信号,Q非(即Q上有一横杠的脚)接D脚,Q或Q()作输出,这是二分频电路,像这样只用单级(一个D触发器)就是二分频,用两级就是四分频;如此,经分频后的时钟频率为单片机时钟频率的1/24,单片机的时钟平率为11.0592MHz,机器周期为6个时钟周期,则ALE脚输出的频率近视为2MHz,在经四分频电路后得到频率为500KHz的时钟,在将此时钟输入到ADC0809转换芯片作为时钟信号。利用单片的ALE输出脚作为分频电路的输入时应该在单片的EA/VPP脚接上+5V电压。第3章 系统软件部分设计这个部分是依托于系统硬件设计部分的芯片连接设计部分,是整个数字电压表核心,是数字电压表的整体和细节控制终端。3.1 数字电压表功能模块前面已经提到主要有四个功能模块:档位部分,AD转换部分,芯片AT89C51(内部烧录程序),显示部分(LED数码管)(时钟模块不需软件设计)。系统的软件部分主要是实现这四个功能模块,并让它们衔接起来。故进行数字电压表软件设计,就是从这四个功能模块出发。从这四个部分出发,本设计的软件部分分为了AD转换模块,数据处理模块,显示模块,还有一个延时模块。AD转换模块通过控制P3.0-P3.2的值来控制AD的START,EOC,OE引脚来控制ADC0809的转换开始和数字量输出。 数据处理模块则负责调用AD模块并且处理AD输出的数据,把它们送到显示模块。 显示模块则是将处理后的数据,由位选信号选通不同位的数码管来显示电压。 延时模块则是在不同是模块中被调用,是各个模块更好地进行。软件部分的程序流程图程序初始化数据处理模块调用开始AD模块被调用P3.2=1?NYAD输出数据,处理模块接收并处理送至显示模块显示结束3.2 软件部分的实现 软件设计就是在单片机中烧录程序,从而用这个程序对各个单元电路进行功能和工作时序的控制,它使得整个系统正常的工作,完成整个电路的功能。首先是电路中各个部件初始化。初始化单片机的引脚连接,把单片机的各个引脚分配到正确的元件位置。 (1) 单片机P1.0P1.7端口作为A/D转换信号的输出,用于转换后的信号是输出,初始化要清零;单片的的P3口用于信号的检测和反馈;P3.0-P3.2分配给AD0809的三个控制引脚。P3.0作为启动A/D开始转换信号的控制端与A/D芯片的START脚连接;P3.1作为A/D转换芯片转换信号输出允许输入输出的控制信号与A/D的ENABLE脚连接;P3.2用于接收来自A/D转换芯片EOC引脚的外来信号,如果接收到的为高电平那么表示A/D转换结束;否则输出低电平表明A/D正在进行转换。P3.3用于反馈当前测量信号是否超量程报警,超量程是该量程输出一个高电平,扬声器报警提示用户量程超限和欠压请换用其他档位测量。P3.4P3.7分配给档位部分,用于检测档位信号。 (3)单片机的P2.0P2.7分配给显示部分,它们连接到数码管的段码部分,用于送段码给数码管来显示; (4)单片机的P0.0P0.3分配给显示部分的数码管位选端,用于控制输出显示。初始化完后,数据处理模块要开始工作,它首先调用A/D部分进行采样和量化输出:单片机向A/D转换芯片的启动转换引端ST启动转换命令;此阶段单片机将通过P3.2引脚检测A/D的准换结束引脚EOC是否为高电平;当检测到高电平时,单片机P3.1向A/D的输出允许端OE发一个高电平,A/D输出转换后的数字信号。 单片机接收到来自A/D转换后的数字信号后,送到数据处理模块进行片内数据处理。然后将处理后的数据输出到LED显示。 3.3 程序设计、编译和调试 本次设计用到的开发工具是Keil IDE,Keil采用C语言编程,是51系列单片机的通用编程软件。之所以采用C语言进行程序设计,是因为首先我个人对C语言的熟悉程度稍微高一点,而且C语言中,函数是程序的基本组成单位,因此可以很方便地用函数作为程序模块来实现C语言程序。故用C语言来设计不仅简单,程序的可读性和可维护性也大大提升,减轻了程序员的代码工作量。 程序代码见附录二。第4章 系统测试与结果分析 对本系统方案的仿真研究,必须通过 Proteus仿真软件与 Keil 编程软件的联调才能得以实现。首先,在 KeilVision3 软件中,采用汇编语言编写源程序,在新建项目中选择 AT89C51 单片机作为 CPU,再将编好的源程序加载到新建项目中,并进行编译、链接,最终生成.HEX 文件。接着,在Proteus ISIS 界面中编辑电路原理 图,如下所示;双 击AT89C51,打开属性编辑框,在 “Program File”栏 中 导 入 .HEX文件,并设置时钟频率为 12 MHz。 最后,点击运行按钮,进行软硬件交互仿真。仿真时, 在 Proteus 中用鼠标指针调节电位器 RV1 的大小,用虚拟电压表观察输入 ADC0808 的模拟电压值,及 LED实时显示的相应数量值。 在此,给出输入模拟电压为 3.5 V 时的测试图,如下所示;以及虚拟电压表读数和对应 LED 显示数据,如下所示。从表 1 中虚拟电压表的读数和对应 LED 显示数据对比情况可知, 所设计的数字电压表能准确的测量和显示电压值,测量精度可达到 0.01 V,系统仿真效果也达到了预期的设计要求;同时,该数字电压表还具有结构简单,性价比高等特点。虚拟电压读书表/V0.001.004.99150.00200.00对应LED数据/V0.001.005.00150.00200.0031后 记 就我个人来说,很少参与到这种硬件设计,而且是要一个人完成对整个项目的设计,不仅搭建好项目框架,项目细节,各个部分都要自己一个人去仔细推敲,一步一个脚印,慢慢付出时间与汗水。所以,总的下来,我的体会是很深刻的,而且收获颇多。 选择项目时,考虑到个人的能力有限,选择了数字电压表,而且听人说秦臻老师也比较好相处。第一次开会选择实现方案,犹豫许久,最后选择了单片机。其实三种方案都可以,但为了挑战一下,选择了第一次接触的单片机,而且我有一定的C语言基础,做起来应该不会太吃力。所以从选择方案后从头开始接触单片机,学习一些例程,慢慢熟了后开始数字电压表的设计。说实话整个设计过程不轻松,因为还是对单片机不太熟,所以在网上找了许多资料对比着来看。慢慢才摸清楚每个模块,并对每个模块有了自己的理解,然后开始自己的模块设计。硬件慢慢搭好,软件部分参考了许多资料后慢慢清晰,终于进入调试阶段,这时就出了许多问题,例如数码管不亮等等。你不会知道是哪部分出了问题,只能一部分一部分调试测量,分析每部分的输出结果的好坏,一步步排除。慢慢数码管从亮到显示出正确的结果,这其中经历许多。 致 谢 此次电子线路硬件课程在经过几个星期的努力下,终于比较圆满地完成了。整个过程我从零开始,收获颇多。 首先要感谢的是我的老师,她不仅在我的题目和方案确立的过程给予了我巨大的帮助,而且,在我设计整个硬件电路和程序时,给与了我精心的指导。对我在设计中遇到的问题也不辞辛苦地帮我检查电路,指导我解决问题。在最后几天百忙中抽出时间来帮我调试,验收整个设计。 参考文献1康华光. 电子技术基础. 高等教育出版社2罗杰,谢自美. 电子线路设计.实验.测试. 电子工业出版社3梁宗善. 电子技术基础课程设计.华中科技大学出版社4沙占友.数字万用表的原理、使用与维修.M.北京电子工业出版社,20055王晓亮.基于MSP430单片机的数字电压表的设计J.科技创新导报,2009,(01)6王守华.李智.基于PC的数字电压表设计J.今日电子,2006,(08)7张英平.基于AT89C51单片机的数字电压表的Proteus仿真设计与应用J.机床电器,2008,(06)8 马潮、詹卫前、耿德根.ATmega8原理及应用手册M. 北京:清华大学出版社,2003.9 冯建华、赵亮编著.单片机应用系统设计与产品开发M. 北京:人民邮电出版社,2004.10 Robert L.Mott. Machine Elements in Mechanical DesignM.Beijing:ChinaMachine Press,2002.11 Y. Zhang, W. Hu and Y. Rong et al. Graph-based set-up planning and tolerance decomposition for computer-aided fixture design. International Journal of Production Research J, 2001, 39(14): 3109-3126.12 Richard Barnett,Larry OCull,Sarah Cox著,周俊杰等译.嵌入式C编程与Atmel AVRM.北京:清华大学出版社.2003.13 求是科技.单片机典型模块设计实例导航. 北京:人民邮电出版社,2004.附录1 程序代码#include <reg52.h>#include <intrins.h>#define _Nop() _nop_();/空操作sbit ST = P30; /转换启动信号,正脉冲有效sbit EOC = P31;/输出允许信号,高有效sbit OE = P32; /转换结束信号,高有效。当微处理器送出该信号时,ADC0808/0809的输出三态门被打开,使转换结果通过数据总线被读走。在中断工作方式下