暑期实习报告——数字电压表_第1页
暑期实习报告——数字电压表_第2页
暑期实习报告——数字电压表_第3页
暑期实习报告——数字电压表_第4页
暑期实习报告——数字电压表_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、 电子实习报告 数字电压表姓名:严宏海学号:20101003032班级:075102-22指导老师:王巍、郝国成、张晓峰、闻兆海、王国洪、吴让仲、李杏梅、王瑾中国地质大学(武汉)机械与电子信息学院通信工程专业2012年6月22日目 录一、前言2二、系统方案的选择和论证22.1 数模转换模块 22.2 模拟数据采集处理模块 2 2.3 液晶显示模块 32.4 AC-DC转换模块 3三、 软件硬件设计 33.1所采用实验方案的原理33.2硬件设计部分 43.3软件设计部分 8四、 测试数据与结果分析 94.1测试仪器94.2测试数据94.3测试数据分析10五、实验心得14六、参考文献14七、附录1

2、4一、前言本数字电压表可以对直流电源和交流电压进行比较准确的测量。其中直流部分的测量范围是0-20V,分为三个档位:0-0.2V,0.2V-2V,2V-20V。该直流电压表的测量电路主要由三个模块组成:模拟数据采集处理模块、A/D转换模块及液晶显示控制模块。模拟数据的采集处理模块由模拟电路部分完成。A/D转换模块主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到STC89S51单片机进行数据处理。显示模块是单片机将处理好的数据送到液晶1602进行显示。交流部分的测量范围是0-5V,测量的是交流电压的有效值。该交流电压表的测量电路由三个模块构成:AC-DC转换模块、

3、电压补偿模块、直流电压表测试模块。其中AC-DC转换模块由AD637完成。电压补偿模块对AD637的非线性部分进行补偿,由LM324完成。直流电压表测试模块由直流部分完成。二、 系统方案的选择和论证2.1数模转换模块方案一:用分离元件完成数据采集AD转换的功能。该方案由于需要大量的元器件,实现起来比较复杂,而且精度不易控制。方案二:选则集成芯片ADC0809。ADC0809的采样频率为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8个单断模拟输入信号中的一个进行A/D转换。由于本实验要求的测量误差是<=1%,显示精度是0.0

4、1V,本设计采用ADC0809就可以满足要求。ADC0809的分辨率是1/28,量化间隔为=满量程输入电压/28-1,完成一次转换的时间是100us。适合此设计使用。方案三:采用其他采样频率位数更高的AD转换芯片,如积分型(如TLC7135)、压频变换型(如AD650)、调制型(如AD7705)、并行比较型/串并行比较型(如TLC5510)。这些AD转换芯片各有各的特点。单本实验只需要采用常用的、性价比高的芯片就可以完成。2.2模拟数据采集处理模块方案一:不加另外的模拟电路,直接让ADC0809采集输入电压,对于此设计不可行。因为ADC0809只能对0-5V的模拟电压进行采样,而要求对0-20

5、V的电压进行处理,故淘汰此设计。方案二:分三通道对0-0.2V,0.2-2V,2-20V分别放大25倍,2.5倍,分压四分之一,将其范围控制在ADC0809的采集范围0-5V内,这样可以避免ADC0809对比较小的电压和比较大的电压采样误差较大的弊端。所以分压与放大两部分电路结合成功完成数据采集处理模块。所以选择方案二。2.3显示模块方案一:用CD4511进行译码,四位七段数码管进行显示。因为CD4511可将BCD,码转换为可以再数码管上显示的数字,则在单片机的程序中不需要写译码的程序。由于CD4511译码出的数据不能显示小数点,小数点的控制仍需在单片机程序中另外编写。方案二:用液晶LCD16

6、02,显示清晰准确明显,显示编程容易控制,可以显示字母。所以选择方案二。 2.4 AC-DC转换模块采用AD637完成AC-DC转换,再配合LM324完成交流转其对应的直流有效值的功能,精度较高。三、详细软件硬件设计3.1所采用实验方案的原理3.1.1 自动调档模块:利用芯片LM324和ADC0809输入通道并结合程序实现自动调挡。1、保证此模块输出到ADC0809的电压值维持在0-5V。分三通道对0-0.2V,0.2-2V,2-20V分别放大25倍,2.5倍,分压四分之一。利用运算放大器LM324来实现放大功能,通过电阻分压实现缩小功能。2、档位使用的是模数转换器的输入引脚,程序通过,C B

7、 A(C B A代表ADC0809地址编码中的C B A,C接地)。来控制选通哪一条电路。CBA =000选择2-20V档位,CBA=001则选择0.2-2V档位,CBA=010选择0-0.2V档位。3.1.2、ADC0809模数转换模块:ADC0809是将输入的模拟值转化为8位二进制值输出,也就是对一个模拟量进行量化采用逐次逼近的方法近似为数字量。l 由于三路采集从不同的输入口输入(IN0、IN1、IN2),所以ADC0809的三个地址输入(A、B、C)分别接单片机P2的5、6、7脚。l 从各口输入的电压值范围0-5V,所以ADC0809采取5V的标准电压,以待量化进行数模转换。l ADC0

8、809的工作是通过单片机S52中的程序控制的,当ADC0809的ALE=1 ,START下降沿时启动模数转换,此时EOC=0;转化结束后EOC=1,若OE=1,则允许单片机从ADC0809中读取数据,读取结束后,OE=0。l Clock信号是由单片机的一个定时器产生的。3.1.3、单片机模块:(程序见后面)该模块主要是通过程序来实现两个功能:1、 控制ADC0809进行模数转换,单片机的P0口和ADC0809的8位输出口相连,来读取数据。2、单片机通过P1口,外接液晶1602,还有复位电路和晶振电路。3、定时器产生ADC0809的时钟信号。3.1.4、显示模块由液晶LCD1602显示,液晶相对

9、数码管,显示清晰,能显示字母,可视性好。3.2硬件设计部分整体设计流程图3.2.1单片机最小系统单片机的最小系统由AT89S51、12M晶振、两个30p电容、10K电阻、复位开关组成。如图1: 图13.2.2模数转换模块该模块采用的主要芯片使ADC0809。首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开

10、,转换结果的数字量输出到数据总线上。ALE信号常与START信号连在一起,这样连接可以在信号的前沿写入地址信号,在其后沿启动A/D转换,(图2为ADC0809信号的时序配合图)。图2 ADC0809信号的时序配合在本设计中,选通了IN-0通道(A、B、C都为0),IN-0作为模拟信号的输入,通过D0-D7数据输出口与单片机进行数据传输。由于ADC0809没有内部时钟,所以需要单片机提供时钟,本方案中通过单片机的定时器产生一方波信号可作为ADC0809的时钟信号。3.2.3模拟数据采集处理模块分三通道对0-0.2V,0.2-2V,2-20V分别放大25倍,2.5倍,分压四分之一,将其范围控制在A

11、DC0809的采集范围0-5V内,这样可以避免ADC0809对比较小的电压和比较大的电压采样误差较大的弊端,加强其采样处理的准确性。所以分压与放大两部分电路结合成功完成数据采集处理模块。放大有LM324及电阻完成,分压有电阻分压即可,在输入到ADC0809之前,三通道都加一电压跟随器,使输入到ADC0809的采集电压稳定。3.2.4显示模块采用LCD液晶显示器1602。其功率小,效果明显,显示编程容易控制,可以显示字母。如上图所示,1602的八位数据端接单片机的P1口,其三个使能端RS、RW、E分别接单片机的P3.5P3.7。3.2.5 AC-DC转换模块、电压补偿模块采用的AC-DC转换芯片

12、是AD637,完成了将交流电转换成其直流有效值。其最终转换公式是:V0=VIN2/VDEN之所以要有电压补偿,是因为AD637的电压转换不是线性的,在大于4V之后则输出的电压小于输入的交流电压的有效值。在0-4V的范围就直接将V0加到直流电压的输入。所以要加一个放大器LM324进行补偿。R2设计为可调电阻就是为了调节放大器的放大倍数。具体的电路连接图如下: 图63.3软件设计部分译码显示模块译码显示模块3.3.1数据处理模块 P0=getdata,而ADC0809的输出电压为Vout=(getdata/255)*5,对于2-20V的输入电压,由于采集时采用了分压四分之一,所以Vout=(get

13、data/255)*20,为了得到显示的各位整数值,此处乘以100,Vout=(getdata/255)*2000,得到要在1602上显示的四位数值a,b,c,d后,在a,b后,c,d前加小数点,最终在1602上显示ab.cd(V)即为量程在2-20V时,所测电压值。在0-0.2V时,由于放大了25倍,所以Vout=(getdata/255)*5/25,为了得到要在1602上显示的四位数值a,b,c,d。此处乘以10000。最终在1602上显示abcd(mV)即为量程在2-20V时,所测电压值在0.2-2V内时,由于放大了2.5倍,所以Vout=(getdata/255)*5/2.5,为了得到

14、要在1602上显示的四位数值a,b,c,d。此处乘以1000。最终在1602上显示a.bcd(V)即为量程在2-20V时,所测电压值所以三种情况可归结为:temp=(getdata*1.0/255)*2000;a=temp/1000;b=temp/100%10;c=temp/10%10;d=temp%10;在得到得到要在1602上显示的四位数值a,b,c,d后,再在合适的位置加上小数点即可。3.3.2数模转换及换挡模块首先启动AD,由一START的端口的下降沿触发。当AD转换完成标志EOC为1时,先将数据锁存,当AD采样数据给getdata后,再将OE置为1,输出转换得到的数据。其中因为在采样

15、处理模块有四分压,所以送给U0的电压值并不是原始的电压值。对于2V-20V的电压,采样处理模块只对其进行四分压(0.5-5),然后送到U0。要注意的是AD转换的数据是八位二进制的数。而此二进制的数是由:(参考电压/256)*输入电压所得到的。所以,若getdata<26(26,也就是0.5V,是2V经过二分压所得到的。)就转到0.2V-2V的档。若getdata>26则正常处理:选档程序如下:if ( (B0=0)&&(A0=0) && (getdata<26) / 选择量程大,转向 0.2-2V v2;m=2; if ( (B0=0)&

16、;&(A0=1) && (getdata<26) /选择量程大,转到0-0.2量程 v0_2;m=3; if ( (B0=0)&&(A0=1) && (getdata>254) / 选择量程小,转到2-20量程 v20;m=1; if ( (B0=1)&&(A0=0) && (getdata>254) /选择量程小,转到0.2-2量程v2;m=2;3.3.3液晶显示模块ADC0809的输出端与单片机的P0口相连,单片机的P1口与1602的8为数据口相连,1602的RS RW E三个控制端分

17、别连接P3.5,P3.6,P3.7。temp=(getdata*1.0/255)*2000;a=temp/1000;b=temp/100%10;c=temp/10%10;d=temp%10;在得到得到要在1602上显示的四位数值a,b,c,d后,再在合适的位置加上小数点即可。P0口的getdata经过数据处理后,送至P1口,由程序控制显示。四、测试数据与结果分析4.1测试仪器 (1)数字万用表(2)双通道数字示波器(3)频率发生器4.2测试数据 0-0.2V档测量的数据(直流)万用表测量(V)1602显示值(mV)0.0110.10.0769.00.12122.00.18188.0 表10.2

18、V-2V档测量的数据(直流)万用表测试(V)1602显示值(mV)0.262580.444470.454540.616110.848471.0410501.1611681.3013011.6316391.7617881.942.03 表22V-20V档测量的数据(直流)万用表测量(V)1602显示值(V)2.012.012.672.723.373.424.44.355.15.096.16.037.06.907.97.888.58.479.59.529.89.8810.310.1911.811.7612.612.714.014.0515.015.518.818.6 表34.3数据分析用MATLA

19、B分别做不同量程的曲线拟合图,横坐标是1602显示值,纵坐标万用表测量值,做三次曲线拟合。然后做万用表测量值和1602显示值之差,再做三次曲线拟合 0-0.2V档测量的数据(直流) 图8 图9分析:从图8可以看出,线性良好。图9纵坐标单位为MV,在60MV和160MV左右时,误差较小接近于0.但在量程的两端误差较大。4.3.2 0.2V-2V档测量的数据(直流) 图10 图11分析:从图10可以看出,线性良好。图11纵坐标单位为MV,0.4-1.4范围内,误差较小,在2MV左右.但在量程的两端误差较大。4.3.3 2V-20V档测量的数据(直流) 图12 图13分析:从图12可以看出,线性良好

20、。图13纵坐标单位为V,4V-12V范围内,误差较小,在0.05V左右.但在量程的两端误差较大,误差达到0.1V-0.15V。在0-2V的范围内测试时,精度完全满足,在2-20V测试时,经过调整分压那一路的电位器,精度也能满足要求。另外本实习中对电阻及电位器数值的确定要尽可能精准。五、实验心得因为对单片机这一块比较熟悉,电路的仿真及程序编写半天就做完了,在实习的过程中遇到的最大问题是LM324的参考电压没选择正确,开始看书上给的是12-15V,后来经过仔细研究及对LM324输出端的测量发现,LM324参考电压给6-7V时,LM324输出端能够输出0-5V的电压,而这一电压正好是ADC0809的

21、采集范围。在0-2V的范围内测试时,精度完全满足,在2-20V测试时,经过调整分压那一路的电位器,精度也能满足要求。另外本实习中对电阻及电位器数值的确定要尽可能精准。这个实验没有来得及做出扩展部分感觉很遗憾,因为手头上没有交流转直流的AD芯片,调试电路是一个枯燥乏味的工作,是需要耐心、细心、耐力的事情,如果这些都做不到,要想完成一个好的项目可以说是一个很难完成的任务,我个人觉得我在这方面还是需要加强,必须耐下心来,认认真真的对待。六、参考文献【1】汪文,单片机原理及应用 【M】. 武汉:华中科技大学出版社,2007.3【2】谢子美,电子线路.设计.试验.测试【M】.北京:清华大学出版社,200

22、7【3】高峰,单片微型计算机与接口技术【M】.北京:科学出版社,2003 七、附录7.1单片机程序/* LM324的参考电压可以是单电源,取6V左右,关键是要能从LM324的输出端能输出0-5V, 不能超过5V,也不能小于5V,ADC0809的参考电压5V尽量稳定*/#include<reg51.h>#define uchar unsigned char #define uint unsigned int uchar a,b,c,d;unsigned char getdata;unsigned int temp;unsigned int i,j;unsigned char m;uc

23、har code table0="V="uchar code table1="0123456789mV ."uchar code table2="Range:2-20V"uchar code table3="Range:0.2-2V"uchar code table4="Range:0-0.2V"sbit rs=P25;sbit rw=P26;sbit e =P27;sbit ST=P30;sbit OE=P31;sbit EOC=P32;sbit CLK=P33;sbit ALE=P37;sb

24、it led1=P22;sbit led2=P23;sbit led3=P24;sbit A0=P34;/代表地址编码中的Asbit B0=P35; /代表地址编码中的B#define v20 B0=0;A0=0; /0 通道#define v2 B0=0;A0=1; /1 通道#define v0_2 B0=1;A0=0; /2 通道void TimeInitial() /用于产生ADC0809所需的时钟信号 TMOD=0x10; TH1=(65536-200)/256; TL1=(65536-200)%256; EA=1; ET1=1; TR1=1; CLK=1; void delay(u

25、nsigned char x)/延时函数unsigned char a,b;for(a=x;a>0;a-)for(b=20;b>0;b-); bit lcd_busy()/ 测试LCD忙碌状态,实际上延时一会同样可以达到效果 bit result; rs = 0; rw = 1; e = 1; delay(5); result = (bit)(P0 & 0x80); e= 0; return result;void writecomm(uchar comm) /while(lcd_busy();rs=0;rw=0;e=0;delay(5);P0=comm;e=1;delay

26、(5);e=0;void writedat(uchar dat) /while(lcd_busy();rs=1;rw=0;e=0;delay(5);P0=dat;e=1;delay(5);e=0;void writesmh(uchar add,uchar date)uchar count;count=date;writecomm(0xc0+add);delay(5);writedat(table1count);delay(5);void init() delay(50);writecomm(0x38);delay(50);writecomm(0x0c);delay(50);writecomm(

27、0x06);delay(50);writecomm(0x80);delay(5); writecomm(0x01);delay(50);void main()init(); v0_2; m=3; TimeInitial();while(1) ST=0;/启动ADC0809 ALE=1; ST=1; delay(50); ST=0; ALE=0; while(EOC=0); /等待转换结束 OE=1; getdata=P1; OE=0; /锁定输出temp=getdata; /数据处理 delay(50); a=temp/1000; b=temp/100%10; c=temp/10%10; d=

28、temp%10; writecomm(0x80+0x40+12); writedat(a+48);writedat(b+48);writedat(c+48);writedat(d+48); delay(50); if ( (B0=0)&&(A0=0) && (getdata<26) / 选择量程大,转向 0.2-2V v2;m=2; if ( (B0=0)&&(A0=1) && (getdata<26) /选择量程大,转到0-0.2量程 v0_2;m=3; if ( (B0=0)&&(A0=1) &am

29、p;& (getdata>254) / 选择量程小,转到2-20量程 v20;m=1; if ( (B0=1)&&(A0=0) && (getdata>254) /选择量程小,转到0.2-2量程v2;m=2; temp=(getdata*1.0/255)*2000; a=temp/1000; b=temp/100%10; c=temp/10%10; d=temp%10; delay(50); if(m=1) for(i=0;i<2;i+ )/显示量程 writecomm(0xc0+i); writedat(table0i); delay(5); for(i=0;i<12;i+ ) writecomm(0x80+i); writedat(table2i); delay(5); writesmh(4,a); delay(5); writesmh(5,b); delay(5);writesmh(6,13); delay(5); writesmh(7

温馨提示

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

评论

0/150

提交评论