1、第一章 前言频率测量是电子学测量中最为基本测量之一。由于频率信号抗干扰性强,易于传播,因而可以获得较高测量精度。随着数字电子技术发展,频率测量成为一项越来越普遍工作,测频原理和测频办法研究正受到越来越多关注。1.1频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少测量仪器。它是一种用十进制数字显示被测信号频率数字测量仪器。它基本功能是测量正弦信号、方波信号及其她各种单位时间内变化物理量。在进行模仿、数字电路设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精准度高,显示直观,经常要用到频率计。老式频率计采用测频法测量频率,普通由组合电路和时序电路等大量硬件电路构成,
2、产品不但体积大,运营速度慢并且测量低频信号不精确。本次采用单片机技术设计一种数字显示频率计,测量精确度高,响应速度快,体积小等长处1。1.2频率计发展与应用在国内,单片机已不是一种陌生名词,它浮现是近代计算机技术里程碑事件。单片机作为最为典型嵌入式系统,它成功应用推动了嵌入式系统发展。单片机已成为电子系统中最普遍应用。单片机作为微型计算机一种重要分支,其应用范畴很广,发展也不久,它已成为在当代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号解决等技术中日益普及一项新兴技术,应用范畴十分广泛。其中以AT89S52为内核单片机系列当前在世界上生产量最大,派生产品最多,基本可以满
3、足大多数顾客需要2。1.3频率计设计内容运用电源、单片机、分频电路及数码管显示等模块,设计一种简易频率计可以粗略测量出被测信号频率。 参数规定如下:1测量范畴10HZ2MHZ;2用四位数码管显示测量值;第二章 系统总体方案设计2.1测频原理测频原理归结成一句话,就是“在单位时间内对被测信号进行计数”。被测信号,通过输入通道放大器放大后,进入整形器加以整形变为矩形波,并送入主门输入端3。由晶体振荡器产生基频,按十进制分频得出分频脉冲,通过基选通门去触发主控电路,再通过主控电路以恰当编码逻辑便得到相应控制指令,用以控制主门电路选通被测信号所产生矩形波,至十进制计数电路进行直接计数和显示。若在一定期
4、间间隔T内合计周期性重复变化次数N,则频率表达式为式: (1)图1阐明了测频原理及误差产生因素。时基信号 待测信号 丢失(少计一种脉冲) 计到N个脉冲 多余(比实际多余了0.x个脉冲)图1 测频原理在图1中,假设时基信号为1KHZ,则用此法测得待测信号为1KHZ5=5KHZ。但从图中可以看出,待测信号应当在5.5KHZ左右,误差约有0.5/5.59.1%。这个误差是比较大,事实上,测量脉冲个数误差会在1之间。假设所测得脉冲个数为N,则所测频率误差最大为=1(N-1)*100%。显然,减小误差办法,就是增大N。本频率计规定测频误差在1如下,则N应不不大于1000。通过计算,对1KHZ如下信号用测
5、频法,反映时间长于或等于10S,。由此可以得出一种初步结论:测频法适合于测高频信号。频率计数器严格地按照公式进行测频4。由于数字测量离散性,被测频率在计数器中所记进脉冲数可有正一种或负一种脉冲量化误差,在不计其她误差影响状况下,测量精度将为: 应当指出,测量频率时所产生误差是由N和T俩个参数所决定,一方面是单位时间内计数脉冲个数越多时,精度越高,另一方面T越稳定期,精度越高。为了增长单位时间内计数脉冲个数,一方面可在输入端将被测信号倍频,另一方面可增长T来满足,为了增长T稳定度,只需提高晶体振荡器稳定度和分频电路可靠性就能达到。上述表白,在频率测量时,被测信号频率越高,测量精度越高。2.2总体
6、思路频率计是咱们经常会用到实验仪器之一,频率测量事实上就是在单位时间内对信号进行计数,计数值就是信号频率。本文简介了一种基于单片机AT89S52 制作频率计设计办法,所制作频率计测量比较高频率采用外部十分频,测量较低频率值时采用单片机直接计数,不进行外某些频。该频率计实现10HZ2MHZ频率测量,并且可以实现量程自动切换功能,四位共阳极动态显示测量成果,可以测量正弦波、三角波及方波等各种波形频率值。第三章 硬件电路详细设计依照系统设计规定,频率计实际需要设计硬件系统重要涉及如下几种某些:AT89S52单片机最小系统模块、电源模块、放大整形模块、分频模块及显示模块,下面将分别予以简介。3.1 A
7、T89S52主控制器模块3.1.1 AT89S52简介8位单片机是MSC-51系列产品升级版5,有世界知名半导体公司ATMEL在购买MSC-51设计构造后,运用自身优势技术(掉电不丢数据)闪存生产技术对旧技术进行改进和扩展,同步使用新半导体生产工艺,最后得到成型产品。AT89S52片内集成256字节程序运营空间、8K字节Flash存储空间,支持最大64K外部存储扩展。依照不同运营速度和功耗规定,时钟频率可以设立在0-33M之间。片内资源有4组I/O控制端口、3个定期器、8个中断、软件设立低能耗模式、看门狗和断电保护。可以在4V到5.5V宽电压范畴内正常工作。不断发展半导体工艺也让该单片机功耗不
8、断减少。使用双列直插DIP-40封装。AT89S52引脚如下图3所示。3.2 引脚功能VCC:电源电压;GND:地;P0口:P0口是一种8位漏极开路双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具备内部上拉电阻。在 flash编程时,P0口用来接受指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻7。P1口:P1口是一种具备内部上拉电阻8位双向I/O口,P1 输出缓冲器能驱动4个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高
9、,此时可以作为输入口使用。作为输入使用时,被外部拉低引脚由于内部电阻因素,将输出电流。此外,P1.0和P1.2分别作定期器/计数器2外部计数输入和定期器/计数器2触发输入,P1口功能详细如表1所示。在flash编程和校验时,P1口接受低8位地址字节。表1 P1口第二种功能阐明表引脚号第二功能P1.0T2(定期器/计数器T2外部计数输入),时钟输出P1.1T2EX(定期器/计数器T2捕获/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2口:P2口是一种具备内部上拉电阻8位双向I/O口,P2输出缓冲器能驱动4 个TTL逻辑电
10、平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低引脚由于内部电阻因素,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强内部上拉发送1。第四章 系统软件设计系统软件设计重要采用模块化设计,论述了各个模块程序流程图,并简介了软件Keil和Proteus用法和调试仿真。4.1 软件模块设计系统软件设计采用模块化设计办法。整个系统由初始化模块,信号频率测量模块,自动量程转换和显示模块等模块构成。系统软件流程如图19所示。频率计开始工作或者完毕一次频率测量,系统软件都进行测量初始化。
11、测量初始化模块设立堆栈指针(SP)、工作寄存器、中断控制和定期计数器工作方式。定期计数器工作一方面被设立为计数器方式,即用来测量信号频率15。图19 系统软件流程总图一方面定期计数器计数寄存器清0,运营控制位TR置1,启动对待测信号计数。计数闸门由软件延时程序实现,从计数闸门最小值(即测量频率高量程)开始测量,计数闸门结束时TR清0,停止计数。计数寄存器中数值通过数制转换程序从十六进制数转换为十进制数。判断该数最高位,若该位不为0,满足测量数据有效位数规定,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门宽度扩大10倍。4.2 应用软件简介此设计需要在Keil软件平台上完毕程序调试,在
12、Proteus软件平台上完毕仿真显示。因而简介如何使用Keil和Proteus进行软件仿真。Keil简介Keil软件是当前最流行开发系列单片机软件,Keil提供了涉及C编译器、宏汇编、连接器、库管理和一种功能强大仿真调试器等在内完整开发方案,通过一种集成开发环境(uVision)将这些部份组合在一起。而Proteus与其他单片机仿真软件不同是,它不但能仿真单片机CPU工作状况,也能仿真单片机外围电路或没有单片机参加其他电路工作状况。因而在仿真和程序调试时,关怀不再是某些语句执行时单片机寄存器和存储器内容变化,而是从工程角度直接看程序运营和电路工作过程和成果。对于这样仿真实验,从某种意义上讲,是
13、弥补了实验和工程应用间脱节矛盾和现象16。(1)建立工程文献点击“Project-New project”菜单,浮现一种对话框,规定给将要建立工程起一种名字,你可以在编缉框中输入一种名字,点击“保存”按钮,浮现第二个对话框,按规定选取目的器件片。建立新文献并增长到组。分别设立“target1”中“Target,output,debug”各项,使程序汇编后产生HEX文献。(2)汇编,调试系统程序Keil 单片机模仿调试软件内集成了一种文本编辑器,用该文本编辑器可以编辑源程序。在集成开发环境中选取菜单“File New.”、单击相应工具按钮或者快捷键Ctrl +N 将打开一种新文本编辑窗口,完毕汇
14、编语言源文献输入,并且完毕源程序向当前工程添加。然后在集成开发环境中选取菜单“FileSave As.”可以完毕文献第一次存储。注意,汇编语言源文献扩展名应当是“ASM”,它应当与工程文献存储在同一文献夹之内。在完毕文献第一次存储后来,当对汇编语言源文献又进行了修改,再次存储文献则应当选取菜单“FileSave”、单击相应工具按钮或者快捷键Ctrl +S 实现文献保存。接着工作需要把汇编语言源文献加入工程之中。选取工程管理器窗口子目“Source Group 1”,再单击鼠标右键打开快捷菜单。在快捷菜单中选取“Add File to Group Source Group 1”,加入文献对话框被
15、打开。在这个对话框“查找范畴(I)”下拉列表框中选取存储汇编语言源文献文献夹,在“文献类型(T)” 下拉列表框选取“Asm Source file(*.a*;*.src)”,这时存储汇编语言源文献将显示出来。双击要加入文献名或者选取要加入文献名再单击“Add”按钮即可完毕把汇编语言源文献加入工程。文献加入后来,加入文献对话框并不消失,更多文献也可以运用它加入工程。如果不需要加入其他文献,单击“Close”按钮可以关闭加入文献对话框。这时工程管理窗口文献选项卡中子目录“Source Group 1”下浮现一种汇编语言源文献。 需要注意,当把汇编语言源文献加入工程但还没关于闭加入文献对话框,这时有
16、也许被误以为文献没有成功地加入工程而再次进行加入操作,系统将显示所需文献已经加入提示。在这种状况下,单击提示框中“拟定”按钮,再单击“Close”按钮可以关闭加入文献对话框。(3)编译源程序,浮现错误时,返回上一级对错误更改后重新编译,直到没有错误为止。protues简介 protues是Labcenter公司出品电路分析、实物仿真系统,而KEIL是当前世界上最佳51单片机汇编和C语言集成开发环境。她支持汇编和C混合编程,同步具备强大软件仿真和硬件仿真功能17。Protues可以很以便和KEIL、Matlab IDE等编译模仿软件结合。Proteus提供了大量元件库有RAM,ROM,键盘,马达
17、,LED,LCD,AD/DA,某些SPI器件,某些IIC器件,它可以仿真单片机和周边设备,可以仿真51系列、AVR,PIC等惯用MCU,与keil和MPLAB不同是它还提供了周边设备仿真,只要给出电路图就可以仿真。这里我将keil和 Protues两个软件迅速集成起来使用。(1)一方面将keil和 Protues两个软件安装好。(2)然后在C:Program FilesLabcenter EletronicsProtues 6 ProfessionalMODELS(我Protues是安装C盘里面)目录下VDM51.DLL 动态连接库文献复制到C:KEILC51BIN 目录下面(我keil 也安
18、装在C盘)这个文献将在keildebug设立时用到。(3)打开protues软件,新建一文献将硬件原理图绘入图中。(4)将KEIL生成HEX文献下载入单片机中,点击“开始”进行仿真。(5)在keil中进行debug,同步在proteus中查看直观成果(如LCD显示)。这样就可以像使用仿真器同样调试程序。运用Proteus与Keil整合进行第五章 频率计系统调试常用数码管由七个条状和一种点状发光二极管管芯制成,叫七段数码管,依照其构造不同,可分为共阳极数码管和共阴极数码管两种。依照管脚资料,可以判断使用是何种接口类型14.两种数码管内部原理如图16所示。图16 两种数码管内部原理图LED数码管中
19、各段发光二极管伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。在一定范畴内,其正向电流与发光亮度成正比。因此它输入端在5 V电源或高于TTL高电平(3.5 V)电路信号相接时,一定要串加限流电阻,以免损坏器件。频率值显示电路数码管电路设计不加三极管驱动时,使用4位数码管进行频率值显示,如果选取共阴极数码管显示,则需要8个三极管进行驱动,因而选用共阳极数码管进行动态显示,详细数码管设计电路如图17所示。图17 数码管显示电路5.2 软件调试Pouteus软件调试依照系统设计规定,进行Keil和Proteus系统仿真,不断调试程序,直到符合功能规定。Proteus总体仿真图29所示。图
20、29 频率计整体仿真图功能调试当测量频率值不大于1KHz如下时,数码管显示频率值,并红色LED灯亮,作为Hz档单位批示。例如输入信号123Hz,仿真显示如图30所示。图30 HZ档频率仿真5.3 误差分析从记录数据可以看出,系统软件仿真误差很小,在10Hz-2MHz范畴内测量出来频率基本上就是输入信号频率,在超过这个范畴后,才浮现很小误差。但是在硬件调试中,也许是由于原则元器件自身误差,如随着时间延长,其值相比出厂时产生误差;导致测量成果没有软件仿真精准。同步手工焊接单片机最小系统、分频整形电路等也会带来一定干扰,导致信号失真,从而导致测量精度下降,测量范畴有所缩小,但是可以看出,误差在容许范
21、畴内,所设计电路基本符合规定。第六章 总结课程设计已经结束,通过这次设计,我受益匪浅。课程设计是一次综合性实践,它将各种知识结合到一起综合运用到实践上来扩展、弥补、串联所学知识。通过本次课程设计我得到了诸多收获。一方面,理解了单片机基本知识和在控制领域作用和地位。另一方面掌握了C语言编写程序,学会了使用PROTUTES和KEIL仿真来实现,同步掌握了如何收集、查阅、应用文献资料,如何依照实际需要有选取阅读书籍和对的拟定系统所要使用元器件类型。再次,在精神方面锻炼了思想、磨练了意志。面对存在困难一方面分析问题依照目规定拟定可实现某些,定出那不准方面找同窗和教师讨论研究,再完善、再修改、再发现问题
22、、再解决培养了自己耐心、恒心及遇事不乱精神。总之,我明白了理论和实践之间存在距离只有靠不断思考不断动手才干将所学知识真正运用到实践上来。在课程设计中我诸多方面能力都得到了提高,特别在单片机软件编程方面让我感触颇深。我个人以为软件设计是个即灵活又细腻工作,它规定耐心和细心去不断完善,同步还需要有良好逻辑思维能力。通过这次毕业设计,我分析问题和解决问题能力有所提高,也巩固了所学知识,加深了对理论知识理解,更重要是锻炼自己独立性,为我此后工作和学习打下坚实基本。参照文献 1邹大挺频率计设计J. 电子产品世界出版社. . 第193期. 4-7. 2雷玉堂光电检测技术M. 中华人民共和国计量出版社. 1
23、995.3季建华. 智能仪表原理M. 山东教诲出版社. .4王永生. 电子测量学M. 西北工业大学出版社. .5李华单片机实用接口技术M. 航空航天大学出版社. .6张鹏王雪梅. 单片机原理与应用实例教程M. 海军出版社. .7赫建国等. 单片机在电子电路设计中应用M. 清华大学出版社. .8康华光电子技术基本(模仿某些)M. 高等教诲出版社. 19989Z10谢自美电子线路设计与实验M. 华中科技大学出版社. . 11 Z.12Z.13Z.14康华光电子技术基本(数字某些)M. 高等教诲出版社. 1998.15赖麒文. 8051单片机C语言软件设计艺术M. 科学出版社. .16徐波. Kei
24、l使用技巧J. 电子产品世界出版社. . 第224期. 6-9.17吴清平. 单片机原理与应用实例教程M. 海军出版社. .【简要阐明】一、尺寸:长128mm宽87mm高18mm二、支持芯片:AT89S51/S52/S53 支持STC89C51/C52/C53(加转换板可使用ATMEGA8/48、ATMEGA16/32)三、工作电压:直流4.55.5伏四、单片机原则十针下载接口。(可使用并口下载线和USB下载线下载)五、特点:1、具备电源批示。2、因此I/O口以引出并有LED灯批示。3、四位数码管显示、四位按键输入、32位LED发光二极管显示。4、原则11.0592M晶振。(晶振可以插拔更换)
25、5、具备上电复位和手动复位。6、四种供电接口(USB供电、端子引入供电、排针引入供电、电源头接口供电)7、串口通信使用MAX232接口,同步可如下载STC单片机程序。8、带有蜂鸣器,可以输出音调频率计源程序:#include /库文献#define uchar unsigned char/宏定义无符号字符型#define uint unsigned int /宏定义无符号整型/* 初始定义*/code uchar seg7code10= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/显示段码 数码管字跟 不加code,默认在数据存储器25
26、6buchar wei4=0XEf,0XDf,0XBf,0X7f; /位控制端 (四位数码管)sbit key1=P20;uint tcnt=0;/计中断int th0,t0,val=0;sbit sound=P37;/蜂鸣器/* 延时函数*/void delay(uchar t) uchar i,j; for(i=0;i0;j-);void delay_2ms() uchar l,k; for(l=0;l0;l+) for(k=0;k254;k+); /* 显示函数*/ void Led(int date) /显示函数/*数据转换*/ uint z,x,c,v; z=date/1000; /
27、求千位 x=date%1000/100; /求百位 c=date%100/10; /求十位 v=date%10; /求个位 P2=0XFF; P0=seg7codez; P2=wei0; delay(80); P2=0XFF; P0=seg7codex; P2=wei1; delay(80); P2=0XFF; P0=seg7codec; P2=wei2; delay(80); P2=0XFF; P0=seg7codev; P2=wei3; delay(80); P2=0XFF;/* 定期中断服务函数*/void t1(void) interrupt 3 using 0 /定期中断服务函数 p
28、23 ,p46 tcnt+;/每过50ms tcnt 加一 if(tcnt=20) /计满20 次(1 秒)时 th0=TH0; /读计数值 t0=TL0; val=th0*256+t0; /换算计数值 tcnt=0;/重新再计 TH0=0; /计数器归零 TL0=0; TH1=(65535-50000)/256;/对TH1 TL1 赋值 TL1=(65535-50000)%256;void T0() interrupt 1 /计数中断 sound=sound;/计数溢出中断void init()TMOD=0x15;/定期器1工作方式1,计数器0工作方式1IE=0X8A; TR1=1; /开始计时TR0=1; /开始计数 TH0=(65535-50000)/256;/对TH1 TL1 赋值TL0=(65535-50000)%256;/* 主函数*/void main() if(!key1) delay_2ms(); if(!key1) init(); while(1) Led(val); /* 结束*