您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机的频率计
2016年浙江理工大学电子设计大赛设计报告简易数字频率计(B题)2016年3月30日摘要:频率测量用途非常广泛,高精度,宽量程的数字频率计因而成为重要的测量仪器。本设计采用先放大整形,再分频选择,产生信号给单片机显示的原理,从而能能减少一些干扰,提高输出波形的纯净度,减小误差。放大模块采用低噪声,精密,高速运动放大器OP37芯片,整流部分采用LM311芯片,采用两个反相器,使波形更稳定,反相器用的是芯片74LS00.考虑到单片机能承受的频率达不到我们预期想要的高频率,所以采用分频模块,并采用选择器进行调节分频的程度。分频模块采用三块74LS160,数据选择器用74LS153芯片。最后把信号输出到单片机,采用单片机1602显示屏的显示功能显示出所测频率的大小,实现了高精度的频率测量。关键词:高精度频率测量放大整形分频选择单片机1602显示OP37LM31174LS系列。简易数字频率计(B题)1.系统方案本系统主要由放大模块,整形模块,分频模块,控制模块,显示模块组成,下面分别论证这几个模块的选择。1.1方案论证1.1.1总体方案的论证方案:采用中小规模的数字电路构成频率计,为了提高抗干扰能力,统一将万能板刻成了PCB板并调试成功。放大整形反向模块为了得到纯净的方波信号,分频模块采用与数据选择器结合达到调节十分频,百分频,千分频的控制效果。方案设计简单,而且采用PCB板,比较美观,抗干扰能力高,误差不大,小于0.1%。1.1.2放大方案的论证方案:采用OP37高精度低噪声的芯片,整体上比一般的OP07新芯片有很大的优化提升。OP37不仅具有OP07的低失调电压和漂移特性,而且速度更高、噪声更低。在增益大于5的应用中用OP37可取代OP07。所以本实验适宜采用OP37。1.1.3整形方案的论证方案:采用LM311电压比较器设计运行在更宽的电源电压:从标准的±15V运算放大器到单5V电源用于逻辑集成电路。1.1.4显示方案的论证方案:采用STC89C51单片机与1602显示屏结合,通过单片机的代码接受外部中断,即已经被放大整形反向并分频的信号,又通过单片机在1602显示屏将信号以频率形式呈现,达到直观的测量频率的目的。2.电路与程序设计2.1电路的设计2.1.1系统总体框图系统总体框图如下图所示,系统主要由放大电路,整形电路,分频电路和STC89C51单片机组成。放大电路负责放大信号,整形电路负责把放大后的信号变换成标准的矩形波信号,使之成为单片机能够检测到的信号。被测信号开关1602显示屏2.1.2放大电路方案放大电路采用OP37高速放大器。增益带宽积为63MHz,可以在高频下仍然保持比较平稳的放大倍数,符合题目要求的发挥部分。根据运放增益的公式Aod=(R3/R1),可得电路的放大倍数。2.1.3整形电路方案整形电路采用基本的芯片基本电压比较器LM311。芯片基础性能强,适用性高。2.2程序的设计2.2.1程序设计思路以T0计数器计数,程序主要完成对输入信号和标准号个数的测量、测量输入信放大整形反向单片机分频选择号高电平和低电平。单片机主要完成对程序的控制、计算和显示相关信息及进行人机交互,并通过1602显示屏显示。3测试方案与测试结果3.1测试方案(1)软件仿真测试通过multisim和AD等仿真软件进行仿真并搭建电路,设计PCB电路板,然后进行实际电路搭建和焊接。(2)硬件测试依次进行放大电路和整形电路测试,然后进行分频和选择测试,最后和单片机连接进行显示测试,最后整体测试。确保放大模块整形模块以及分频模块都能够满足使用需求。3.2测试条件和仪器测试条件:检查多次,仿真电路和硬件电路必须和系统原理图完全相同,并且检查无误,硬件电路确认无虚焊等问题,能正常工作。测试仪器:高精度万能表,信号源,示波器,数字直流稳压源。3.3测试结果与分析3.3.1频率和周期测量被测信号频率(HZ)实际测得频率(HZ)实际测得周期(us)20k20.13k50.0030k30.21k33.3340k40.18k25.0050k50.45k20.0082k82.30k12.50100k100.10k10.00150k150.10k6.66200k200.10k5.00230k230.20k4.34270k270.20k3.70300k300.20k3.33400k400.20k2.50500k500.30k2.00600k600.40k1.66700k700.50k1.42800k800.60k1.24900k900.60k1.101M1001k0.992M2001k0.493M3002k0.334M3998k0.245M4997k0.20通过以上数据可得,放输入信号频率有效值为1HZ~5MHZ,实际测量值与测量值的相对误差都是0.1%,符合题目要求,而且在幅值较大的情况下可以完成一部分发挥部分的要求。3.3.2误差分析(1)整形电路输入信号的误差。电路的输入信号是经过整形比较电路输入的,硬件误差难以避免。整形电路的上升沿不够,必然导致整形出来的信号上升沿不够陡峭,单片机对其上升沿误判导致计数值错误,所以测得频率有偏差。(2)外界信号的干扰。测试时的周边信号的干扰都会对电路的测试产生一定的影响,所以测得的频率具有一定的偏差。4设计总结通过本次电子设计大赛,我们小组设计的方案能够精确测量峰峰值500mvpp,频率范围为1Hz~5MHz的正弦波,相对误差小于0.1%,符合题目基本要求。通过分频器的分频功能能够理想的将单片机的检测频率提高最多1000倍,其测量频率范围宽,精度高,易于编程和设计,基本符合题目要求。而且使用PCB板制图,得到的信号更加稳定,硬件电路的抗干扰能力强,稳定性高,便于操作。通过本次设计大赛,我们小组受益匪浅。我们明白了怎么使用AD软件进行PCB板制作及布线问题,为以后的学习和发展奠定了良好的基础。附录一选择器PCB图放大器PCB图附录二直流稳压电源设计原理图放大整形电路原理图分频选择电路原理图附录三单片机程序代码#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbitlcdrs=P1^1;//液晶引脚定义sbitled_cs=P1^2;sbitlcden=P1^0;sbitk1=P1^3;sbitk2=P1^4;sbitdx=P2^7;//数码管引脚定义sbitwx=P2^6;sbitkey1=P3^0;sbitkey2=P3^1;sbitkey3=P3^2;sbitkey4=P3^3;sbitled1=P1^7;sbitled2=P1^6;sbitled3=P1^5;intflag=0,s=1,a=0,i=0;unsignedlongrate4,rate5,rate6,rate7,t4,t5,t6,t7,l4,l5,l6,l7;unsignedlongx,c=0,T=0,L=0,f=0,f1=0;/*延时函数*/voiddelay(uintxms){uinti,j;for(i=xms;i0;i--)for(j=114;j0;j--);}/*1602液晶*/voidwrite_com(ucharcom)//写命令{lcdrs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_data(uchardate)//写数据{lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_by_xy(ucharx,uchary)//坐标定位{ucharaddress;if(y==0)address=0x80+x;//y=0,写第一行elseaddress=0xc0+x;//y=1,写第二行write_com(address);}voidwrite_string(ucharx,uchary,uchar*s)//写字符串{write_by_xy(x,y);//设定显示位置while(*s)//writecharacter{P0=*s;write_data(*s);s++;}}voidwrite_sfm(ucharadd,uchardate)//写时分秒函数{ucharhour,ge;hour=date/10;//分解一个2位数的十位和个位ge=date%10;write_com(0x80+0x40+add);//设置显示位置write_data(0x30+hour);//送去液晶显示十位write_data(0x30+ge);//送去液晶显示个位}voidwrite_cgf()//写入固定汉字和符号{write_string(12,0,F==);}voidwrite_cgt()//写入固定汉字和符号{write_string(12,0,T==);}voidwrite_cgl()//写入固定汉字和符号{write_string(12,0,L==);}voidwrite_cgs(){write_string(12,1,S=);}voidinit_1602()//初始化{dx=0;wx=0;led_cs=0,c=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);TMOD=0x51;//设置定时器1计数工作模式1定时器0计时工作模式1TH0=0x4b;//定时器0装初值TL0=0xfd;EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0TH1=0x00;//定时器1装初值TL1=0x00;ET1=1;//开定时器1中断TR1=1;//启动定时器1}/*显示函数*/voidshow1(){rate7=f/1000000;write_sfm(0,rate7);rate6=(c%1000000)/10000;write_sfm(2,rate6);rate5=(c%10000)/100;write_sfm(4,rate5);rate4=(c%100)/1;write_sfm(6,rate4);if(k1==0&&k2==0){write_string(8,1,kHz);f1=f*1000;}if(k1==0&&k2==1){write_string(8,1,bHz);f1=f*100;}if(k1==1&&k2==0){write_string(8,1,sHz);f1=f*10;}if(k1==1&&k2==1){write_string(8,1,Hz);f1=f;}}voidshow2(){if(f1!=0){T=100000000/f1;t7=T/1000000;write_sfm(0,t7);t6=(T%1000000)/10000;write_sfm(2,t6);t5=(T%10000)/100;write_sfm(4,t5);write_string(6,1,.);t4=(T%100)/1;write_sfm(7,t4);write_string(9,1,us);}}voidshow3(){if(f1!=0){L=50000000/f1;l7=L/1000000;write_sfm(0,l7);l6=(L%1000000)/10000;write_sfm(2,l6);l5=(L%10000)/100;write_sfm(4,l5);write_string(6,1,.);l4=(L%100)/1;write_sfm(7,l4);write_string(9,1,us);}}/*主函数*/voidmain(){dx=0;wx=0;led_cs=0;init_1602();while(1){write_string(0,0,H-W-Z);if(key1==0){delay(5);//软件消抖if(key1==0){write_cgf();flag=1;while(!key1);//松手检测}}if(k
本文标题:基于51单片机的频率计
链接地址:https://www.777doc.com/doc-5223617 .html