简易数字电压表_第1页
简易数字电压表_第2页
简易数字电压表_第3页
简易数字电压表_第4页
简易数字电压表_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告 课程名称:单片机原理及应用课程设计设计题目: 简易数字电压表 系 别: 通信与控制工程系 专 业: 电信工程 班 级: 二班 学生姓名: 学 号: 起止日期: 指导教师: 教研室主任: 指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年 月 日摘 要本设计数字电压表是利用A/D转换原理,将被测模拟量转换成数字量,并用数字方式显示测量结果的电子测量仪表。通常数字电压表都采用大规模

2、的A/D转换集成电路,测量精度高,读数方便,在体积、重量、耗电、稳定性及可靠性等方面性能指标均明显优于指针式万用表。其中,A/D转换器将输入的模拟量转换成数字量,逻辑控制电路产生控制信号,按规定的时序将A/D转换器中各组模拟开关接通或断开,保证A/D转换正常进行。A/D转换结果通过计数译码电路变换成笔段码,最后驱动显示器显示相应的数值。本系统以单片机AT89C52为系统的控制核心,结合A/D转换芯片ADC0809设计一个数字电压表,能够测量02.5V之间的直流电压值,通过四位数码显示。具有读数据准确,测量方便的特点。关键词:STC89C52;电压表;A/D转换;ADC0809前 言在电量的测量

3、中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理,并且分析了程序如何驱动单片机进而使系统运行起来的原理及方法。本设计主要分为两部分:硬件电

4、路及软件程序。而硬件电路又大体可分为单片机小系统电路、A/D转换电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程,利用Keil软件对其编译,详细的设计算法将会在程序设计部分详细介绍。目 录设计要求11 方案论证与对比11.1 方案一11.2 方案二11.3 方案对比与选择22 系统硬件电路的设计22.1 A/D转换电路的设计及原理32.2 数据处理电路的设计及原理42.3 显示控制电路的设计及原理63 系统程序的设计93.1 初始化程序93.2 主程序93.3 显示子程序93.4 A/D转换测量子程序104 调试及性能分析114.1 调试与

5、测试114.2 性能分析115 详细仪器清单126 总结13参考文献14附录一:A/D转换与控制PCB电路图16附录二:程序17数字电压表设计要求主要利用单片机STC89C52芯片,A/D转换采用ADC0809实现数字电压表, 数字万用表可以测量02.5V范围内的2路输入电压值,并在6位LED数码管上轮流显示,要求程序控制测量的切换。其测量最小分辨率为0.05V.1 方案论证与对比1.1 方案一系统采用STC89C52单片机,A/D转换采用ADC0809.系统除能确保实现要求的功能外,还可以很方便地进行8路其他A/D转换的测量和远程测量结果传送等扩展功能。原理框图如图1所示:STC89C52

6、P0 P2 P1 P3上电复位串口通信电源电路ADC08094位LED显示图 1方案一系统方框图1.2 方案二系统采用STC89C52单片机,A/D转换采用MC14433双积分A/D转换器能够实现转换精度高、抗强干扰的数模转换,而且价格便宜,应用于速度要求不高的工程实际中。原理框图如图2所示:STC89C52 P0 P2 P1 P3上电复位串口通信电源电路MC144333位LED显示图 2 方案二系统方框图1.3 方案对比与选择以上方案中方案一中ADC0809属于逐次逼近式A/D转换器,N次逐次逼近A/D转换器最多只需N次D/A转换、比较判断,就可以完成A/D转换。因此,逐次逼近型A/D转换速

7、度很快,而且带有锁存控制逻辑的8通道多路转换开关,便于选择8路中的任一路进行转换。而方案二中采用了速度大受限制的MC14433双积分A/D转换器。通过以上综合分析可以看出,显然方案一要明显优于方案二,因此数字电压表采用方案一设计。2 系统硬件电路的设计采集 2 个通道的模拟量在数码管显示出来。模拟量值的测量范围是0-255,第三至六个数码管用于显示采集的模拟量的值,每秒钟显示切换一下通道。简易数字电压表测量电路由A/D转换、数据处理及显示控制等组成。2.1 A/D转换电路的设计及原理ADC0809是采用逐次逼近式原理的A/D转换器。1.主要性能分辨率为8位二进制数。模拟输入电压范围0V5V,对

8、应A/D转换值为00HFFH。每路A/D转换完成时间为100µs。允许输入8路模拟电压,通过具有锁存功能的8路模拟开关,可以分时进行8路A/D转换。工作频率为500kHz,输出与TTL电平兼容。2.ADC0809芯片的组成原理根据设计要求如图3所示:图 3A/D转换电路原路图由图可见,它是由地址锁存器、8路模拟开关、8位逐次A/D转换器和三态锁存输出缓冲器构成。由3位地址输入线ADDRA、ADDRB、ADDRC决定8路模拟输入中的1路进8位A/D转换器,A/D转换值进入三态锁存输出缓冲器暂存,在CPU发来输出允许控制信号OE后,三态门打开,经DB7DB0进入CPU总线,完成一次A/D

9、转换全过程。3ADC0809引脚功能ADC0809采用28引脚的封装,双列直插式。A/D转换由集成电路0809完成。0809具有8路模拟输入端口,地址线(23- 25脚即C,B,A,)可决定对哪一路模拟输入作A/D转换。22脚为地址锁存控制(ALE),当输入为高电平时,对地址信号进行锁存。6脚为测试控制(START),当输入一个2uS宽高电平脉冲时,就开始A/D转换。7脚为A/D转换结束标志(EOC),当A/D转换结束时,7脚输出高电平。9脚为A/D转换数据输出允许控制(OE),当OE脚为高电平时,A/D转换数据从该端口输出。10脚为0809的时钟输入端(CLOCK),利用单片机30脚的六分频

10、晶振频率再通过14024二分频得到1MHz时钟。单片机的P1、P3.0P3.3端口作为六位LED数码管显示控制。2.2 数据处理电路的设计及原理STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中

11、断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。STC89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。主要功能特性:· 兼容MCS51指令系统 · 8k可反复擦写(>1000次)Flash ROM · 32个双向I/O口 · 256x8bit内部RAM · 3个16位可编程定时/计数器中断 · 时钟频率0-2

12、4MHz · 2个串行中断 · 可编程UART串行通道 · 2个外部中断源 · 共6个中断源 · 2个读写中断口线 · 3级加密位 · 低功耗空闲和掉电模式· 软件设置睡眠和唤醒功能P0 口:P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。·P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个T

13、TL 逻辑门电路。 P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。RST:复位输入。ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。EA/VPP:外部访问允许。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.3 显示控制电路的

14、设计及原理 显示子程序采用动态扫描法实现4位数码管的数值显示。测量所得的A/D转换数据放70H77H内存单元中,测量数据在显示时须经过转换成为十进制BCD码放在78H7BH单元中,其中7B存放通道标志数。寄存器R3用作8路循环控制,R0用作显示数据地址指针。本系统显示部分采用6位数码管动态扫描显示。动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM 是各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由 I/O控制

15、的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个数码管轮流点亮。本系统采用6位共阳极数码管,COM端接接P20P23端,8个笔划段a-h分别按顺序接P07P00,轮流给P20P23口高电平,使各个数码管轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。电路如图4示:图4显示控制电路8255芯片与I/O口相连,用于扩展键盘按键,由按键来控制通道的选

16、通。8255芯片的PC0PC3用于控制,PC4PC7用于控制具体哪个通道选通。8255芯片的结构图如图5下: 图 5 8255芯片图8255引脚功能说明:RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,

17、 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。 。3系统程序的设计3.1 初始化程序系统初始化时,初始化程序主要用来执行70H77H内存单元清0和P2口置0等准备工作。3.2 主程序在刚上电时,系统默认为循环显示8个通道的电压值状态。当进行

18、一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间在1S左右。主程序在调用显示子程序与测量子程序之间循环。主程序流程图如图6所示。图6 主程序流程图3.3 显示子程序显示子程序采用动态扫描法实现四位数码管的数值显示。测量所得的A/D转换数据放在70H77H内存单元中,测量数据在显示时须经过转换成为十进制BCD码放在78H77H单元中,其中7BH存放通道标志数。寄存器R3用作2路循环控制,R0用作显示数据地址指针。3.4 A/D转换测量子程序A/D转换测量子程序用来控制对ADC0809的2路模拟输入电压的A/D转换,并将对应的数值移入70H77H内存单元。A/D转换测量子程序程序流

19、程图如图7所示。图 7 A/D转换测量子程序流程图4 调试及性能分析4.1 调试与测试采用KeilC51编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作,烧录好程序后进行软硬件联调,最后进行端口电压的对比测试。测试对比表如表1所列。表中标准电压值采用UT56数字万用表测得。表 1 简易数字电压表与“标准”数字电压表对比测试表标准电压值/V0.000.151.001.452.252.72简易电压表测得值/V0.000.161.021.472.262.73绝对误差/V0.00+0.01+0.02+0.02+0.010.01标准电压值/V3.003.454.004.504.754.90简

20、易电压表测得值/V3.013.474.014.524.764.92绝对误差/V+0.01+0.02+0.010.020.010.02从表中可以看出,简易数字电压表与“标准”数字电压表测得的绝对误差均在0.02V以内,这采用8位A/D转换器所能达到的理论误差精度相一致,在一般的应用场合可满足要求。4.2 性能分析(1)由于单片机为8位处理器,当输入电压为5.00V,ADC0809输出数据值为255(FFH),因此单片机最高的数据分辨率为0.0196(5/255)。这就决定了该电压表的最高分精度要求,则应采用12位、13位的A/D转换器。(2)从表格中可以看出,简易电压表测得的值基本上均比标准电压

21、值偏大0.010.02这可以通过校正ADC0809的基准电压来解决。因为该电压表设计时直接用V的供电电源作为基准电压,所以电压可能有偏差。另外,还可以用软件编程来校正测量值。(3)ADC0809的直流输入阻抗为,能满足常用的电压测试需要。另外,经测试ADC0809可直接在2MHZ的时钟频率下工作,这样可省去二进制分频器14024集成块。(4)当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。但是量程越大,测量精度会越低。5 详细仪器清单表 2 仪器清单序号仪器名称数量1PCB板12STC89C5213ADC0809CCN芯片1418255芯片154

22、.7千欧电阻468.2千欧电阻17510欧电阻8810欧电阻2930pF电容21010uF电容111按钮412LED数码管61311.597MHz晶振16 总结通过这学期的单片机的学习,知道了单片机在实际应用中占据很重要的作用,也了解单片机本身的功能,用编程控制;也了解了单片机的一些扩展功能。通过这次设计,我更深入地了解到单片机的使用原理和功能。为期两周的设计中,我看到很多同学都很努力,很认真,我也不敢懈怠。虽说两周的时间有点仓促,但老师和同学们夜以继日在解决问题,我做简易数字电表的设计中也遇到些许问题,但通过他人的指点,并查阅很多有价值的书籍,我从中认识了不少。也增强了自己发现问题解决问题的

23、能力。还有在编程的时候要仔细,要实现一个完整的功能就要考虑全面,在测试程序的时候要善于发现错误,而且可能是一些小问题,比如说把立即数和地址混用,这是很常见的。虽然这次只是实现电压表的简易设计,我相信通过这次学习,会确定我向更高更远的方向漫步,比如电压测量通过扩展接口电路可实现电容、温度、湿度、压力等测量,广泛应用于工业领域。本电路设计别具一格,是一种可调度高、低功耗、宽量程的电压表。可扩展键盘、EEPROM、报警电路,实现电压异常记录、报警等。参考文献1 张鑫. 单片微机原理与应用. 北京.电子工业出版社. 20082 楼然苗.李光飞. 单片机课程设计指导. 北京.航空航天大学出版社. 200

24、73 长洪润.刘秀英. 单片机应用设计200例(上、下). 北京.航空航天大学出版社.20064 张毅刚. 新编MCS-51单片机应用设计(第3版)哈尔滨工业大学出版社.20085 马静.单片机原理与应用. 实践教学指导书中国计量出版社. 2003附录一:A/D转换与控制PCB电路图附录二:程序#include<reg52.h>#include<intrins.h>#include <absacc.h>#define a8255_PA XBYTE0xD1FF /PA口地址#define a8255_PB XBYTE0xD2FF /PB口地址#define a

25、8255_PC XBYTE0xD5FF /PC口地址#define a8255_CON XBYTE0xD7FF /控制字地址 #define uchar unsigned char#define uint unsigned intint DAT; /存转换结果uint da;char a0,a1,a2,a3;sbit EOC=P34;sbit OE=P23 ;sbit START=P27;sbit CLOCK=P20;sbit ADDA=P13;/*把ADC0809的ADD A引脚与单片机的P1.3引脚用导线连接起来,再把那W4,W5都接上跳线帽(即ADD B、ADD C都接地),则此两个引脚

26、电平为0,ADDA可以通过P1.3置0或置1,即可以控制两路输入了 */uchar code table10=0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28; /数码管不显示小数点的段码uchar code table110=0X80,0X9B,0X42,0X0A,0X19,0X0C,0X04,0X9A,0X00,0X08;/数码管显示小数点的段码/*上叙数组10个16进制数元数分别对应十进制数0至9 */*/*子函数声明*/void adc0809();void delays(void);void delay(void);uchar ink

27、ey();void display();void InitTimer0(void);void int_0();/*/void delays(void) /数码管每位显示间隔的时间 uchar mm=10;while(mm-);/*/void delay(void) /按键时的延时消抖子程序 uchar i;for(i=250; i>0;i-);/*/uchar inkey() /按键扫描子程序,返回键值类型为uchar型uchar i,j=0x10,k;uchar keytab16=0x18,0x28,0x48,0x88,0x14,0x24,0x44,0x84,0x12,0x22,0x4

28、2,0x82,0x11,0x21,0x41,0x81 ; /按键编码 a8255_CON=0x81; /设置控制字,PA,PB设为输出,PC口高四位设置为输出,低四位设置为输入 a8255_PC=0x00;a8255_PA=0xff;a8255_PB=0xff; for(i=0;i<4;i+)a8255_PC=j; a8255_PA=0xff;k=a8255_PC; /读键盘状态 k=k&0x0f;if(k!=0) delay();/延时消除抖动 k=a8255_PC; /重新读PC口状态 k=k&0x0f;/屏蔽高四位 ,存低四位状态 if(k!=0) /k不为0,有键

29、按下则跳出循环 break;j=j<<1; /将下一列(PC5、PC6或PC7)置1 ,低四位为0 delay();k=k+j; / 将按键状态赋给k for(i=0;i<16;i+)if(keytabi=k) break;return i; /返回按键编号值 /*/void display() /数码管显示测量值,0V <= a0.a1a2a3 <= 2.5V da=(uint)(DAT*2.5/256)*1000);/数转模拟a0=(char)(da/1000);a1=(char)(da%1000/100);a2=(char)(da%100/10);a3=(char)(da%10);a8255_PB=table1a0; /使最高位显示带小数点a8255_PA=0xfb;delays();a8255_PA=0xff;a8255

温馨提示

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

评论

0/150

提交评论