《多路数字电压表》doc版.doc_第1页
《多路数字电压表》doc版.doc_第2页
《多路数字电压表》doc版.doc_第3页
《多路数字电压表》doc版.doc_第4页
《多路数字电压表》doc版.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

赣 南 师 范 学 院物理与电子信息学院专业技能训练设计报告书 基于AT89S52单片机的多路数字 电压表的设计姓名: 戴启盛 班级: 09电子科学与技术 学号: 090803005 指导老师:刘小燕 时间:2012年1月2日 目 录内容摘要1关键词1Abstract1Keywords11绪论12 系统设计22.1 设计任务与要求22.2 方案的选择与论证23 系统硬件设计33.1 硬件电路设计33.2 硬件电路组成及介绍33.3 数码管显示模块63.4 硬件元件清单74软件设计与仿真74.1主程序设计84.2A/D转换子程序84.3 显示子程序94.4 仿真软件介绍94.5 仿真结果104.6系统调试 104.7误差分析 10 结束语12附录:程序清单13参考文献18内容摘要:多路数字电压表是电子测量中经常用到的电子器件,该应用系统的控制系统主要利用AT89C52单片机,A/D转换器采用ADC0809芯片。多路数字电压表主要利用A/D转换器,处理过程如下:先用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量和模拟量成正比关系运算得到对应的模拟电压值,然后把模拟值通过显示器显示出来。ADC0809具有8 路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换。如每隔一段时间依次轮流改变3 位地址输入端的地址,就能依次对8路输入电压进行测量。关键字:AT89C52 ADC0809 数字电压表Abstract:Summary: Multi-channel digital voltmeter is frequently used electronic measurement electronics, the application of the control system is mainly used AT89C52 microcontroller, A / D converter ADC0809 chip. Multi-channel digital voltmeter mainly use A / D converter, the process is as follows: first with the A / D converter samples the voltage of the brightest, the corresponding digital, then digital and analog computing to be proportional to corresponding analog voltage value, then the analog value displayed through the display. ADC0809 with 8 analog input port, through the 3-bit address inputs select from 8 all the way to conversion. Change from time to time take turns, such as 3-bit address input address, you can turn on the 8 input voltage measurement. Keywords: AT89C52 ADC0809 digital voltmeter1绪论随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器计数电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。 数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力理。本设计AT89C51单片机的一种电压测量电路,该电路采用ADC0808本文介绍一种基于A/D转换电路,测量范围直流 05V 的4路输入电压值,并在四位LED数码管上显示或单路选择显示。测量最小分辨率为0.019V,测量误差约为正负0.02V。2 系统设计2.1 设计任务与要求2.1.1 设计任务(1)设计一个用数码管轮流显示的数字电压表。(2)在设计的过程中,选择12个单元电路使用仿真软件进行仿真调(3)用计算机绘制所有的电路图。2.1.2 设计要求(1)测量的最小分辨率为0.019V,测量误差为0.02V。(2)对8 路输入电压进行测量,并显示,显示至最小值。待测输入电压为8路,电压的范畴为0V5V,要求能在4 位LED数码管上轮流显示或单路选择显示。(3)可循环显示8路电压值,也可选择其中某路进行单路循环。(4)显示位数4位,其中1路显示路号,3 位显示电压值。2.2 方案的选择与论证2.2.1 总体设计方案通道选择方案设计方案一:考虑到ADC0808的8路模拟量输入本质上也是模拟开关,因此可以利用其8个模拟通道中的3个作为通道转换器,即根据通道对应的电压测量范围确定对应的电压方法倍数设计对应的放大电路。方案二:利用手动开关实现通道转换。该方案可简化控制程序,消减系统开销。缩短反应时间,不足之处在于操作麻烦。综上所述:方案二所需元件少、成本低且易于实现,则选此方案。显示部分方案设计方案一:单片机的P0、P2口分别接74LS248和ULN2003A芯片来驱动四位数码管方案二:直接用单片机的P1、P2口驱动数码管,此处把ADC0808的输出端接P1口 ,因为P1口能够驱动数码管。综上所述,两个方案都可行,但方案二所需元件少、成本低,则选择此方案。3 系统硬件设计本系统由控制器模块、按键模块、LED显示模块和D/A转换模块4个模块组成,系统硬件组成框图如图1所示。系统总体电路原理图如图2所示。控制器模块按键模块D/A转换模块LED显示模块电源图1系统组成框图3.1硬件电路设计多路数字电压表应用系统硬件电路主要由AT89C51单片机、ADC0809 A/D转换器、数码管动态显示电路和按键处理电路等组成。设计时假设待测的输入电压为8路,电压值的范畴为05V,要求能在4位LED数码管上轮流显示或单路选择显示。测量的最小分辨率为0.019V,测量误差为正负0.02V。3.2硬件电路组成及介绍3.2.1 AT89C51单片机基本结构AT89C51 单片机主要由以下几部分组成:CPU系统l 8位CPU,含累加器;l 时钟电路;l 总线控制逻辑。存储器系统l 4K字节的程序存储器(ROM/EPROM/FLASH,可外扩至64K);l 128字节的数据存储器(RAM,可外扩至64K);l 特殊功能寄存器SFR。 AT89C51引脚封装3.2.2ADC0809 A/D转换器ADC0809具有8路模拟量输入通道IN0-IN7,通过3位地址输入端C,B,A进行选择。D0-D7是8位数字量输出端,ALE是地址锁存控制端,当输入高电平时,C,B,A引脚输入的地址锁存于ADC0809内部的锁存器中,经内部译码电路译码选中相应的模拟通道。6引脚为启动转换控制端,当输入2US宽的高电平脉冲时,就启动ADC0809开始对输入通道的模拟量进行转换。7引脚为A/D转换结束信号EOC,ADC0809为逐次比较型A/D转换器,当开始转换时,EOC信号为低电平,经过一段时间,转换结束,转换结束EOC输出高电平,转换的结果存放在ADC0809内部的输出数据锁存器中。9引脚为A/D转换数据输出允许控制端OE,当OE为高电平时,存放于输出数据锁存器中的数据通过ADC0809的数据线D0D7输出。10引脚为ADC0809的时钟信号输入端CLOCK。再连接时,ADC0809的数据线D0D7与AT89S51的P0口相连,ADC0809的地址引脚、地址锁存端ALE、启动信号START、数据输出允许控制端OE分别与AT98S51的P2口相连,转换结束信号EOC与AT89S51的P3.7相连。时钟信号输入端CLOCK由单片机的地址锁存信号ALE通过14024二分频后得到,由于单片机的系统时钟为12MHZ,因而AD0809时钟输入端CLOCK信号的频率为1MHZ。ADC0809的管脚图如下 ADC0809管脚图3.2.3LED数码管动态显示及按键LED数码管采用动态扫描方式连接,通过AT89S52的P1口和P3.0P3.3口控制。P1口为LED数码管的字段码输入端,P3.0P3.5口为LED数码管的位选码输出端,通过三极管驱动并反向。K1和K2是两个按键开关,它通过单片机的P3.5和P3.6相连,K1用于单路显示或多路循环显示转换控制,K2当单路显示时通道选择。图2 系统电路原理图3.4数码管显示模块数码显示模块电路如图8所示。显示部分选用的是7seg-mpx2-cc两片7段共阴数码管。单片机的P00P07分别接数码管的ADP口,P20、P21分别接数码管1、2接口,分别控制第一片和第二片的暗亮。外加上拉电阻加强驱动能力,使数码管更亮。图3 数码管显示电路3.5硬件元件清单系统元器件清单见下表。表2 系统元器件清单器件数量器件数量AT89S521TL0821按键2DAC080817seg-mpx2-cc1电容(220n)1排阻(4.7k)1电容(33p)2电阻(10k)8排阻(10K)1晶振器1电阻(1k)1电容(10uF)1开关14软件设计与仿真4.1主程序设计主程序包含初始化、调用A/D转化子程序和调用显示程序。初始化部分包含存放通道数据的缓冲区初始化。另外,对于单路显示和循环显示,系统设置了一个标志位00H控制,初始化00H设置为0,默认为循环显示,当它为1时改变为单路或循环按键控制。 开始端口初始化调用A/D转换子函数调用显示子函数 主程序框图4.2 A/D转换子程序 A/D转换子程序用于对ADC0809的8 路输入模拟电压进行A/D转换,并将转换的数值存入8 个相应的存储单元中。A/D转换子程序每隔一定的时间调用一次,每隔一段时间对输入电压采样一次。NN A/D转换结束? EOC=1开始启动一次转换取数据(OE=1)0809地址加1 地址数小于8?返回Y4.3显示子程序LED数码管采用软件译码态扫描方式。在显示子程序中包含多路循环显示程序和单路显示程序,多路循环显示程序把8个存储单元的数值一次取出送到4个数码管上显示,每一路显示一秒。单路显示程序只对当前选中的一路数据进行显示。每路数据显示时须经过转换变成十进制BCD码,放于4个数码管的显示缓冲区中。单路或多路循环显示通过标志位00H控制。在显示控制程序中加入了对单路或多路循环按键和通道选择按键的判断。4.4 仿真软件简介Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。(4)具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。Proteus7.5是目前最好的模拟单片机外围器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD、RAM、ROM、键盘、马达、LED、AD/DA、部分SPI器件、部分IIC器件等)。软件编译采用KEIL C51软件,Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4.5 仿真结果由于程序问题导致了整个仿真中,难以使程序从循环显示部分跳转到逐个显示,经过程序的多次调整还是未能实现功能,不过在逐个显示和循环显示时能够正确显示输入电压的大小,达到了多路数字电压表的基本功能。4.6 系统调试在调试过程中主要是对程序的修改,特别是延时子程序。开始延时较短时,当按下数字键时,两个数码管同时显示按下的数字。如果延时较长则数字会缓慢的显示出来。通过修改程序,将延时调到适中,系统正常工作。4.7 误差分析产生误差的因素主要有一下几点:(1)在参数选择的时候没有完全匹配;(2)数字电压表只能读出3位有效数字;(3)基准电压设定不适中;(4)转换位数不高。结束语本论文基于单片机设计了多路数字电压表的设计本论文基于单片机设计了可预设电压的数控电源,并对其进行了仿真分析。本设计特点: (1)用AT89C52单片机通过软件编程实现,这样节省了硬件资源,降低了成本;(2)用A/D转换模块来实现电压的稳定输出,精确度较高。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的。只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为会服务,从而提高自己的实际动手能力和独立思考的能力。但是设计中也有一些不足之处。首先在仿真过程中实际输出的电压与预设的电压总是有小小的误差,应该换一个转换为数更高,精度更高的转换芯片,还要对基准电压不断调节,是输出电压更加精确。其次,既然做的是电源,应该在输出端接不同值的大电阻,以便检测该电源的输出带负载能力,使之更加实用。 附录:程序清单#include #include #include #define uint unsigned int#define uchar unsigned charsbit oe=P35;sbit start=P30;sbit oec=P34;sbit dot=P36;sbit k1=P33;sbit k2=P31;bit flag=1;uchar result;uint dianya;uchar addr;uchar t,count;uchar temp;void prolongms(uchar x)char y;while(x-)for(y=120;y0;y-);void inital()start=0;oe=0;prolongms(5);P1=1;TMOD=0X10;EA=1;EX1=1;EX0=1;IT0=1;IT1=1;ET1=1;TR1=1;TH1=(65536-50000)/256;TL1=(65536-50000)%256;void w_adr(uchar x)P2=x;_nop_();start=1;_nop_();start=0;void r_dat()oe=1;result=P0;_nop_();oe=0;void scan()if(k2=0)count+;while(!k2);if(count=8)count=0;void display(uchar addr0)uchar ge;uchar fen0;uchar fen1;dianya=(int)(result/255.0*5.0*100);ge=dianya/100;fen0=(dianya-dianya/100*100)/10;fen1=dianya%10;P1=addr0+0x80;prolongms(1);P1=ge+0x40;prolongms(1);P1=fen0+0x20;prolongms(1);P1=fen1+0x10;prolongms(1);void main()inital();while(1)if(flag)w_adr(addr);r_dat();display(addr); elsew_adr(count);r_dat();scan();display(count);if(flag)addr=count;void int0() interrupt 3t+;if(t=20)t=0;addr+;if(addr=8)addr=0;void inti0() interrupt 0count+;if(count=8)count=0;void inti1() interrupt 2flag=flag;count=addr;参考文献1王幸之 钟爱琴. AT89系列单片机原理与接口技术M.北京:北京航空航天大学出版社,2004.2谭浩强.C程序设计(第二版

温馨提示

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

评论

0/150

提交评论