基于单片机简易信号测量仪毕业设计.doc_第1页
基于单片机简易信号测量仪毕业设计.doc_第2页
基于单片机简易信号测量仪毕业设计.doc_第3页
基于单片机简易信号测量仪毕业设计.doc_第4页
基于单片机简易信号测量仪毕业设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

目录摘要-3第一章 方案比较及论证-31.1方案比较-31.2 方案确定-3第二章 基本测量原理-32.1 频率、周期测量-32.2 峰峰值测量-4第三章 系统设计-43.1.1 信号整形电路-43.1.2 峰峰值测量电路-53.1.3 显示电路-53.1.4 电平转换电路-53.1.5 系统控制电路-53.2.1 系统程序流程-6第四章 系统指标测试-74.1 指标测试-74.2 设计与测试使用的仪器-74.3 测试数据-74.4 误差分析及措施-8第五章 心得体会-9第六章 参考文献-10摘要本系统以AT89S52单片机为核心设计了一种用于测量频率、周期、峰峰值、有效值的简易信号测量仪,其中还可分辩正弦波与方波,利用单片机的数学运算和控制功能,结合部分中规模数字电路,实现测量中的功能手动切换。各项实测表明,设计原理正确合理,指标符合设计要求。一、 方案比较及论证1、 方案比较方案一:系统测频部分采用中小规模数字集成电路,对输入信号作分频整形处理后,再与1s脉宽的标准信号相与,其输出作为计数脉冲,由计数器计数,然后锁存、译码输出到数码管显示。该方案的特点是硬件电路简单,但工作速度低,精度差,难以达到设计要求,而且不能测量周期与峰峰值。方案二:系统采用可编程逻辑器件作为信号处理及系统控制核心,完成包括计数、显示等一系列工作。该方案集成度高,但可编程逻辑器件价格较高,在本题中使用,将导致系统性能价格比降低。方案三:系统采用MCS-51单片机AT89S52作为控制核心,由于单片机自带计数器的计数频率上限较低,输入时钟的频率通常只能是系统时钟频率的几分之一甚至几十分之一,因此采用外部计数器对输入信号进行计数,计数值再由单片机读取,单片机只完成运算、控制及显示功能。该方案由于采用单片机技术,使其具有智能化的特点,简化了硬件电路, 提高了测量精度, 同时也能利用软件对测量误差进行补偿,并能方便地对系统进行功能扩展与改进。2、 方案确定分析以上三种方案的优缺点,方案三具有更大的优越性、灵活性,因此我们采用方案三作为具体实施的方案。二、 基本测量原理1、 频率、周期测量频率的测量按照频率的定义进行:在某个已知的标准时间间隔T(如1s)内,测出被测信号重复的次数N,f=N/T就是信号频率。基本原理框图如图1所示控制电路显示电路 被测信号测量电路起振电路图1图中起振电路由晶振提供测量的时间基准,经分频后产生准确的时间间隔T,作为基准时间去控制计数器。有信号输入时测量电路对信号进行整形,再进入定时器1进行计数。若在时间间隔T内,计数值为N,则被测信号的频率f=N/T。2.周期测量 测量电路在检测到有脉冲的下降沿时打开计数器计数,再一次检测到下降沿时关闭计数器,所测周期为,其中N为计数值,fs 为计数器的工作频率。3.峰峰值测量 测量正弦信号峰峰值的原理框图如下图所示对电压进行比较运算峰峰值电压采样保持显示被测信号 峰峰值电压采样保持电路由ADC0809芯片构成。通过ADC0809芯片将各时间段的模拟量转化为数字量,然后用软件将其保存,再利用单片机的运算功能找出这一系列数中的最大值和最小值,相减便得到峰峰值。再根据方波和正弦波的差异分别求出两种波的有效值。三、 系统设计 硬件部分设计1.信号整形电路电路原理图如下单片机很难直接对正弦信号进行频率的测量,当正弦波和方波在同一输入端时就更难直接测量,其周期也无法直接测量,因而使用整形电路把正弦波变成占空比为50%,频率不变的方波,便可进行频率和周期的测量。图中,正弦信号用四运算放大器LM324和2.75V的电压作比较,便可得到同频的方波,用于测量其频率。进入单片机后可识别是否是正弦波.2.峰峰值测量电路电路原理图如下: ADC0809芯片构成采样保持集成电路由。3显示电路其电路原理图如下;显示电路由1602液晶构成,用于输出测量结果。4电平转换电路其电路原理图如下;电平转换电路由MAX232芯片及电容构成,用于把计算机的RS-232C电平转化为TTL电平。5系统控制电路 其电路原理图如下此部分是系统的主要控制部分,要完成信号的数模转换和计数脉冲的分频,及显示数值功能。 软件部分设计系统程序流程开始初始化开始初始化开始初始化YYN测量峰峰值、占空比算出有效值键盘控制测量峰峰值算出有效值检测信号输入是否为方波?显示N测量频率、周期 四、 系统指标测试1、 指标测试 频率、周期测试: 用函数信号发生器产生频率范围为1Hz100KHz的方波信号(TTL电平,占空比50%,),用标准频率计测出标准频率,再用设计的测量仪测出频率,求出误差。(2)峰峰值测量:用函数信号发生器产生频率范围为1Hz100KHz的正弦波信号,用标准交流毫伏表测出有效值,通过运算得到标准峰峰值,再用设计的测量仪测出峰峰值,求出误差。2、 设计与测试使用的仪器EM32501DDS任意波形发生器 HM1004-3双踪示波器(100M) HC-F1000L频率计 DT9205A数字万用表 WYK-303B2直流稳压源 微型计算机3、 测试数据表1 频率测量数据标准输入频率(Hz)本仪器测量值(Hz)本仪器测量误差1Hz1Hz0%1000Hz1000Hz0%10000Hz10000Hz0%20000Hz20020Hz0.1100000Hz100200Hz0.2%表2 周期测量数据标准输入周期(ms)本仪器测量值(ms)本仪器测量误差0.1000.1000%0.2000.2000%1.0001.0000%20.00020.0000%1000.001000.000%(3)标3 峰峰值测量数据标准输入频率(Hz)标准峰值(mV)本仪器测量值(mV)本仪器测量误差50400041203%500400042205.5%3K400041604.0%5K400040802%10K400040802%4、 误差分析及措施由于硬件的性能不够理想,信号经过器件时会有一些无法消除的迟延,这些迟延在高频率下引起的误差就尤为突出,系统使用的边沿触发器,其上升沿时间和其下降沿时间不相等,这信号的脉宽发生了一些变化,但这样的误差只能通过用性能更好的器件得到减小。计数脉冲也是精度产生误差的一个方面,脉冲的精度直接影响了测量得到的频率,因此,我们在系统的设计时,使用了稳定度好的有源晶振。因为测量频率范围比较大,因此,只用一个档难以达到高的精度,因而可以采用手动换档和不同频段用不同的测量方法来提高精度,减小误差。单片机的计数器对计数脉冲频率最大只支持500K,扩展支持更高频的计数将能提高测量的精度。 五、心得体会本次设计让我体味到设计电路过程中的苦与甜。设计是我们将来必需的技能,这次恰恰给我们提供了一个应用自己所学知识的机会,从图书馆、网上查找资料到理论分析再到最后电路的设计,都对我所学的知识进行了检验。在设计的过程中发现了以前学的数字电路的知识掌握的不牢。同时在设计的过程中,遇到了一些以前没有见到过的元件,但是通过查找资料来学习这些元件的功能和使用。最重要的是要熟练地掌握课本上的知识,这样才能对设计中出现的问题进行分析解决。 参考文献1周良全.模拟电子技术基础.北京:高等教育出版社,2009.082郭天祥.51单片机C语言教程.北京:电子工业出版社,2009.13田淑清.二级教程C语言程序设计(2010年版).北京:高等教育出版社,2009.9附:简易信号测量仪的C语言程序和原理图/*简易信号测量仪的C源程序*/#include/52单片机的头文件#define uint unsigned int#define uchar unsigned char/宏定义unsigned long int resh_1;/保存波形的周期uchar flag;/标号用于识别是正弦波还是方波float resh_3;/保存波形的占空比sbit ST=P32;sbit EOC=P33;sbit OE=P36;sbit CLK=P37;/AD0809与单片机的接口sbit RS=P20;sbit RW=P21;sbit E=P22;/1602液晶与单片机的接口sbit p3_4=P34;/被测信号的输入接口sbit S2=P24;sbit S3=P25;sbit S4=P26;sbit S5=P27;/四个独立键盘/*用定时器0定时,计数器1计数测量频率*/unsigned long int time0()unsigned long int count;uint i;uchar scount;TMOD=0x61;/定时器0工作在定时方式1,定时器1工作在计数方式2TH0=0xb8;TL0=0x53; /定时20毫秒TH1=0x38;TL1=0x38;/计数200次scount=50;/定时1秒TR0=1;/启动定时器和计数器TR1=1;doif(TF1=1)i+;/计算经过了多少个200次TF1=0;if(TF0=1)scount-;TF0=0;TH0=0xb8;TL0=0x53; while(scount);/1S时间到TR0=0;TR1=0;/停止定时器和计数器count=i*200;/被测信号的频率return count;/*计数器0测周期*/unsigned long int count()uchar a,b,i=0,j=0;uint resh1,resh_2;unsigned long int resh2;TMOD=0x01;/用定时器0计时TL0=0x00;TH0=0x00;dowhile(p3_4); /刚到低电平就开启定时器0,以保证测量的是一个完整的周期TR0=1;doif(TF0=1)TF0=0;i+;j+; /测出低电平的时间,以便求出占空比while(p3_4=0);a=TH0;b=TL0; /将低电平的计数个数保存doif(TF0=1)TF0=0;i+;/测出波形的周期while(p3_4);TR0=0;/停止定时器resh1=TH0;resh1=resh18;resh1=resh1|TL0;/将两个8位数合成一个16位数resh2=i*65536+resh1;/算出波形一个周期内计数的个数resh_2=a;resh_2=resh_28;resh_2=resh_2|b;resh_3=resh_2+j*65536;/算出波形低电平时计数的个数resh_3=(resh2-resh_3)/resh2;/算出波形的占空比resh2=resh2*1.09;/精确到个位return resh2;/*ADC0809测量信号的电压*/void init()/初始化函数EA=1; /开总中断TMOD=0x02; /设定定时器T0工作方式 TH0=0xec; TL0=0xec; /利用T0中断产生CLK信号频率,约550KHZTR0=1; /启动定时器T0ET0=1;ST=0;OE=0; uint run0831()/电压转换uchar i,max,min,t50; uint k,j;float v;j=resh_1/50.0/10.9;/将波形周期平分为50段,每段经过的时间init();for(i=0;i=49;i+)/每段的电压值存放在一个数组元素中ST=0; /启动AD转换 ST=1; ST=0; while(EOC=0);/EOC为1则转换完成OE=1;ti=P1;OE=0;while(j-);/延时波形周期的1/50if(t0=t1|t1=t2)/成立说明是方波否则是正弦波flag=1;elseflag=0;max=t0;for(i=1;i=49;i+)/选出50个元素中的最大数if(maxti)max=ti;min=t0;for(i=1;iti)min=ti;v=(max-min)*(5.0/256.0);/将模拟信号转换为数字信号k=100*v+0.5;/精确到百分位return k;/*1602液晶显示测量结果*/void delayms2(uint z)/延时uint i;for(i=0;iz;i+);void writedir(uchar dir) /写指令RS=0;RW=0;P0=dir;E=0;E=1;E=0;void writedat(uchar dat) /写数据RS=1;RW=0;P0=dat;E=0;E=1;E=0;void readdir() /读与检测状态uchar dir;P0=0xff;doRS=0;RW=1;E=1;dir=P0;E=0;while(dir&0x80);void ints()/初始化delayms2(1666);/延时15毫秒writedir(0x38);/写指令delayms2(555);/延时5毫秒writedir(0x38);delayms2(555);writedir(0x38);readdir();/检测1602液晶是否为空闲状态writedir(0x38);readdir();writedir(0x08);readdir();writedir(0x01);readdir();writedir(0x06);readdir();writedir(0x0c);void main()unsigned long int count1;uchar c1,c2,c3,c4,c5,c6,c7; /输出频率和周期的各位数uint ffz;/保存峰峰值float yxz;/保存有效值P0=0xff;P2=0xf0;p3_4=1;while(1)if(S2=0)delayms2(1110);if(S2=0)count1=time0();/测频率,单位为HZc1=count1/100000;c2=(count1%100000)/10000;c3=(count1%10000)/1000;c4=(count1%1000)/100;c5=(count1%100)/10;c6=count1%10;/将频率的各位分开ints();/输出频率readdir();writedir(0x84);readdir();writedat(c1);readdir();writedat(c2);readdir();writedat(c3);readdir();writedat(c4);readdir();writedat(c5);readdir();writedat(c6);readdir();writedat(H);readdir();writedat(Z);if(S3=0)delayms2(1110);if(S3=0)resh_1=count();/测周期,单位为uSc7=resh_1/1000000;c1=(resh_1%1000000)/100000;c2=(resh_1%100000)/10000;c3=(resh_1%10000)/1000;c4=(resh_1%1000)/100;c5=(resh_1%100)/10;c6=resh_1%10;/将周期的各位分开ints();/输出周期readdir();writedir(0x83);readdir();writedat(c7);readdir();writedat(c1);readdir();writedat(c2);readdir();writedat(c3);readdir();writedat(c4);readdir();writedat(c5);readdir();writedat(c6);read

温馨提示

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

评论

0/150

提交评论