电子测量课程设计-直流数字电压表.docx_第1页
电子测量课程设计-直流数字电压表.docx_第2页
电子测量课程设计-直流数字电压表.docx_第3页
电子测量课程设计-直流数字电压表.docx_第4页
电子测量课程设计-直流数字电压表.docx_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

此文档收集于网络,如有侵权,请联系网站删除课程设计报告题 目: 直流数字电压表 院 (系): 电气工程学院 专 业: 电子3班 学生姓名: 张XX 学 号: 指导教师: 李老师 写作日期:2011年 12月6日 摘 要数字电压表英文名称为Digital Voltmeter,简称为DVM,是采用数字化测量技术,把连续的模拟量通过抽样保持电路,AD转换电路转换为离散的数字量的形式,并加以显示出来的仪表,与传统的模拟式电压表相比,具有数据显示直观易读,读数准确,测量范围宽,扩展功能强等优点。本次设计内容为构建一个简易直流数字电压表,主要方法是利用A/D转换电路将被测的模拟量电压进行采样,转换成数字量,送到微处理器进行数据处理,然后将数据送到显示器上进行输出显示。该电压表具有测量准确度高,性能稳定,扩展功能强,方便易读等优点。关键词:A/D转换;单片机数据处理;LCD液晶显示1系统目标及概要本次设计内容为构建一个简易直流数字电压表,利用A/D转换电路将被测的模拟电压进行采样,转换成数字量并在显示器上显示。基本要求:能测量0-5V电压,并用LCD进行显示。功能完善:可自由发挥实现各种具有新意的功能。本次设计功能完善主要有:(1) 具备量程切换档电路,能通过换挡实现-2020V电压的测量,实现三位半电压的测量,并且LCD显示界面友好。(2) 具备过量程声光报警。(3) 自带系统运行所需的直流稳压电源。能测量实时温度并在LCD上显示。2系统方案总体概述及方案显示电路直流稳压电源ADC电路微处理器衰减电阻网络和量程切换电路被测电压2.1各方案的选择及优缺点 2.11方案一 采用集成芯片ICL7106三位半LCD/LED显示A/D转换器。ICL7106和ICL7107是高性能,低电源,1 / 2位A / D转换。包括七个段解码器,显示驱动器,一个参考时钟。ICL7106是一个液晶接口设计显示器(LCD)包括复背板驱动器; IL7107将直接驱动的仪器大小灯发光二极管(LED)显示。ICL7106和ICL7107汇集的组合精度高,通用性和真正的经济。它功能自动归零小于10V,零比1V/oC,输入漂移偏置电流10pA的(最大),和翻转误差小于一个计数。真正的差分输入和参考有用所有系统,但给设计师一种罕见的优势当测量称重传感器,应变计和其他桥梁类型传感器。最后,单电源的真实经济电源操作(ICL7106),实现了高性能此外只有10被动内置面板仪表。此方案电路结构简单,经济适用但没有达到练习的目的。2.12方案二 采用逐次比较ADC0804,单片机和LED显示路。外部被测电压是一种连续的模拟量,而把模拟量测量出来并显示出来需要将模拟量变成数字量,方法是将模拟量经过采样保持电路,量化,编码才成为处理器与显示器可以识别的二进制数。随着科技的发展,现在的A/D转换器一般都实现了采样保持,量化编码的电路功能。ADC0804为8位AD,采用逐次比较的原理实现电压转换,转换速度快,但由于与被测电压直接比较,容易产生干扰,误差比较大实际测量转换数据将达不到8位的精度。LED扫描显示占用CPU处理时间,且扫描显示数据难以达到稳定显示,实现的电路复杂。2.13方案三 应用单片机控制积分式ADC驱动液晶显示电路。 其中在此次方案中我们采用的ADC MC14433为双斜积分式AD转换器。这种AD为3 1/2的转换位数直接输出四位BCD码。转换精度高,但处理时间慢,因为我们在此应用为数字电压表,转换速度要求不是很高,所以考虑稳定度和经济成本的问题。显示采用1602由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像数码管动态点亮的时候要不断地刷新亮点。因此,液晶显示器画质高且不会闪烁。显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。而且体积小、重量轻。综合上述,我采用的是第三种方案,这种方案在我看来电路简单易懂,能更好的明白数字式电压表的工作原理。根据所学单片机的内容可以在此电路中加一些扩展电路,比如时钟显示,温度显示等,但考虑的重点主要还是DVM性能的设计。3电路设计及其原理3.1微处理器本次设计中的微处理器是整个系统的核心,主要作用是接收A/D转换的数据,将数据进行运算输出驱动LCD显示。在本次设计中能胜任此系统的控制与运算功能的处理器多种多样。由于本系统对数据处理的速度与要求不高,且系统所要实现的控制运算逻辑比较简单,若使用大规模控制系统所需使用的微处理器,而且此类处理器的成本也比较高,因此从性价比的角度选用8051系列单片机比较适合。因此本次设计采用工业与控制领域应用广泛,本系统的微处理器。与传统的处理器电路相比,该款处理器芯片实现了高度集成化,将处理器电路所需的算术逻辑单元ALU,随机存储器RAM,只读存储器ROM,多种I/O口和中断系统、定时器/计时器等功能,集成到一块硅片上构成的一个小而完善的计算机系统。因此大大简化了系统的电路设计。STC89S52的主要性能参数为:片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;片内数据存储器内含256字节的RAM;具有32根可编程I/O口线;具有3个可编程定时器;中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;串行口是具有一个全双工的可编程串行通信口;具有一个数据指针DPTR;低功耗工作模式有空闲模式和掉电模式;具有可编程的3级程序锁定位;工作电源电压为5(1+0.2)V,且典型值为5V;最高工作频率为24MHz。所以,我在本次设计中采用的是我们所学的单片机STC89C52。下图为STC89C52单片机的最小系统。此系统包括单片机复位电路,时钟产生电路,P0口接上拉电阻,P0口为开漏结构,所以无法输出高电平,因此需要外接上拉电阻。复位电路采用上电自动复位和手动按键复位,STC单片机复位电路为高电平持续一定时间,才能将单片机复位。3.2 ADC的选择及原理MC14433芯片工作时需要外接RC(接CLK1、CLK2)时钟振荡电阻、C0(接C01、C02)失调补偿电容及R1(接R1、R1/C1引脚)、C1(接C1、R1/C1引脚)积分阻容元件,其内部具有时钟信号发生器,只需外接一电阻就能产生其内部进行A/D转换所需要的时钟信号,当CLK0,CLK1外接300K的电阻时其时钟频率为66KHZ,本次设计的电路就是采用外接300K电阻R6让其转换的时钟信号频率为66KHZ。积分电阻电容R4和C2的选择应根据实际条件而定。若时钟频率为66kHz,C2 一般取0.1uf。R4的选取与A/D转换的基准电压有关,当R4为470K时,对应其基准电压为2V,当R4=27K时对应其基准电压为200mV。本次设计采用的是2V的基准电压源,因此R4选取为470K。C3为失调补偿电容,其典型值为0.1uf。其他引脚功能如下:(1) 端:VAG,模拟地,是高阻输入端,作为输入被测电压UX 和基准电压VREF 的参考点地。(2) 端:RREF,外接基准电压输入端。(3) 端:UX,是被测电压输入端。(4) 端:RI,外接积分电阻端。(5) 端:RICI,外接积分元件电阻和电容的公共接点。(6) 端,C1,外接积分电容端,积分波形由该端输出。(7) 和 (8) 端:C01 和C02,外接失调补偿电容端。推荐外接失调补偿电容C0 取0.1F。(9) 端:DU,实时输出控制端,主要控制转换结果的输出,若在双积分放电周期即阶段。开始前,在DU 端输入一正脉冲,则该周期转换结果将被送入输出锁存器并经多路开关输出,否则输出端继续输出锁存器中原来的转换结果。若该端通过一电阻和EOC 短接,则每次转换的结果都将被输出。(10) 端:CPI (CLKI),时钟信号输入端。与CLK0外接一电阻使用内部时钟发生器(11) 端:CPO (CLKO),时钟信号输出端。(12) 端:VEE,负电源端,是整个电路的电源最负端,主要作为模拟电路部分的负电源,该端典型电流约为0.8mA,所有输出驱动电路的电流不流过该端,而是流向VSS 端。(13) 端:VSS 负电源端(低电平参考端)典型接法是接地。(14) EOC:转换周期结束标志输出。每当一次A/D转换周期结束,EOC端输出一个宽度为时钟周期1/2宽度的正脉冲。当EOC与DU直接连接时,可以实现每次转换后结果的自动更新。本次设计采用的就是EOC与DU相连,每次转换结束都更新输出锁存器。(15) 端:OR ,过量程标志输出端,当|UX|VREF 时,OR 输出低电平,正常量程OR 为高电平。本设计中外接一个LED与一限流电阻做过量程提示。(16)(19) 端:对应为DS4DS1,分别是多路调制选通脉冲信号个位、十位、百位和千位输出端,当DS 端输出高电平时,表示此刻Q0Q3 输出的BCD 代码是该对应位上的数据。(20)(23)端:对应为Q0 一Q3,分别是AD 转换结果数据输出BCD 代码的最低位(LSB)、次低位、次高位和最高位输出端。(24) 端:VDD,整个电路的正电源端。3.2.2MC1403基准电压源的电路接法及引脚功能:由于该A/D转换选择的是2V的基准电压,MC1403的作用就是充当本电路的基准电压源,其特点为: 温度系数小; 噪声小; 输入电压范围大,稳定性能好,当输入电压从+45V变化到+15V 时,输出电压值变化量小于3mV;输出电压值准确度较高,y。值在2475V2.525V 以内; 压差小,适用于低压电源; 负载能力小,该电源最大输出电流为10mA。MCl403 用8 条引线双列直插标准封装。其引脚说明如下:脚:电源电压输入端,最大值不能超过40V,脚:基准电压输出端,输出2.5V。脚:接地端。由于MC1403输出电压是2.5V,因此需要通过电阻分压获得2V的基准电压。因此通过调节可调电阻R8可以获得2V的电压提供为M14433作为基准电压。3.3 衰减网络及其原理衰减电阻网络,在此采用电阻串联的方法组成,因为MC14433的基准电压为2V,所以输入AD的电压小于等于2V,电阻选择为精密可调的电位器分别为100K,10K, 2K可以构成3档电压的测量,分别为+-2V, +-20V, +-200V为了提高输入阻抗和安全我不用+-200V的电压测量。 电路如下图R190KR29KR31K被测电压输入A/D输入端VXP3.5P3.6P3.7单片机I/O口KK拨动开关K为双联开关3.4 过量程报警电路如上图蜂鸣器,PNP型三极管Q1,限流电阻R9构成了系统的过量程报警电路,当接收到A/D转换的数据中判断到所测电压高于量程时,通过单片机载P2.1口输出低电平,此时三极管导通,有电流流过蜂鸣器,蜂鸣器就发出声音。三极管在这里的作用一是起到开关作用,二是起到电流放大作用,因为蜂鸣器发声需要比较大的电流,而三极管的发射极电流比基极电流大(1+)倍,因此能驱动蜂鸣器的同时也不至于有很大的灌电流流入单片机的引脚中。3.4 LCD显示电路LCD接口电路3.5 直流稳压电源电路为ADMC14433芯片供电采用7805和7905分别提供正负5V电压。4.系统软件设计及其原理用C语言编写代码驱动ADC,下图为MC14433的读写时序图下图为程序流程图的设计根据流程图编写C程序思路清晰,代码简洁。开始千位输出信号DS1=1?把千位数据保存起来百位输出信号DS2=1?把百位数据保存起来十位输出信号DS3=1?把十位数据保存起来个位输出信号DS4=1?保存个位结束YNNNNYYY数据处理子程序如下:开始通过按位与运算求出千位BCD码根据Q3Q0的组合得到千位是0还是1,是否过量程通过按位与运算求出百位BCD码通过按位与运算求出十位BCD码通过按位与运算求出个位BCD码将千,百,十,个位数字转换为相应的ASCII码以便LCD显示输出结束5 电路性能测试次数12 34 5 6789+-2V+-20V6 附件 程序代码/*DVM.h file*/#ifndef_CONFIG_H_#define _CONFIG_H_#include#include /包含_nop_()函数定义的头文件#define uchar unsigned char #define uint unsigned intsbit ds1=P14;/各控制引脚定义sbit ds2=P15;sbit ds3=P16;sbit ds4=P17;sbit rs=P25;sbit rw=P26;sbit e=P27;sbit buzz=P21;unsigned char time;/设置全局变量,专门用于严格延时uchar code error1= error! ;uchar code error2= out of range ;uchar code tab1= range: ;uchar code tab2=voltage: ;uchar code rag1= -2 +2V;uchar code rag2=-20 +20V;uchar code clr= ;uchar disp7;#endif/*DVM.h file*/#ifndef_CONFIG_H_#define _CONFIG_H_#include#include /包含_nop_()函数定义的头文件#define uchar unsigned char #define uint unsigned intsbit ds1=P14;/各控制引脚定义sbit ds2=P15;sbit ds3=P16;sbit ds4=P17;sbit rs=P25;sbit rw=P26;sbit e=P27;sbit buzz=P21;unsigned char time;/设置全局变量,专门用于严格延时uchar code error1= error! ;uchar code error2= out of range ;uchar code tab1= range: ;uchar code tab2=voltage: ;uchar code rag1= -2 +2V;uchar code rag2=-20 +20V;uchar code clr= ;uchar disp7;#endif/*文件:DDS.H功能: 模块H文件*/#includeconfig.h #ifndef _DDS_H_#define _DDS_H_extern void Delay(uint del);extern void AD9850_Rset(void);extern void AD9850_kzz(void);extern void AD9850_scp(uint AD9850_sc);#endif/* 文件名 DVM.c */#include#include void ad_conver() /A/D转换程序 while(!ds1); /求出千位运算; disp1=P1; while(!ds2); /求出百位运算; disp2=P1; while(!ds3); /求出十位运算; disp3=P1; while(!ds4); /求出个位运算; disp4=P1; void compute() /转换A/D转换数据子程序 uchar mk=disp1,i,j,temp4; disp6=V; if(mk&0x01) disp1=0; /Q3=1,千位为0. else disp1=1; if(mk&0x02) disp0= ; else disp0=-;if(mk&0x09=0x08)disp1=2;mk=0x01; /提取百十个位数for(j=2;j5;j+) for(i=0;i4;i+) tempi=dispj&mk; mk=1; temp0=3; temp1=1; temp3=3; dispj=temp0+temp1+temp2+temp3; mk=0x01; for(i=1;i0;i-) for(j=10;j0;j-); void delay2(uint z) uint i; uchar j; for(i=z;i0;i-) for(j=200;j0;j-);void write_com(uchar m) /写指令函数 rs=0; rw=0; P0=m; delay(10); e=1; delay(10); e=0; delay(10); void write_data(uchar n) /写数据函数 rs=1; rw=0; P0=n; delay(10); e=1; delay(10); e=0; delay(10); void init() /显示初始化函数 e=0; write_com(0x38);/设置16*2显示,5*7点阵,8位数据口 write_com(0x0c);/开显示,不显示光标 write_com(0x06);/写入数据后地址指针加1 write_com(0x01);/显示清屏 /write_com(0x80+0);/设置初始显示地址void wr_lcd(uchar addr,uchar *str,ucha

温馨提示

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

评论

0/150

提交评论