数字频率计单片机课程设计.docx

上传人:b****6 文档编号:8252043 上传时间:2023-01-30 格式:DOCX 页数:33 大小:790.95KB
下载 相关 举报
数字频率计单片机课程设计.docx_第1页
第1页 / 共33页
数字频率计单片机课程设计.docx_第2页
第2页 / 共33页
数字频率计单片机课程设计.docx_第3页
第3页 / 共33页
数字频率计单片机课程设计.docx_第4页
第4页 / 共33页
数字频率计单片机课程设计.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

数字频率计单片机课程设计.docx

《数字频率计单片机课程设计.docx》由会员分享,可在线阅读,更多相关《数字频率计单片机课程设计.docx(33页珍藏版)》请在冰豆网上搜索。

数字频率计单片机课程设计.docx

数字频率计单片机课程设计

《单片机技术》课程设计说明书

数字频率计

院、部:

学生姓名:

指导教师职称

专业:

班级:

学号:

完成时间:

 

湖南工学院《单片机技术》课程设计课题任务书

学院:

专业:

指导教师

学生姓名

课题名称

数字频率计

内容及任务

一、设计任务

设计一个能够测量周期性矩形波信号的频率、周期、脉宽、占空比的频率计。

二、设计内容

1、频率计的硬件系统

(1)、单片机最小系统模块

(2)、供电模块

(3)、显示模块

(4)、键盘模块

2、频率计的软件系统

(1)、系统监控程序模块

(2)、显示程序模块

(3)、键盘程序模块

(4)、频率测量程序模块

(5)、周期测量程序模块

(6)、脉宽测量程序模块

(7)、占空比测量程序模块

三、设计要求

该频率计上电或按键复位后能自动显示系统提示符“P.”,进入测量准备状态。

按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测量键则测量占空比。

被测信号频率范围:

10Hz至500KHz。

主要参考资料

[1]李广弟.单片机基础[M].第3版.北京:

北京航空航天大学出版社,2003.6.

[2]李全利.单片机原理及应用(C51编程)[M].北京:

高等教育出版社,2012.12.

[3]马忠梅.单片机的C语言应用程序设计[M].第4版.北京:

北京航空航天大学出版社,2003.6.   

[4]李光飞.单片机C程序设计指导[M].北京:

北京航空航天大学出版社,2003.01.

[5]李光飞.单片机课程设计实例指导[M].北京:

北京航空航天大学出版社,2004.9.

教研室

意见

 

教研室主任:

(签字)

年月日

摘要

随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。

本课程设计是一个基于单片机技术的数字频率计。

传统的频率计通常有很多的时序电路和逻辑电路组成,这种电路一般运行较慢,电路复杂不可靠,而且测频范围小。

从频率计的原理出发,介绍了基于52系列单片机的数字频率计的设计方案,选择了实现系统得各种电路元器件。

利用单片机的计数器和定时器的功能对被测信号进行计数。

编写相应的程序使单片机自动调节测量的量程,并把测出的频率数据送到LED数码管显示电路显示。

本设计以AT89S52单片机为核心,应用单片机的算术运算和控制功能并采用LED数码显示管将所测频率、周期、脉宽、占空比显示出来。

系统简单可靠、操作简易,能基本满足一般情况下的需要。

既保证了系统的测频精度,又使系统具有较好的实时性。

本频率计设计简洁,便于携带,扩展能力强,适用范围广。

关键字:

数字频率计;单片机;计数器

 

1概述

1.1数字频率计研究意义

随着电子产业的不断发展,不管是在相关的科技研究中还是在日常的实际应用中,频率测量的重要作用越来越凸显出来,然而就一般情况来看,仅由一些诸如组合、时序电路等基本硬件电路构成的数字频率计,其体积大、使用不方便,而且其运行速度也较慢,灵活度不高,如若测量低频的信号时,则不适合直接使用。

为了满足生活中日益增长的需求,人们开始通过结合单片机的优越特性来获得较为精确的频率,其中它基于时间或频率的模数转换原理,同时借助数字电路技术来提高测量的精确度。

另一方面,结合单片机的数字频率计因其体积较小,运算速度较快,较宽测量范围等诸多优点,故而在现今科研领域中比传统频率计有着更普遍应用,更为重要的是,通常情况下,我们知道,仅由硬件组成的电路比有软件组成的电路更为复杂、繁琐,在出现差错时,更改硬件电路消耗的成本高、效率低,而经由软件编程就可以简单实现相应功能,由此它具有降低制作成本,提高使用效率的优点。

伴随着当今科技的跨越式发展,人们对电子产品的需求也日益增加,随后,低成本、高效率、精确性等优越特性日益成为人们力求达到的目标,就频率计而言,如若现如今还是借以传统方式来设计制造频率计,显而易见,不能满足人们不断增长的需求。

此时,数字频率计的优势就渐渐凸显了:

小巧轻便、集成度高、操作便捷、易于维护和修改。

这些优点无一不满足着这人们更高的需求,可以试想一下,改变程序中的一段程序指令显然要比检查电路、甚至重新制作电路板要便捷的多。

也正是由于基于单片机的数字频率计与传统的频率计相比,有着如此明显的优势,因此,我将基于单片机的数字频率计作为我的研究课题。

在检测系统设计中熟悉并了解将作为单片机为控制核心,并辅以以独立式键盘、人机界面以实现课题所要求的功能。

本课题主要要求掌握数字频率相应的软硬件实现方法。

扎实掌握并运用课题相关的学科理论知识,根据实际电路尽量设计制作出完美的频率计,以实现理论与实践的统一。

 

1.2设计任务

设计一个能够测量周期性矩形波信号的频率、周期、脉宽、占空比的频率计。

该频率计上电或按键复位后能自动显示系统提示符“P.”,进入测量准备状态。

按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;

按占空比测量键则测量占空比。

1.3功能要求说明

该数字频率计频率以单片机最小系统为基础,采用独立式键盘及动态显示结构组成。

四个键(分别接于P1.0~P1.3)控制测量,按S2键(接P1.0)测频率、按S4键(接P1.1)测周期,按S6键(接P1.2)测脉宽,按S8键(接P1.3)测占空比。

1.4频率计课题设计的介绍及工作原理说明

本次设计主要分成两大方面:

硬件电路的设计和软件程序的设计。

硬件电路方面,采用单片机最小系统,便可实现课题要求。

程序的设计方面,本人采用C语言编写程序。

其整体框图如图1所示。

频率计工作原理:

此数字频率计是利用单片机的P3.5(T1)引脚作为被测矩形波信号输入端,且单片机晶振FOSC=12MHZ,当S2键被按下时,此时测的是频率,被测矩形波信号从P3.5进入单片机,同时启动定时器T0和计数器T1,T1是工作在计数状态下,对输入的频率信号进行计数,工作在计数状态下的T1的最大计数值为FOSC/24,由于FOSC=12MHz,则:

T1的最大计数频率为500KHz,T0是工作在定时状态下,每定时1秒,就停止T1的计数,而从T1的计数单元中读取的计数值在进行数据处理后,送到LCD数码显示管显示出来,因为T0工作在定时状态下的最大定时时间为65ms,达不到1秒的定时,所以采用50ms,共定时20次。

当S4键被按下时,此时测的是周期;当被测矩形波信号输入到P3.5口为高电平时,启动T0对其计数测出为高电平时的一个计数值,记录计数值,当被测矩形波信号输入到P3.5口为低电平时,启动T0对其计数测出为低电平时的一个计数值,记录计数值。

两个计数值的和则为被测信号的周期;当S6键被按下时,此时测的是脉宽,被测矩形波信号输入到P3.5后,测量电路在检测到脉冲的上升沿时打开定时器,在下降沿时关掉定时器,当P3.5由高电平变为低电平,定时器停止,读出定时器的值,这样通过对单片机自身的周期的计数,便得到了脉宽;当S8键被按下时,此时测的是占空比,可直接用测量得到的脉宽U比上周期T,即H=U/T,便得到了占空比。

1.5数字频率计总体设计方案

此方案主要以单片机为核心,利用单片机的计数、定时功能来实现频率的计数并且利用单片机的动态扫描法把测出的数据送到数字显示电路显示。

其原理框图如图1所示:

图1单片机原理框图

此方案主要以单片机为核心,利用单片机的计数器和定时器的功能对被测信号进行计数。

编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。

此方案的核心是数字频率计设计是采用以AT89S52为核心,辅以独立式键盘、数码管显示、复位电路,使得数字频率计具有清零、返回、复位等功能。

实现了智能化运行,高效设计,方便快捷,运行平稳、可靠,易于维护,相关配备功能齐全。

整体系统结构简明、使用芯片较少、控制、实现精度高。

同时,尽量减小了PCB版所占用的面积大小;使用的元器件少,成本、消耗低;原理电路简单,调试简单只要改变程序的设定值则可以实现不同频率范围的测试能自动选择测试的量程。

 

2硬件系统的设计

2.1硬件系统总体设计

该设计主要介绍系统中单片机AT89S52外围电路重要模块的功能和电路原理图分析。

并对电路中的核心器件进行必要的说明。

2.2硬件系统各模块功能简要介绍

2.2.1数码管电路

数码管电路采用了两个4位一体共阳数码管,P0口接为段控口,电阻的作用是限流,P2口为位控口控制三极管通和断,当其为低电平时三极管接通,相应的数码管显示。

图2数码管电路

如图2所示数码管电路采用了两个4位一体共阳数码管,P0口接为段控口,电阻的作用是限流,P2口为位控口控制三极管通和断,当其为低电平时三极管接通,相应的数码管显示。

2.2.2独立键盘电路

如图3,独立键盘电路采用按键低电平有效。

键盘电路的作用是给单片机系统提供输入信号。

通过外部按键使单片机接收信号,课程设计采用独立式键盘,主要由8个独立键盘组成,按键的一端并接在一起接地。

按键S2、S4、S6、S8,用来分别测量输入信号的频率、周期、脉宽、占空比。

当没按下键时,端口输入为高电平,当按下键时,端口输入为低电平。

图3独立键盘电路

2.2.3复位电路

图4复位电路

如图4,复位电路时单片机的硬件初始化操作。

经复位操作后,单片机才能开始正常工作。

它通过RST引脚送入单片机,进行复位操作,产生复位信号。

复位电路的好坏直接影响单片机系统工作的可靠性,而单片机的复位电路共有上电复位、按键复位和脉冲复位3种,在本次设计中采用按键复位,复位电路采用手动复位的方式,利用一个电容电压的不可突变性使得复位信号能够维持2个周期的高电平。

2.2.4晶振电路

图5晶振电路

如图5,AT89S52内部含有一个振荡器,可以作为CPU的时钟源,也可以由外部振荡器输入时钟信号,作为CPU的时钟源。

高频率的时钟有利于程序更快的运行,也可以实现更高的信号采样率,从而实现更多的功能。

但是对系统要求较高,而且功耗大,运行环境苛刻。

考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。

合适的频率的晶振对于选频信号强度准确度都有好处,这里采用大便是晶振频率FOSC=12MHz.

2.2.5电源电路

图6电源电路

如图6,采用USB供电,用于接通+5V电源。

 

2.2.6下载口电路

图7下载口电路

如图7所示,由于AT89S52支持flash在线写入、擦除,所以下载电路是必不可少的部分。

由下载口进行单片机与电脑的连接。

并有下载电路产生电源提供给单片机工作。

主要是USB下载口(ISP)构成,1脚接P1.5;3脚接RET;4脚接P1.7;5脚接P1.6;10脚接VCC,6、7、8、9脚接GND;。

通过下载口实现计算机与单片机的通信。

 

2.2.7AT89S52芯片

图8AT89S52芯片

如图8,主控制器采用AT89S52,是ATMEL公司生产的一款性能稳定的8位单片机。

AT89S52具有1个8KB的Flash程序存储器,1个256字节的RAM,4个8位的双向可位寻址I/O端口,看门狗定时器,2个数据指针,3个16位的定时/计数器及一个串行口和1个6向量二级中断结构,全双工串行口,片内晶体振荡器及时钟电路。

 

3软件系统的设计

3.1使用单片机资源的情况

内部RAM:

20H单元存键码;40H--47H单元为显示频率、脉宽、占空比的缓冲区;21H--24H、60H和66H为间接存数区;SP指向70H单元;使用了通用寄存器区的第0组和第2组通用寄存器组;使用了专用寄存器区中的A、IE、P0、P2、P3,其中P0口为段控口,P2口为位控口,P3.5口作为待测频率、周期、脉宽、占空比信号的输入口。

3.2软件系统各模块功能简要介绍

系统的软件模块框图如图9所示:

图9系统软件模块框图

各模块功能如下:

(1)主程序模块:

启动显示“P.”,等键按下。

(2)P.显示模块:

显示“P.”。

(3)键扫描模块:

判断按键是否按下且是哪一个键,然后执行相关程序。

(4)测周期程序模块:

测量被测矩形波信号的周期。

(5)测占空比程序模块:

测量被测矩形波信号的占空比。

(6)测脉宽程序模块:

测量被测矩形波信号的脉宽。

(7)测频率程序模块:

测量被测矩形波信号的频率。

(8)周期显示模块:

显示测得的周期。

(9)占空比显示模块:

显示测得的占空比。

(10)脉宽显示模块:

显示测得的脉宽。

(11)频率显示模块:

显示测得的频率。

(12)延时模块:

用于各位显示间的延时。

3.3设计原理简介

本次设计的重点是合理利用定时/计数器。

测量频率:

使用T0的计数功能,T1的计时功能,当它们同时工作时如计时时间为1S,则T0中计的数即为频率。

测量周期:

此处定义周期为信号两个相邻上升沿的时间差,因此定时器从第一个上升沿开始计时到第二个上升沿结束计时即可测得周期。

因为测量脉宽和占空比的原理和测量周期的一致,此处不再重复。

 

3.5软件系统流程图

图10主程序流程图

如图10所示,首先查询键值,判断是否有键按下,如果没有则等待,接着继续查询键值,判断是否有键按下,如果有键按下,则判断按键,若S2按下,就计频率;若S4按下,就计周期;若S6按下,就计脉宽;若S8按下,就计占空比,最后把计量值转化为十进制显示出来。

图11频率子程序流程图

如图11所示,首先,定时计数器初始化,接着判断按键是否按下,再将待测频率值用二进制频率转化为十进制数,最后显示出来。

图12周期子程序流程图

如图12所示,首先进行定时计数器初始化,接着判断P3.5口信号是否发生正跳变,如果是再接着判断信号是否为低电平,如果不是则继续判断信号是否发生正跳变;如果信号为低电平则把测得的周期化为十进制,最后显示出来。

图13测脉宽子程序流程图

如图13所示,测脉宽子程序流程图,信号为低电平则把测得的周期化为十进制显示测得脉宽。

 

图14键盘扫描子程序流程框图

如图14所示,键盘扫描子程序流程图,判断按键是否按下且是哪一个键,然后执行相关程序。

 

4设计误差分析及总结

4.1数字频率计的仿真

(1)当没有键按下时,运行仿真,数码管显示结果为:

图15数码管显示P.

(2)当输入信号频率为10Hz时,运行仿真,按下S2键,数码管显示结果为:

图16数码管显示频率

(3)当输入信号频率为10Hz时,运行仿真,按下S4键,数码管显示结果为:

图17数码管显示周期

(4)当输入信号频率为10Hz时,运行仿真,按下S6键,数码管显示结果为:

图18数码管显示占空比

(5)当输入信号频率为10Hz时,运行仿真,按下S8键,数码管显示结果为:

图19数码管显示脉宽

4.2频率计的使用说明

待测频率信号从P3.5口引入,待测周期信号和待测脉宽及占空比信号从P3.5口引入。

测量不同的待测信号之前要按复位键S1手动复位。

S2键测周期,S4键测频率,S6键测脉宽,S8键测占空比。

4.3数字频率计的误差分析

当被测矩形波的频率为1Hz时,所测得的频率为1Hz,误差为0;所测得的周期为999986us,误差为0.0014%;所测得的脉宽为499993um,误差为0.0014%;所测得的占空比为50%,误差为0。

当被测矩形波的频率为10Hz时,所测得的频率为10Hz,误差为0;所测得的周期为100008us,误差为0.008%;所测得的脉宽为50004um,误差为0.008%;所测得的占空比为50%,误差为0。

当被测矩形波的频率为100Hz时,所测得的频率为100Hz,误差为0;所测得的周期为10000us,误差为0;所测得的脉宽为5001um,误差为0.0002%;所测得的占空比为50.01%,误差为0.02%。

当被测矩形波的频率为1kHz时,所测得的频率为1001Hz,误差为0.1%;所测得的周期为1000us,误差为0;所测得的脉宽为499um,误差为0.2%;所测得的占空比为49.9%,误差为0.2%。

当被测矩形波的频率为50kHz时,所测得的频率为50009Hz,误差为0.018%;所测得的周期为20us,误差为0;所测得的脉宽为11um,误差为10%;所测得的占空比为55%,误差为10%。

当被测矩形波的频率为100kHz时,所测得的频率为100017Hz,误差为0.017%;所测得的周期为10us,误差为0;所测得的脉宽为5um,误差为0;所测得的占空比为50%,误差为0。

当被测矩形波的频率为500kHz时,所测得的频率为500065Hz,误差为0.0130%;所测得的周期为6us,误差为80%;所测得的脉宽为3um,误差为80%;所测得的占空比为50%,误差为0。

此数字频率计由于晶振系统与定时器中断程序的原因,使它们在周期中占了一部分,从而产生了误差,可以用调节延时程序的初值来减小误差,但总的来说,所测频率越大,误差也会越大。

4.4设计总结

基于单片机的频率计的设计涉及到计算机的硬软件知识,通过对系统的设计和调试,本次设计主要完成了以下工作:

提出基于单片机的数字频率计设计的基本方案;完成了硬件电路设计和软件电路的设计;编译了频率计的控制程序、数码转化程序、数据显示程序等系统软件程序;对硬件电路进行了误差分析。

通过本次课程设计,使我更加熟悉了单片机最小系统,在设计的过程中,难点首先是程序的编写,这使我不得不把教材完整的看一遍。

然后是求余程序的编写,移位相减解决了这个问题。

再次是对频率连续可测量并使显示不间断,在延时程序中调用显示程序使这个问题得到了解决。

其实设计程序中最主要的问题就是程序的循环了,这就要有清晰的思路,课程设计本身就是一个发现问题解决问题的平台,只是这一次我利用这个平台发现了一些显而易见的问题,本次设计暴露的我课本知识掌握不牢的缺点,今后应当注意改正。

 

结束语

基于单片机的频率计的设计涉及到计算机的硬软件知识,通过对系统的设计和调试,本次设计主要完成了以下工作:

提出基于单片机的数字频率计设计的基本方案;完成了相应的硬件电路设计及仿真;编译了数字式频率计的控制程序、数码转化程序、数据显示程序等系统软件程序;对硬件电路进行了仿真,进行了误差分析。

我更加地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握C语言的设计和调试方法。

对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的。

 

致谢

感谢学院和凌老师对我的培养,给我这个自己动手的机会和空间。

经过一段时间,终于在完成了设计,对自己的能力有了很大的提升。

在此我要感谢每一个帮助过我的人。

首先,我要感谢的是我的指导老师凌老师,在百忙之中抽出时间为我的设计指点,提供帮助,他的优良作风和严谨的教学研究精神是我永远学习的榜样。

其次我要感谢我的同学,在我最困难的时候伸出援助之手,用他们的智慧帮我解决各个难题。

总而言之,感谢每一位关心过我的人,他们今天对我的付出,成为我将来工作的动力!

 

参考文献

[1]马忠梅.单片机的C语言Windows环境编程宝典[M],北京:

北京航空航天

大学出版社,2003.6  

[2]李光飞.单片机C程序设计指导[M],北京:

北京航空航天大学出版社,2003.1

[3]李光飞.单片机课程设计实例指导[M],北京:

北京航空航天大学出版社,2004.9

[4]刘可文.数字电子电路与逻辑设计[M].第四版.高等教育出版社出版社,2006.5

[5]林涛.数字电子技术基础[M].清华大学出版社,2006.4

[6]康光华.电子技术基础.数字部分[M].第四版.高等教育出版社,2000.7

[7]李哲英.电子技术及其应用基础[M].高等教育出版社电子,2003.8

[8]杜刚,高军,童宁宁.基于AT892051单片机的频率计设计[J],2004.7 

[9]李广弟,朱月秀,冷祖祁编著.第三版.北京:

北京航空航天大学出版社,2007.6

[10]周坚,崔肖娜.单片机轻松入门[M].北京:

北京航空航天大学出版社,2005.9

[11]定时/计算器的基本结构及工作原理[S].中山单片机学习网,2006.5

[12]司佑全.基于单片机的数字频率计设计[N].湖北师范学院学报(自然科学

报),2005.3

 

附录

附录APCB图和元器件布局图

图A1顶层图

图A2接线图

图A3元器件布局图

附录B元件清单

表3材料清单

元件名称

元件参数

数量

电容

33pF

2

电容

22μF

2

发光二极管

9

下载口

1

排阻

10KΩ

4

排阻

4.7KΩ

1

引线

2

六角开关

1

按键

10

AT89S52

1

数码管

4位共阳极

2

电阻

1K

4

电阻

200Ω

1

电阻

470Ω

8

排针

75

40引脚座子

1

20引脚座子

1

PCB板

1

USB接口

1

蜂鸣器

1

短路块

3

晶振

12MHz

1

 

附录C软件系统程序

/********************************************************************

程序名:

频率计程序

编写者:

尹华文

指导老师:

凌云

时间:

2016.12

班级:

电气1405班

功能:

频率计测试频率,周期,脉宽,占空比

型号:

AT89S52使用晶振为12MHz

#include"reg52.h"

#include

/*共阳数码管字型码*/

charcodedis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,

0xff,0x8e,0x86,0xa1,0xc6};/*0,1,2,3,4,5,6,7,8,9,p.,灭,f,e,d,c*/

chardatafind_code[8]={11,11,11,11,11,11,11,10};/*P.显示*/

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

ulongl,mk,zk;

sbitP3_5=P3^5;/*外部被测信号*/

uchara,m;

/********************************************************/

//函数名:

voidDelayX1ms(uintcount)

//功能:

延时时间为1ms

//调用函数:

//输入参数:

count,1ms计数

//输出参数:

//说明:

总共延时时间为1ms乘以count,crystal=12Mhz

/********************************************************/

voidDelayX1ms(uintcount)

{

uintj;

while(count--!

=0)

{

for(j=0;j<80;j++)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

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

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