量程自选的数字频率计.docx
- 文档编号:15847258
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:27
- 大小:1MB
量程自选的数字频率计.docx
《量程自选的数字频率计.docx》由会员分享,可在线阅读,更多相关《量程自选的数字频率计.docx(27页珍藏版)》请在冰点文库上搜索。
量程自选的数字频率计
等精度量程自选
数字频率计
摘要
51系列单片机是国内目前应用最广泛的一种8位单片机
之一,随着嵌入式系统、片上系统等概念的提出和接受及应用,51系列单片机还会在继后很唱一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用时非常重要的。
随着电子技术的发展,当前数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。
频率测量是电子学测量中最为基本的测量之一。
本次课设使用单片机At89C52为核心,使用等精度测频原理,设计量程自选的数字频率计。
采用C语言编写程序,测量范围0.01Hz~400KHz,测量精度能达到0.01。
测量结果在1602液晶上显示。
关键字:
AT89C52单片机,量程自选数字频率计,等精度测频
Summary
51seriesisthecurrentlythemostwidelyusedone8-bitmicrocontrollerswithembeddedsystems,theconceptofon-chipsystems,andapplicationsmadeandwhipsacceptable,51serieswillbesinginginthesubsequentperiodoftimeisoccupiedlow-endembeddedsystemproductsmarket,therefore,asthenewcentury,collegestudents,high-speeddevelopmentintheinformationindustrytoday,themastermicrocontroller'sbasicstructure,principlesanduseisveryimportant.
Withthedevelopmentofelectronictechnology,thecurrentdesignofdigitalsystemsismovingfast,largecapacity,smallsize,lightweightanddirection.
Frequencymeasurementisthemeasurementelectronics,oneofthemostbasicmeasurements.TheclassislocatedusingthemicrocontrollerAt89C52core,useofprecisionfrequencymeasurementprinciple,thedesignrangeofoptionaldigitalfrequencymeter.UsingClanguageprogram,measuringrange0.01Hz~400KHz,measurementaccuracycanreach0.001.Measurementsin1602DisplayedontheLCD.
Keywords:
AT89C52microcontroller,range-demanddigitalfrequencymeter,andotherprecisionfrequencymeasurement
1.方案论证
1.1单片机芯片的选择方案和论证
方案一:
采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:
采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,所以选择采用AT89S52作为主控制系统。
1.2显示模块选择方案和论证
方案一:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,占用的单片机口线多,连线还需要花费一点时间,所以也不用此种作为显示。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
方案三:
采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量信息,显示多样,清晰可见。
所以在此设计中采用LCD1602液晶显示屏.
1.3测频方案论证:
方案一:
传统的测频方法有直接测频法和测周法,在一定的闸门时间内计数。
门控信号和被测信号不同步。
计数值会产生一个脉冲的误差。
方案二:
等精度测频法采用门控信号和被测信号同步.消除对被测信号计数产生的一个脉冲的误差。
等精度频率测量方法消除了量化误差,可以在整个测试频段内保持高精度不变。
其精度不会因被测信号频率的高低而发生变化。
采用单片机作为控制核心的等精度频率计,可以分利用单片机软件编程技术实现等精度测频。
通过单片机对同步门的控制。
使被测信号和标准信号在闸门时问内同步测量,为了提高精度。
将电子计数功能转为测周期,采用多周期同步测量技术。
实现等精度测量。
测量时进行量程自选。
传统的频率计测量误差较大,等精度频率计以其测量准确、精度高、方便等优势将得到广泛的应用。
1.4电路设计最终方案决定
综上各方案所述,对此次课设的方案选定:
采用AT89S52作为主控制系统;等精度测频方案,测量时进行量程自选;在LCD1602液晶显示屏作为显示。
2系统的硬件设计与实现
2.1电路设计框图
电路设计框图如图1所示:
图1系统总体原理图
2.2系统硬件概述
系统组成由AT89C52单片机,1602液晶模块,7474D触发器,电容电阻等。
AT89S52片内集成256字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。
根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。
片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。
可以在4V到5.5V宽电压范围内正常工作。
不断发展的半导体工艺也让该单片机的功耗不断降低。
同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。
本频率计的设计以AT89C51单片机为核心,利用它内部的两个定时/计数器完成待测信号周期/频率的测量。
在使用计数方法实现频率测量时,这时外部的待测信号为定时/计数器的计数源,利用软件延时程序实现计数闸门。
首先定时/计数器的计数寄存器清0,运行控制位TR置1,通过7474D触发器,启动定时/计数器;然后运行软件延时程序。
同时定时/计数器对外部的待测信号进行计数,延时结束时TR清0,停止计数;最后从计数寄存器读出测量数据,完成数据处理后,由1602液晶显示测量结果。
主要单元电路的设计
2.3单片机主控制模块的设计
AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
图2单片机引脚图
单片机AT89C51内部具有2个16位定时/计数器,定时/计数器的工作可以由变成来实现定时、计数和产生计数溢出中断要求的功能。
在构成为定时器时,每隔几期周期加1(使用12MHz时钟时,每1us加1)这样以及其周期为基准可以用来测量时间间隔[6]。
在构成计数器时,在相应的外部引脚发生从1到0的的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。
外部输入每隔及其周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个震荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500KHz)。
定时/计数器的工作由相应的运行控制位TR控制,当TR置1,定时/计数器开始计数;当TR清0,停止计数。
单片机的最小系统如图2所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。
图3主控制系统
2.4阀门控制模块的设计
基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化。
传统的直接测频法其测量精度将随被测信号频率的降低而降低。
测周法的测量精度将随被测信号频率的升高而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。
等精度频率的测量原理图2所示
At89c52
fx
图4等精度频率的测量原理
频率为fx的被测信号输入到同步门控制电路和主门1f闸门),晶体振荡器的输出信号作为标准信号f时基信号)输入到主门2。
被测信号在同步控制门的作用下.产生一个与被测信号同步的闸门信号,被测信号与标准信号f时基信号)在同步门控制信号的控制下。
在同步门打开时通过同步门分别输入到事件计数器和时间计数器的信号输人端,计数器开始计数。
同步门关闭时信号不能通过主门。
计数器停止计数,单片机发出命令读入计数器的数值,并进行数据处理,将处理后的结果送显示。
等精度频率测量方法是采用多周期同步测量。
如图1的测量原理图所示由单片机发出预置门控信号GATE,GATE的时间宽度对测频精度影响较少,可以在较大的范围内选择.即在高频段时,闸门时问较短;低频时闸门时较长。
实现了全范围等精度测量,减少了低频测量的误差。
在同步门的控制下。
一方面保证了被测信号和时基信号的同步测量;另一方面在同步门打开后计数器并不是马上计数,而是在被测信号的下一个上升沿开始计数,同步门关闭后计数器也不是马上停止计数。
而是在被测信号的下一个上升沿停止计数。
即在实际闸门时间计数,从而提高了测量精度。
由于采用D触发器实现的同步门的同步作用,事件计数器所记录的Nx值已不存在误差的影响,但由于时钟信号与闸门的开和关无确定的相位关系,时间计数器所记录的NO的值仍存在±l误差的影响,只是时钟频率很高,误差的影响很小。
所以在全频段的测量精度是均衡的,从而实现等精度频率测量。
图5阀门控制模块电路
2.5电路原理及说明
时序图:
将需累加计数的信号(频率测量时为被测信号,时间测量时为时标信号),由一个“闸门”(主门)控制,并由一个“门控”信号控制闸门的开启(计数允许)与关闭(计数停止)。
图6等精度测频时序图
同步时间,即阀门时间:
流程图:
图7频率测量流程图
误差分析:
另由于单片机晶振误差,还有CPU运算时间等误差,也会对计数、运算等产生影响。
2.6单片机控制过程
首先由单片机发出一个通过P1.6(CLRP)、P1.7(OPEN)发出低电平,让外部D触发器异步清零,计数器T0、T1也清零,然后再让P1.6(CLRP)、P1.7(OPEN)发出低电平,此时D触发器能正常工作,等待外部输入信号上升沿,当上升沿到来时,P1.7信号通过D触发器单片机中断,计数器T0、T1同时开开始计数,此后每次等到外部输入信号上升沿T1计数器加1,T0由内部时钟定时加1。
当加到定时时间时,P1.6(CLRP)、P1.7(OPEN)发出低电平,D触发器异步清零。
T0、T1停止计数,再由单片机读取T0、T1的计数值,通过计算就可以得到外部输入信号的频率。
通过转换,在1602液晶上显示。
2.7显示模块的设计
图5为LCD显示模块
显示时第一行为FreqCounter(Hz),第二行为F=频率值
图8为LCD显示模块
3系统的软件设计
3.1程序流程框图
图9主程序流程图
3.2主程序:
voidtimer0_init()
{TMOD=0xd9;ET0=1;ET1=1;TR0=1;TR1=1;}
main()
{doublefx,temp;//,time;
lcd1602_init();
timer0_init();
OPEN=0;
CLRP=0;
lcd_put_xys(1,1,"FreqCounter(Hz)");
EA=1;
while
(1)
{OPEN=0;
CLRP=0;//清零
TH0=0;TL0=0;counter0=0;
TH1=0;TL1=0;counter1=0;
CLRP=1;//开启触发中断
OPEN=1;
while(counter0<28);//定时器溢出28次,约(65536/1843.2)*28约=980mS
OPEN=0;//关中断
while(GATE);//等待下输入频率上升沿结束
temp=counter0*65536+TH0*256+TL0;//进行计算
fx=1843200/temp;
fx=fx*(counter1*65536+TH1*256+TL1);
if(fx>1000000)sprintf(str_buff,"%-8.0f",fx);//自选位数
elseif(fx>100000)sprintf(str_buff,"%-8.1f",fx);
elseif(fx>10000)sprintf(str_buff,"%-8.2f",fx);
elseif(fx>1000)sprintf(str_buff,"%-8.3f",fx);
elseif(fx>100)sprintf(str_buff,"%-8.4f",fx);
elseif(fx>10)sprintf(str_buff,"%-8.5f",fx);
elseif(fx>1)sprintf(str_buff,"%-8.6f",fx);
elsesprintf(str_buff,"%-8.7f",fx);
//在1602上显示
lcd_put_xys(1,2,"");//清屏
lcd_put_xys(1,2,"F=");
lcd_put_xys(3,2,str_buff);
}
}
voidtimer0_int(void)interrupt1//两个计数器计数
{counter0++;}
voidtimer1_int(void)interrupt3
{counter1++;}
4Proteus软件仿真
4.1ProteusISIS简介
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。
该软件的特点是:
(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、I2C调试器、SPI调试器、键盘和LCD仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(3)目前支持的单片机类型有:
ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(4)支持大量的存储器和外围芯片。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真ARM、51、AVR、PIC。
4.2Proteus运行流程
ProteusISIS的工作界面是一种标准的Windows界面,如图 8所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
运行Proteus程序后,进入软件的主界面。
通过左侧工具栏中的P(从库中选择元件命令)命令,在PickDevices左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。
仿真如下:
图10ProteusISIS的工作界面
4.3Proteus功能仿真
Proteus仿真效果,载入hex文件后可以进行模拟仿真,可以全速运行也可以单步调试运行。
运行按键如图9所示。
图11运行按键
图12频率为0.8Hz仿真
图13频率为0.8Hz仿真
图14频率为200KHz仿真
图15频率为400KHz仿真
5测试与结果分析
5.1硬件测试
硬件使用AltiumDesignerWinter09画出电路图,转为PCB图。
1、打印电路板。
将绘制好的电路板用转印纸打印出来,注意滑的一面面向自己,一般打印两张电路板,即一张纸上打印两张电路板。
在其中选择打印效果最好的制作线路板。
2、裁剪覆铜板,用感光板制作电路板全程图解。
覆铜板,也就是两面都覆有铜膜的线路板,将覆铜板裁成电路板的大小,不要过大,以节约材料。
3、预处理覆铜板。
用细砂纸把覆铜板表面的氧化层打磨掉,以保证在转印电路板时,热转印纸上的碳粉能牢固的印在覆铜板上,打磨好的标准是板面光亮,没有明显污渍。
4、转印电路板。
将打印好的电路板裁剪成合适大小,把印有电路板的一面贴在覆铜板上,对齐好后把覆铜板放入热转印机,放入时一定要保证转印纸没有错位。
一般来说经过2-3次转印,电路板就能很牢固的转印在覆铜板上。
热转印机事先就已经预热,温度设定在160-200摄氏度,由于温度很高,操作时注意安全!
5、腐蚀线路板,回流焊机。
先检查一下电路板是否转印完整,若有少数没有转印好的地方可以用黑色油性笔修补。
然后就可以腐蚀了,等线路板上暴露的铜膜完全被腐蚀掉时,将线路板从腐蚀液中取出清洗干净,这样一块线路板就腐蚀好了。
腐蚀液的成分为浓盐酸、浓双氧水、水,比例为1:
2:
3,在配制腐蚀液时,先放水,再加浓盐酸、浓双氧水,若操作时浓盐酸、浓双氧水或腐蚀液不小心溅到皮肤或衣物上要及时用清水清洗,由于要使用强腐蚀性溶液,操作时一定注意安全!
6、线路板钻孔。
线路板上是要插入电子元件的,所以就要对线路板钻孔了。
依据电子元件管脚的粗细选择不同的钻针,在使用钻机钻孔时,线路板一定要按稳,钻机速度不能开的过慢,请仔细看操作人员操作。
7、线路板预处理。
钻孔完后,用细砂纸把覆在线路板上的墨粉打磨掉,用清水把线路板清洗干净。
水干后,用松香水涂在有线路的一面,为加快松香凝固,我们用热风机加热线路板,只需2-3分钟松香就能凝固。
8、焊接电子元件。
焊接完板上的电子元件,通电
5.2软件测试
硬件已经做出,调试过程中有很多问题,特别是复位电路,电阻没接正确,电容接错等后来都解决了。
烧入程序后,LCD液晶显示屏显示亮度不好。
解决:
一遍旋转10K欧的滑动变阻器,一遍观看LCD显示屏,知道看到合适的亮度为止。
5.3测试结果分析与结论
5.3.1测试结果分析
在测试中遇到LCD液晶显示屏为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏,滑动变阻器器没有调好:
查看烧写的程序是否正确无误,对程序进行认真修改。
测试中当在低频率时,数据刷新比较慢,因为对T1计数要溢出28次才读取关闭阀门,然后读取定时计数器的值进行计算。
实践证明:
测试测量范围0.01Hz~400KHz,测量精度能达到0.01Hz。
5.3.2测试结论
经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。
同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固。
仿真与实物非常吻合。
6课程设计总结与体会
本次课程设计是基于单片机课程学习之后的延伸,从最简单的画流程图开始,以Proteus软件调试并成功仿真结束。
在整个设计过程中,充分发挥人的主观能动性,自主学习,开阔了眼界,增长了知识。
较好的完成了设计,达到了预期的目的,完了最初的设想。
对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。
程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同学讨论,理清了思路,反而得心应手。
在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。
在遇到困难的时候,要沉着冷静,积极思考,克服困难。
此次课程设计中学到了除了知识以外更高层面的东西,对今后的学习生活都受益匪浅。
总之,此次课设使我的能力得到了全方位的提高,使得我的操作能力和专业技能都有了很大的提高。
同时,对单片机系统有的更深入的理解。
参考文献
[1]张毅刚编单片机原理及应用技术电子工业出版社2008
[2]陈正振编电子电路设计与制作广西交通职业技术学院信息工程系2007
[3]杨子文编单片机原理及应用西安电子科技大学出版社2006
[4]王法能编单片机原理及应用科学出版社2004
附录
附录一:
proteuse仿真图
附录二:
总体接线图
附录三:
PCB制版布线
附录四:
程序清单
主程序:
voidtimer0_init()
{TMOD=0xd9;ET0=1;ET1=1;TR0=1;TR1=1;}
main()
{doublefx,temp;//,time;
lcd1602_init();
timer0_init();
OPEN=0;
CLRP=0;
lcd_put_xys(1,1,"FreqCounter(Hz)");
EA=1;
while
(1)
{OPEN=0;
CLRP=0;//清零
TH0=0;TL0=0;counter0=0;
TH1=0;TL1=0;counter1=0;
CLRP=1;//开启触发中断
OPEN=1;
while(counter0<28);//定时器溢出28次,约(65536/1843.2)*28约=980mS
OPEN=0;//关中断
while(GATE);//等待下输入频率上升沿结束
temp=counter0*65536+TH0*256+TL0;//进行计算
fx=1843200/temp;
fx=fx*(counter1*65536+TH1*256+TL1);
if(fx>1000000)sprintf(str_buff,"%-8.0f",fx);//自选位数
elseif(fx>100000)sprintf(str_buff,"%-8.1f",fx);
elseif(fx>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 量程 自选 数字频率计