ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:118.58KB ,
资源ID:24675800      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24675800.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机期末设计数字频率计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机期末设计数字频率计.docx

1、单片机期末设计数字频率计1. 引言近年来,在电子技术中,频率是最基本的参数之一,并且与许多的电参量的测量方法、测量结果都有十分密切的关系,因此,频率的测量显得尤其重要。数字电路制造工业的进步,使得系统的设计人员能在更小的空间内实现更多的功能,从而提高系统的可靠性和速度,数字集成电路具有结构简单,和同类型电路单元多的特点,因为容易高集成化和归一化。在电子系统非常广泛的应用者,到处可见处理离散系统的数字电路,共消费用的微波炉和电视、先进的工业控制系统、空间通讯系统、交通控制雷达系统、医院救急系统等无一不用到数字技术。由于数字电路的飞速发展,所以数字频率计的发展也很快。通常能对时间和频率两种以上的功

2、能数字化测量仪器,称为数字式频率计。在电子测量技术中是最为基本的一个参量,对适应晶体振荡器、各种信号发生器、分频和倍频电路的出书信号的频率测量,广播、电视、电讯、微电子技术等现代科学领域。因此,数字频率计是一种应用很广泛的仪器。目 录1. 引言 11.1作品简介21.2作品设计思路及方案21.3知识点应用32. 硬件设计32.1硬件设计思路描述软件设计32.2分模块进行设计说明42.3硬件设计原理图 93.软件设计93.1软件设计思路描述93.2主程序设计103.3核心子程序的设计164.作品调试17结语17参考文献171.1作品简介数字频率计是一种用十进制数字,显示被测信号频率的数字测量仪器

3、。它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,显示直观,所以经常要用到数字频率计。 1.2作品设计思路及方案 频率测量中直接测量的数字频率计主要由四个部分构成:时基(T)电路、输入电路、计数显示电路以及控制电路。在一个测量周期过程中,被测信号通过NE555芯片的的输入端输入,从输出端引出后,信号发往单片机,在定时器进行一秒钟的中断,和计数器的计数脉冲个数,即可得到被测信号的频率)1.3知识点应用时钟电路复位电路计数器定时器数码管动态扫描NE555的波形整形电路2. 硬件设计2.1硬件设计

4、思路描述: 数字频率计的主要功能是测量周期信号的频率。频率是单位时间(1S)内信号发生周期变化的次数。如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。这就是数字频率计的基本原理。信号的频率就是信号在单位时间内所产生的脉冲个数,其表达式为f=N/T,其中f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。计数器所记录的结果,就是被测信号的频率。如在1s内记录100

5、0个脉冲,则被测信号的频率为1000HZ。基于51单片机,定时器负责一秒钟的计时,而计数器则记下在一秒钟里面收到的脉冲个数,并显示在六位数码管上。脉冲发生源经过NES555将正弦波整成方波,即可测量不同波形的频率,增加了实用性。2.1.1单片机的时钟电路:在MCS51单片机片内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式,如图1.11所示。在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容

6、构成振荡电路,通常C1和C2一般取30pF,晶振的频率取值在1.2MHz12MHz之间。对于外接时钟电路,要求XTAL1接地,XTAL2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于12MHz即可。 晶体振荡器的振荡信号从XTAL2端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号P1和P2供单片机使用。时钟信号的周期称为状态时间S,它是振荡周期的2倍,P1信号在每个状态的前半周期有效,在每个状态的后半周期P2信号有效。CPU就是以两相时钟P1和P2为基本节拍协调单片机各部分有效工作的。图1.12.1.2单片机的复位电路:AT89C51的上电复位电

7、路如图1.2所示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1F。上电复位的工作过程是在加电时,复位电路通过电 容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图1.2

8、的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。2.1.3单片机的计数器/定时器16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。 当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的

9、振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:T=1/(12106)Hz1/12=1s 这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。 当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。如图3所示中P3.4与P3.5口。2.1.4数码管

10、动态扫描电路:8段数码管显示原理,数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。对于“共阳极”的数码管,内部每个发光二极管的阳极被接在一起,成为该各段的公共选通线;发光二极管的阴极则成为段选线。对于“共阴极”数码管,则正好相反,内部发光二极管的阴极接在一起,阳极成为段选线。这两种数码管的驱动方式是不同的。当需要点亮“共阳极”数码管的一段时,公共段需接高电平(即写逻辑1)、该段的段选线接低电平(即写逻辑0),从而该段被点亮。当需要点亮“共阴极”数码管的一段时,公共段需接低电平(即写逻辑0)、该段的段选线接高电平(即写逻辑1),该段被点亮。在多位8段数码管显示时,为了简化硬

11、件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用。而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码管,这样的数码管驱动方式就称为“动态扫描”。本次接线还使用了两片74HC573锁存器,使能端接在单片机的P2.6与P2.7,这样子当使能端打开的时候,锁存数据,关掉的时候即使段选的字码改变也不会影响了数码管的显示了。在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。8位8段LED动态显示器电原理图如图1.3所示。图1.32.1.5

12、 NE555的波形整形电路555 定时器的功能主要由两个比较器决定。两个比较器的输出电压控制RS 触发器和放电管的状态。在电源与地之间加上电压,当 5 脚悬空时,则电压比较器 C1 的反相输入端的电压为 2VCC /3,C2 的同相输入端的电压为VCC /3。若触发输入端 TR 的电压小于VCC /3,则比较器 C2 的输出为 0,可使 RS 触发器置 1,使输出端 OUT=1。如果阈值输入端 TH 的电压大于 2VCC/3,同时 TR 端的电压大于VCC /3,则 C1 的输出为 0,C2 的输出为 1,可将 RS 触发器置 0,使输出为 0 电平。如图1.4构成施密特触发器,可将正弦波等转

13、换为方波,如图1.5.图1.4图1.5最后将以上几个模块整合起来,最终的硬件原理如图1.6所示。图1.63.软件设计3.1软件设计思路描述信号的频率就是信号在单位时间内所产生的脉冲个数,其表达式为f=N/T,其中f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。计数器TI所记录的结果,就是被测信号的频率。如在1s内记录1000个脉冲,则被测信号的频率为1000HZ。基于51单片机,定时器负责一秒钟的计时,而计数器则记下在一秒钟里面收到的脉冲个数,并显示在六位数码管上。3.2主程序设计流程图:NY3.2.1 初始化子程序:void ini() /初始化函数TMOD=0x

14、15; /计数器T0和定时器T1工作方式EA=1; ET0=1;TH0=0;TL0=0;TR0=1; ET1=1;TR1=1; TH1=(65536-45872)/256; /50ms产生一次中断 TL1=(65536-45872)%256;3.2.2延时子程序:定义两个变量,通过for循环实现的延时程序。程序代码如下:void delayms(uint z) /延时zms uchar i,j; /定义两个变量 for(i=z;i0;i-) for(j=115;j0;j-);3.2.3数码管显示子程序:通过数码管的动态扫描,在极短的时间内来回显示这六个数字,使人眼觉得是同时显示的。由于只采用了

15、六个数码管,显示六位数。置段选端口、位选端口高电平,即可分别通过74HC573锁存器送入段码、位码,再将74HC573使能端置零,消影,再送入下一组数据。代码如下:void display(uchar wan,uchar qian,uchar bai,uchar shi,uchar ge) /显示子函数 wan=f/10000; /万位数字 qian=f/1000%10; /千位数字 bai=f/100%10; /百位数字 shi=f/10%10; /十位数字 ge=f%10; /个位数字 wela=1; /位选端口打开 P1=table10; /P1口送入位选码 wela=0; /位选端口关

16、闭 dula=1; /段选端口打开 P1=tablewan; /送入段选码 dula=0; /段选端口关闭 delayms(5); /延时5ms P1=0xff; /消影,避免显示错乱 wela=1; /送入千位数字 P1=table11; wela=0; dula=1; P1=tableqian; dula=0; delayms(5); P1=0xff; wela=1; /送入百位数字 P1=table12; wela=0; dula=1; P1=tablebai; dula=0; delayms(5); P1=0xff; wela=1; /送入十位数字 P1=table13; wela=0

17、; dula=1; P1=tableshi; dula=0; delayms(5); P1=0xff; wela=1; /送入个位数字 P1=table14; wela=0; dula=1; P1=tablege; dula=0; delayms(5); P1=0xff;3.2.4读脉冲计数子程序:通过读取放在寄存器的脉冲的计数,将TH0,counter_high进行比较,若读取两次的值不一样,则表示脉冲数目读取出错,跳过之后重新读取。代码如下:void read_counter() /读取T0计数到的脉冲数目 do counter_high=TH0; counter_low=TL0; a=c

18、*65536+counter_high*256+counter_low; /a为脉冲计数 while(counter_high!=TH0);3.2.5定时器T1的中断程序:50ms产生一次中断,进入一次中断后b的值加1,当b=20时,定时1秒,关掉T0与T1。void timer1() interrupt 3 TH1=(65536-45872)/256; TL1=(65536-45872)%256; b+; /当b=20的时候为1秒 if(b=20) b=0; f=a; /f为频率 TR1=0;TR0=0; 3.2.6计数器T0中断程序:当计数寄存器溢出;当计数器溢出时,软件计数加1,相当于收

19、到65536个脉冲void timer0() interrupt 1 c=c+1; TH0=0;TH1=0;TR0=1;3.作品调试:在此次期末设计中,没有亲手搭建出频率计的实体电路,只在开发板上实现了频率计的功能,由于条件的不足,频率的输入只能用电动按键来模拟。所以作品调试也只能在仿真软件proteus调试,也发现了该作品的不足之处,就是只有当高电平大于4V以上才能被计数到脉冲个数。之后将脉冲的电平调高就可以实现频率计功能了。4.结语本次频率计的量程可从060k,精确到个位,可测方波正弦波等波形。该频率计由于使用的是六位数码管,所以缺点之一,就是量程太小,有局限性。仿真以后返现了一个初步设计该频率计的时候完全没有想到的缺憾,就是高电平要在4V以上才能被检测出来是一个高电平。这就意味着当峰值小于4V的脉冲信号是无法被检测到的。这次设计出来的频率计只是一个小模型,之后会继续改进的,将量程进一步增加,同时将误差减小,还有检测峰值小于4V的各类脉冲信号。参考文献1 郭天祥 新概念51单片机C语言教程M . 北京:电子工业出版社 2009 页码100-1102 dongge1573 .NE555XX百科 EB/OL .日期:2013-10-303单片机的C语言程序设计与应用基于proteus仿真(第2版)M. 北京:电子工业出版社 2012 页码123-139

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1