数字电压表课程设计_第1页
数字电压表课程设计_第2页
数字电压表课程设计_第3页
数字电压表课程设计_第4页
数字电压表课程设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电气工程学院课程设计题目:数字电压表学 生 姓 名 学 院 电气工程学院 指 导 老 师 彭世林 专 业 微机技术与原理 答 辩 日 期 目 录摘要1第章 概述21.1 研究背景21.2 设计思想及基本功能3第章 总体方案设计32.1 方案选取32.2 系统框图3第章 硬件电路设计43.1 电源电路设计43.1.1 7805概述.43.1.2 电源电路.43.2 晶振电路43.3 复位电路5第章 系统软件设计124.1 主程序流程图.12第5章 总结.12 5.1 程序编译.12 5.2 仿真结果.16参考文献致谢摘要在电路设计中我们时常会用到电压表,过去大部分电压表还是模拟的,虽然精度较高但

2、模拟电压表采用用指针式,里面是磁电或电磁式结构,所以响应较慢。为适应许多高速信号领域目前已广泛使用数字电压表。该系统采用AT89C52单片机作为控制核心,以ADC0808为数据采样系统,实现被测电压的数据采样;使用系列比较器检测输入电压的范围,并通过继电器阵列实现了输入量程的自动转换;使用共阴极数码管显示被测电压。关键词:AT89C52单片机、电压检测、ADC0808模数转换第章 概述1.1 研究背景 数字电压表出现在上世纪50年代初,60年代末发张起来的电压测量仪表,简称DVM,它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后通过显示器件显示

3、。这种电子仪表之所以出现,一方面是由于电子计算机的应用推广到系统的自动控制信号的实验领域,提出了各种被观测量或被控制量转换成数字量的要求,即为了实时控制和数据处理的要求;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的发展,为数字化仪表的出现提供了条件。所以,数字化测量仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦琐与陈旧方式也促进了它的飞速发展。如今,它又成为向智能化仪表发展的必要桥梁。如今,数字电压表已经绝大部分取代了传统的模拟指针式电压表,因为传统的模拟指针式电压表功能单一,精度低,读数的时候非常不方便还经常出错,而采用单片机的数字电压表由于测量精度高

4、,速度快,读数时也非常方便,抗干扰能力强,可扩展性强等优点已被广泛应用与电子和电工测量,工业自动化仪表,自动测量系统等领域。显示出强大的生命力。 数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采样速度较慢,体积重达几十公斤。继之出现了谐波式电压表,它的速度方面稍有提高但准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐进式结构,它不仅保持了比较是准确度高的优点,而且速度也有了很大的提高,但它有一缺点就是抗干扰能力差,很容易受到外界因素的影响,随后,在谐波式的基础上双引申出阶梯波式,它的唯一进步就是成本降低了,可是准确度,速度及抗干扰能力都未提高。而数字电压表的发展已经非常成

5、熟,就原理来讲,它从原来的一两种已经发展到多种,在功能上讲,它从测单一的参数发展到能测多种参数;从制作原件看,发展到集成电路,准确度已经有了很大的提高,精度已经达到1NV,读数速度达到每秒几 目万次,而相对以前价格已经降低了很多。 前实现电压数字化测量的方法仍然是模数(A/D)转换的方法。数字电压表分类繁多,日常生活中一般根据原理的不同进行分类,大致分为:比较式,电压时间变换式,积分式等。 在电量的测量中,电压,电流和频率是最基本的三个被测量,其中电压量的测量最经常。而且随着电子技术的发展,更是需要经常测量高精度的电压,所以数字电压就成为必不可少的测量仪器。另外,数字测量仪器具有读数准确方便,

6、精度度高,误差小,灵敏度高,分辨率高,测量速度快等特点倍受用户亲睐,数字电压表的设计就基于这种需求发展起来。本设计将用AD转换芯片ADC0808对模拟信号进行转换,AD转换芯片ADC0808的基准电压端,被测量电压输入端分别输入基准电压和被测电压。AD转换芯片ADC0808将被测量电压输入端所采集到的模拟电压信号转换成相应的数字信号。然后再通过对单片机AT89SC52进行软件编程,使单片机按规定的时序采集这些数字信号,通过一定的算法计算算出被测量电压值,最后驱动数码管进行电压显示。1.2 设计思想及基本功能 简易数字电压表可以测量范围0至5伏范围内的8路输入电压值,并在4位LED数码管上轮流显

7、示或选择显示。其测量最小分辨率为0.02V。本系统主要包括四大模块:数据采集模块、控制模块、显示模块、A/D转换模块。绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。在软件编程上,采用了汇编语言进行编程,开发了显示模块程序、通道切换程序、A/D转换程序。 实现功能 1对被测电压量的采集; 2通过A/D转换器将模拟量转换为数字量; 3通过89C51单片机驱动数码管显示出电压值.第2章 总体方案设计2.1 方案选取 方案1: 选用单片机AT89C52和A/D转换芯片ADC0808实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。缺点是价格稍贵;优点是转换精度高,且

8、转换的过程和控制、显示部分可以控制。 方案2:选用专用转化芯片INC7107实现电压的测量和实现,用四位数码管显示出最后的转换电压结果。缺点是精度比较低,内部电压转换和控制部分不可控制。优点是价格低廉。 基于课程设计的要求和已经买有AT89C52芯片,我选用了:方案1。2.2 系统框图 将数据采集接口电路输入电压传入ADC0809数模转换元件,经转换后通过OUT1至OUT8与单片机P0口连接,把转换完的模拟信号以数字信号的信号的形式传给单片机,信号经过单片机处理从LED数码显示管显示。P3实现通道选择,P2口接数码管位选,,P1接数码管,实现数据的动态显示。如下图所示:2.3软硬件开发环境 硬

9、件选择:选择AT89C52作为单片机芯片,选用8段LED数码管实现电压显示,利用ADC0808作为数模转换芯片,利用P0至P4的各个串口来进行不同设备间的连接,计算机进行汇编,ISIS 7 Professional仿真器等。 软件开发环境:用Protel99SE软件画电路图。第3章 硬件电路设计3.1 电源电路设计3.1.1 7805概述 7805是我们最常用到的稳压芯片了,它的使用方便,用很简单的电路即可以输入一个直流稳压电源,它的输出电压为5v。7805引脚图其中1接整流器输出的+电压,2为公共地(也就是负极),3就是我们需要的正5V输出电压了。3.1.2 电源电路 基本参数:输出电压:4

10、.75-5.25V;静态电流:4.2-8mA;输出噪音电压:40uV;纹波抑制比:78dB;输出电阻:17m;输出电压温度系数-1.1mV/C;3.2 晶振电路电路中的晶振即石英晶体震荡器。由于石英晶体震荡器具有非常好的频率稳定性和抗外界干扰的能力,所以,石英晶体震荡器是用来产生基准频率的。通过基准频率来控制电路中的频率的准确性。同时,它还可以产生振荡电流,向单片机发出时钟信号。 晶振电路用于产生单片机工作所需的时钟信号,使用晶体震荡器时,c2,c3取值2040PF,使用陶瓷震荡器时c2,c3取值3050PF。在设计电路板时,晶振和电容应尽量靠近芯片,以减小分布电容,保证震荡器的稳定性。18引

11、脚接XTAL1,19引脚接XTAL2,20引脚接地。 XTAL1接外部晶体的一个引脚,XTAL2接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振。在石英晶体的两个管脚加交变电场时,它将会产生一定频率的机械变形,而这种机械振动又会产生交变电场,上述物理现象称为压电效应。一般情况下,无论是机械振动的振幅,还是交变电场的振幅都非常小。但是,当交变电场的频率为某一特定值时,振幅骤然增大,产生共振,称之为压电振荡。这一特定频率就是石英晶体的固有频率,也称谐振频率。石英晶振起振后要能在XTAL2线上输出一个3V左右的正弦波,以便使MCS

12、-52片内的OSC电路按石英晶振相同频率自激振荡。通常,OSC的输出时钟频率fOSC为0.5MHz-16MHz,典型值为12MHz或者11.0592MHz。电容C1和C2可以帮助起振,典型值为30pF,调节它们可以达到微调fOSC的目的。3.3 复位电路 复位电路的主要功能是使单片机进行初始化,在初始化的过程中需要在复位引脚上加大于2个机器周期的高电平。复位后的单片机地址初始化为0000H,然后继续从0000H单元开始执行程序。在复位电路中提供复位信号,等到系统电源稳定后,再撤销复位信号。但是为了在复位按键稳定的前提下,电源稳定后还要经一定的延时才撤销复位信号,以防在按键过程中引起的抖动而影响

13、复位。其中,R1选择1k,C3选择22pF。3.4 A/D转换电路A/D转换的作用是进行模数转换,把接收到的模拟信号转换成数字信号输出。在选择A/D转换时,先要确定A/D转换精度、转换速度以及转换位数等,A/D转换的位数确定与整个测量控制系统所需测量控制的范围和精度有关,在数字电压表设计中采用了8位A/D转换器ADC0808。ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进

14、行A/D转换,实际使用时采用ADC0809进行A/D转换。引脚功能(外部特性)ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。各引脚功能如下: 15和2628(IN0IN7):8路模拟量输入端。 8、14、15和1721:8位数字量输出端。 22(ALE):地址锁存允许信号,输入,高电平有效。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择表如下表所示。 6(START):AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 7(EOC):AD转换结束信号,输出,当AD转换结束时,此端输出

15、一个高电平(转换期间一直为低电平)。 9(OE):数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 10(CLK):时钟脉冲输入端。要求时钟频率不高于640KHZ。12(VREF(+)和16(VREF(-):参考电压输入端11(Vcc):主电源输入端。13(GND):地。2325(ADDA、ADDB、ADDC):3位地址输入线,用于选通8路模拟输入中的一路.ADC0809应用说明(1)ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。(2)初始化时,使ST和OE信号全为低电平。(3)送要转换的哪一通道的地址到A,B,

16、C端口上。(4)在ST端给出一个至少有100ns宽的正脉冲信号。(5)是否转换完毕,我们根据EOC信号来判断。(6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。 ADC0808与AT89C52连接示意图:3.5 AT89C52单片机介绍AT89C52是一种低电压、高性能CMOS8位单片机,片内含有8KB的可反复写的只读程序存储器和256KB的随机存取数据存储器(RAM),器件采用ATMEL公司高密度、非易失性存储器技术制造兼容MCS-51产品指令系统。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和Flash存储单元,使得

17、AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。a.主电源引脚Vss-(20脚):地线Vcc-(40脚):+5V电源b.外接晶振或外部振荡器引脚XTAL1-(19脚):当采用芯片内部时钟信号时,接外部晶振的一个引脚;当采用外部时钟信号时,此脚应接地。XTAL2-(18脚):当采用芯片内部时钟信号时,接外部晶振的一个引脚;当采用外部时钟信号时,外部信号由此脚输入。c.控制、选通或电源复用引脚RST/Vp0-(9脚):复位信号输入;Vcc掉电后,此脚可接上备用电源,在低功耗条件下保持内部RAM中的数据。ALE/PROG-(30脚):ALE即允许地址锁存信号输出,当单片机访问外部

18、存储器时该脚的输出信号用于锁存P0的低8位地址,其输出的频率为时钟振荡频率的1/6。PROG为编程脉冲输入端,当选用8751单片机时,由此脚输入编程脉冲。/PSEN-(29脚):访问外部程序存储器选通信号,低电平有效,用于实现外部程序存储器的读操作。/EA/Vpp-(31脚):EA为访问内部或外部程序存储器选择信号,EA=0,单片机只访问外部程序存储器,故对8031此脚只能接地;EA1,单片机访问内部程序存储器,固对8051和8751此脚应接高电平,但若程序指针PC值超过4KB(OFFFH)范围,单片机将自动访问外部程序存储器。d.多功能I/O引脚P0口-(3239脚):P0数据/地址复用总线

19、端口。P1口-(18脚):P1静态通用端口。P2口-(2128脚):P2动态端口。P3口-(1017脚):P3双功能静态端口。除作I/O端口外,它还提供特殊的第二功能,其具体含义为:P3.0-(10脚)RXD:串行数据接收端。P3.1-(11脚)TXD:串行数据发送端。P3.2-(12脚)INT0:外部中断0请求端,低电平有效。P3.3-(13脚)INT1:外部中断1请求端,低电平有效。3.6显示电路LED数码管显示器是由发光二极管显示字段的显示器件,也称为数码管。其外形结构如图所示。它由8个发光二极管构成,通过不同的组合可用来显示0-9、A-F及小数点“.”等字符。数码管有共阴极和共阳极两种

20、结构规格,。电阻为外接。共阴极数码管的发光二极管阴极共地,当某发光二极管的阳极为高电平时,二极管点亮;共阳极数码管的发光二极管是阳极,并接高电平,对于需点亮的发光二极管将其阴极接低电平即可。LED数码管采用动态扫描方式连接,通过AT89C52的P1口和P2.0P2.3口控制。P1口为LED数码管的字段码输出端,P2.0P2.3口为LED数码管的位选码输出端,连接图如下图所示:3.7完整电路图第4章 系统软件设计4.1 主程序流程图第5章总结5.1程序编译 首先需要编写程序,程序编写完成以后,通过Keil uVision3软件进行编译。如果出现错误,需要修改程序排除错误,知道编译正确为止。下边是

21、我设计的数字电压表的程序编译截图。软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与uVisions3IDE工具软件结合进行编程仿真调试。如果编译没有错误,则生成.he

22、x文件,用于进行仿真操作。将生成的.hex烧进AT89C52单片机中。5.2仿真结果 将写好的程序下载到仿真软件中的89C52单片机中,点击运行,观察数码管显示数值与图中输入电压进行比较. 基于单片机的数字电压表使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量电压准确,精度高。系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。我的设计主要实现了简易数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。 由于单片机AT89C51为8位处理器,当输入电压为5.00V时,ADC0808输出数据值为25

23、5(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。这就决定了电压表的最高分辨率只能到0.0196V。简易数字电压表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正ADC0808的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。附录1:1. 机器码:0A03FA00C0F9A4BF:10030C00E4F510FDEC2B1C2B0D2B0C2B026:10031C0030B204D2B180F9AFF11C2B128:10032C

24、00AC10AD11EC1201B9E4FBFA797FF1:10033CB007A40799CE1201F26D:10034C008E0C8F0D7C007D0AD08AE0CAFE3:10035C000D7C007D0AC007D0ADE3:10036C0009AE0CAF0D7C007DC007D0A1B:10037CD0AAE0CAF0D7C037DE:07038C008F0B7:0703B90093F5907F017E0027:1003C000D3EF9400EED6E7C00ED1D7020:0D03DCED4C70F7EF1F70E61E80E37E:0103DD0022FD:1

25、003DECFF758AECD2AFD2A9D28C22A9:03000BE8:CFF758AECB2B3326D:A0FEEFA1203B975A0FDE509FF:1003AB975A0FBE50A1203B975A0F7E50BB3:0603BB9C29722FB:10000E00EC4D6011EED33ECDE4EC:10001E00FCFFFEFD22E933EFE12A3:10002E009E4CC00902A4:10003EC0E0EB4A7044B980B2:10004E0006D0E0FBEF4E701CBD8008EBFFA1:10005E00EAFEE9FD80EBE9

26、8DF0A4FEE5F00200F783:10006E00E9CDF9EAFEEBFFEF89F0A4FCE5F0CE89CD:10007E00F0A42EFFE435F0CD89F0A42DFEE435F08A:10008EEF4E7005BD80D780C3EF8BF0A4ACB8:10009E00F0EE8BF0A42CFCE435F0F8EF8AF0A42CF3:1000AE00E5F038FCE433CB8DF0A42CFCE5F03BF806:1000BE00EE8AF0A42CFCE5F038F8E433CF89F0A4F6:1000CE002CFCE5F038CF3400CE8

27、9F0A42FFFE5F0FC:1000DE003EFEE433C98DF0A42EFEE5F039CD8AF054:1000EE00A42FFFE5F03EFEE43DFD33D0E0FB5007CC:1000FE000BBB000FEC2CFCEF33FFEE33FE5D:06010E00ED33FDA:268EC5DE025EA3:F6EC4860F2EC7004FDFEFB:FF22C860DB2481C85009CBE:CAF582E9294B4A7005AB82D0:25475F0007C1A7880C3EF9BEE9AED8E:00DC3EF9BFFEE9AFEED99FDE84

28、2F036:DC23ACF0D0E0FFD0E0FED0E0FDAB:E7101BEB60BAEC2CFCEF33FFEE33FEED13:FDE803F830E705C0F075F000D3:1001A400EF2FFFEE33FEED33FD40B830E7C280AAF7:1001B40075FE75FF0087D007EC6:1001CFD530DA9ECDE:1001D400EF33FFEE33FEED33FDEC33FCD5F0ED22CF:0E01E400E5F0247EA2D513CC92E7CDCEFF220B:1001F200EDD2E7CD33EC3392DE4FFFE0

29、5:FDFC22FCE4CFCECDCC24EFF8063:EDC3CC13CCCD13CDCE13CECF13CF:F030D5DE0202A955:E9D2E7C933E833F892D5EDD2E7CD33EC1B:FC5002B2D52294:EC30E7100FBF000C0EBE00080DBD00041F:BEB6014A2D5EB13FCED92E7FD2274FFCB:FCFDFEFF22E480F8A2D574FF13FC7D8024:E480EF38:3EE0A:0C03EE00787FE4F6D8FDC45:C2D5EC30E709B2D5E4C39DFDE49CFCE

30、EA6:E715B2D5E4C39FFFE49EFE1202B7C365:E49DFDE49CFCB730D507C3E460:0602A3009FFFE49EFE2215:0E02A900C3E49FFFE49EFEE49DFDE49CFC2266:1002B700BC000BBE0029EF8DF084FFADF022E4CC2B:1002C700F875F008EF2FFFEE33FEEC33FCEE9DECF4:1002DFCEE9DFE0FD5F0E9E4CEFD22ED3A:1002E700F8F5F0EE8420D21CFEADF075F008EF2F84:1002F700FFE

31、D33FDD5F0F222C398FD75:FD5F0EA2211:FF程序清单#include#define uint unsigned int#define uchar unsigned charuchar code table=0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90;uchar disp4; /定义数组变量sbit ST=P30; /定义START引脚sbit OE=P31; /定义OE引脚sbit EOC=P32; /定义EOC引脚sbit CLK=P33; /定义CLOCK引脚sbit p17=P17; /定义数码管小数

32、点int getdata,temp;void delay(uint z);void display();void initial();void main()int getdata=0;initial(); /调用初始化函数while(1)OE=0; /刚开始禁止将转换结果输出ST=0;ST=1;ST=0; /启动A/D转换开始while(EOC=1) /等待转换结束OE=1; /允许转换结果输出getdata=P0; /将转换结果赋值给变量getdataOE=0; /禁止转换结果输出temp=getdata*1.0/255*5000; /将得到的数据进行处理disp0=temp%10; /取得

33、个位数disp1=temp/10%10; /取得十位数disp2=temp/100%10; /取得百位数disp3=temp/1000; /取得千位数display(); /调用显示子程序void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void initial() /中断服务程序初始化 TMOD=0x01;TH0=(65536-20)/256;TL0=(65536-20)%256;EA=1;ET0=1;TR0=1;void timer0()interrupt 1 /给ADC0808提供25kHZ的时钟脉冲 TH0=(65536-20)/256;TL0=(65536-20)%256;CLK=CLK;void display() /将显示结果在数码管上显示 P2=0xfe; P1=tabledisp0; delay(1); P2=0xfd; P1=tabledisp1; delay(1); P2=0xfb; P1=tabledisp2; delay(1); P2=0xf7; P1=tabledisp3; delay(1);p17=0;2.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论