收藏 分享(赏)

数字频率计(51单片机).doc

上传人:精品资料 文档编号:8689876 上传时间:2019-07-07 格式:DOC 页数:20 大小:647.88KB
下载 相关 举报
数字频率计(51单片机).doc_第1页
第1页 / 共20页
数字频率计(51单片机).doc_第2页
第2页 / 共20页
数字频率计(51单片机).doc_第3页
第3页 / 共20页
数字频率计(51单片机).doc_第4页
第4页 / 共20页
数字频率计(51单片机).doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、青 岛 科 技 大 学 课青岛青岛青岛科技大圩 程 设 计 说 明 书 ( 论 文 )自动化与电子工程学院单片机课程设计报告课程名称:单片机原理与应用 学 院:自动化与电子工程院 专业班级: 学生姓名: 完成时间: 报告成绩: 评阅意见:评阅教师 日期 青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )目 录第 1 章 数字频率计概述 11.1 数字频率计概述 .11.2 数字频率计的基本原理 .11.3 单脉冲测量原理 .2第 2 章 课程设计方案设计 22.1 系统方案的总体论述 .22.2 系统硬件的总体设计 .32.3 处理方法 .3第 3 章 硬件设计 43.1 单片

2、机最小系统 .4第 4 章 软件设计 54.1 系统的软件流程图 .54.2 程序清单 .7第 5 章 课程设计总结 7参考文献 .8附录 仿真截图 9附录 程序清单 .15青 岛 科 技 大 学 课青岛青岛青岛科技大圩 程 设 计 说 明 书 ( 论 文 )第 1 章 数字频率计概述 1.1 数字频率计概述数字频率计又称为数字频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量方波信号及其他各种单位时间内变化的物理量。本数字频率计将采用定时、计数的方法测

3、量频率,采用 6 个数码管显示 6 位十进制数。测量范围从 10Hz5.5kHz,精度为 1%,用单片机实现自动测量功能。基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量频率的方法对方波的频率进行自动的测量。1.2 数字频率计的基本原理数字频率计最基本的工作原理为:当被测信号在特定时间段 T 内的周期个数为 N 时,则被测信号的频率 f=N/T(如图 1.1 所示) 。图 1.1 频 率 测 量 原 理频率的测量实际上就是在 1s 时间内对信号进行计数,计数值就是信号频率。用单片机设计频率计通常采用的办法是使用单片机自带的计数器对输入脉冲进行计数;好处是设计出的频率计系统

4、结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的 AT89C51 单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0” 。故输入时钟信号的最高频率不得超过单片机晶振频率的二青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )十四分之一。根据频率检测的原理,很容易想到利用 51 单片机的 T0、T1 两个定时/计数器,一个用来定时,另一个用来计数,两者均应该工作在中断方式,一个中

5、断用于 1s 时间的中断处理,一个中断用于对频率脉冲的计数溢出处理。1.3 单脉冲测量原理首先设置定时器 T0 为方式 1,在被测脉冲信号 INT0 的下降沿进入外部中断函数,在中断函数中启动 T0 计数码,被测脉冲信号下降沿停止 T0 计数,脉宽测量过程见下图:定时器 T0 以方式 1 对内部脉冲计数,16 位计数值存放在 40H(高字节)和 41H 单元第 2 章 课程设计方案设计2.1 系统方案的总体论述数字频率计是用于测量信号(方波,脉冲信号)的频率,并用十进制数字显示,它具有精度高,测量迅速,读数方便等优点。脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为 fNT,其中,f

6、 为被测信号的频率,N 为计数器所累计的脉冲个数。T 为产生 N 个脉冲所需的时间。计数器所记录的结果,就是被测信号的频率。如在 1S 内记录 1000 个脉冲,则被测信号的频率为 1000Hz。本实验课题仅讨论一种简单易制的数字频率计。青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )2.2 系统硬件的总体设计本频率计的数据采集系统主要元器件是单片机 AT89C51,由它完成对待测信号频率的计数和结果显示等功能,可分为以下几个两个模块电路:单片机系统、数码管及显示电路。各模块关系图如图 2.1 所示:图 2.1 数 字 频 率 计 系 统 框 图2.3 处理方法本频率计的设计

7、以AT89C51 单片机为核心,利用它内部的定时/ 计数器完成待测信号周期/ 频率的测量。单片机AT89C51 内部具有2 个16 位定时/计数器,定时/ 计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能。在构成为定时器时,每个机器周期加1(使用12MHz 时钟时,每1us 加1) ,这样以机器周期为基准可以用来测量时间间隔。在构成为计数器时,在相应的外部引脚发生从1 到0 的跳变时计数器加1 ,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入每个机器周期被采样一次,这样检测一次从1 到0 的跳变至少需要2 个机器周期(24 个振荡周期) ,所以最大计数速率为时钟频

8、率的1/ 24 (使用12MHz 时钟时,最大计数速率为500 KHz) 。定时/计数器的工作由相应的运行控制位TR 控制,当TR置1,定时/ 计数器开始计数;当TR 清0 ,停止计数。青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )第 3 章 硬件设计3.1 单片机最小系统AT89C51 是一种高性能低功耗的采用 CMOS 工艺制造的 8 位微控制器,它提供下列标准特征:4KB 的程序存储器,128B 的 RAM,32 条 I/O 线,2 个 16 位定时器/计数器,2 个外部中断源和 1 个串行口。图 3.1 单 片 机 最 小 系 统其引脚功能如下:电源: VCC -电

9、源引脚,接+5V; GND -接地端;时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。控制线:控制线共有 4 根, :地址锁存允许/片内 EPROM 编程脉冲 PROG/ALE青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 ) ALE 功能:用来锁存 P0 口送出的低 8 位地址 功能:片内有 EPROM 的芯片,在 EPROM 编程期间,此引脚输入编程脉冲。PROG PSEN:外 ROM 读选通信号。 RESET:复位信号。 :内外 ROM 选择/片内 EPROM 编程电源。 Vp/EA 功能:内外 ROM 选择端。 Vpp 功能:片内有 EPROM 的芯片

10、,在 EPROM 编程期间,施加编程电源 Vpp。 I/O 线 89C51 共有 4 个 8 位并行 I/O 端口:P0、P1、P2、P3 口,共 32 个引脚。P3 口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线) 。5.P3 口第二功能 P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 外部中断 0 申请输入端INTP3.3 外部中断 1 申请输入端P3.4 T0 定时计数器 0 计数输入端P3.5 T1 定时计数器 1 计数输入端P3.6 外部数据存储器写选通WRP3.7 外部数据存储器读选通D第 4 章 软件设计4.1 系统的软件流程图系统软件设计采用模块

11、化设计方法。整个系统由初始化模块、显示模块和信号频率测量模块和脉冲测量模块组成(见图4.1) 。上电后,进入系统初始化模块,系统软件开始运行。在执行过程中,根据外界开关选择是频率测量模式还是脉冲宽度测量模式。其中当闭青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )合开关,蓝色指示灯亮时,表示是在单脉冲测量模式,打开开关,蓝色指示灯灭,表示是在频率测量模式。若模式选择错误,将会导致不能得到正确的测量结果。具体程序流程见下图:图 4.1 主 函 数 流 程 图青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )图 4.2频 率 测 量 流 程 图图 4.3脉 冲 宽

12、 度 测 量 流 程 图4.2 程序清单程序详见附录。第 5 章 课程设计总结通过本次对数字频率计的设计使我对书本上的知识有了更进一步的了解,同时也使我感觉到,在实际运用中仅仅凭借书本上的的知识是远远不够的。在设计中我遇到了一些困难,比如测量方法的选择上曾一度陷入困境,终于攻克了难题。本次课程设计使我的分析能力和动手能力都有了很大的进步,激起了我对课程的更大兴趣。在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。频率计的基本原理是用一个频率青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )稳定度高的频率源

13、作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为 1 秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则没测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。本设计还有很多地方需要改进,其中包括对数据的处理,因为取模运算耗时过大 ,导致数码管在测量高频信号时出现闪烁。所以应该优化算法,获得更好的显示效果。参考文献1单片机原理及应用陈为,中国石油大学出版社青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )附录 仿真截图开关打开,指示灯灭,表示此时为测量频率模式,

14、调整方波频率,在数码管上得到测量值为 520Hz青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )开关打开,指示灯灭,表示此时为测量频率模式,调整方波频率,在数码管上得到测量值为 21Hz经过放着可见,对频率的测量还是比较准确的青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )以下是对脉冲宽度测量的仿真截图双击脉冲发生器 ,会出现如下对话框设置脉冲格式,单脉冲,正脉冲,起始时间为 1s 后(即开始仿真一秒后,脉冲自动产生) ,脉冲宽度设置为 520us,点击 OK青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )青 岛 科 技 大 学 课 程 设

15、 计 说 明 书 ( 论 文 )保持开关闭合,模式指示灯亮,表示此时在脉冲测量方式下,点击仿真开始按钮,开始仿真,1s 后,单片机接收到脉冲信号,并把结果显示到数码管上其默认单位为 us,此时显示结果为 576us青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )修改脉冲宽度为 0.1s(要求测量范围的上限),仿真结果如下,此时数码管显示为 100000us,即 0.1s青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )附录 程序清单/*课题名称:单片机测输入方波脉冲频率和单脉冲宽度测量范围:外界输入频率在 10KHz 以内可以稳定显示,六位数码管默认单位为 H

16、z当测量范围过大时,因取模运算耗时大数码管会闪烁,但显示基本正确单正脉冲测量范围可达 100us-0.1s,六位数码管默认单位为 us*/#include /包含 51 单片机寄存器定义的头文件#define uchar unsigned char#define uint unsigned intlong n,num; /全局变量, n 用来记录 T1 的中断次数,4000 次后正好是一秒:num 用来存放测脉冲宽度时T0 的计数值sbit u=P32; /将 u 位定义为 P3.2sbit L=P27; /将 L 位定义为 P2.7 sbit led=P26; /led 亮时表示测量脉冲宽度

17、状态uchar a,b,c,d,e,f; /六位数码管uchar code t=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /段码/*函数功能:延时子函数*/void delay(uint z) uint i,j;for(i=0;iT1,定时方式二, 8 位自动重装;T0,计数,方式 1 TH0=0; /计数初值为零 TL0=0; 青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )TH1=6; /定时 250us TL1=6;TR1=1; /开 T1 定时 TR0=1; /开 T0 计数 ET0=1; /允许 TO 中断

18、 ET1=1; /允许 T1 中断 EA=1; /开总中断 /*函数功能:显示子函数*/void display() /显示P2=0xfe; /最右端一位数码管P0=tf; /送段码delay(1); /延时P0=0; /熄灭P2=0xfd; /右端数第二位P0=te; /送段码delay(1); /延时P0=0; /熄灭P2=0xfb; /右端数第三位P0=td; /送段码delay(1); /延时P0=0; /熄灭P2=0xf7; /右端数第三位P0=tc; /送段码delay(1); /延时P0=0; /熄灭P2=0xef; /右端数第三位P0=tb; /送段码delay(1); /延时

19、P0=0; /熄灭P2=0xdf; /右端数第三位P0=ta; /送段码delay(1); /延时P0=0; /熄灭 /*函数功能:定时器 T0 中断,定时 1s*/void t1(void) interrupt 3 /定时器 T1 中断, 青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 ) n+; /记录中断次数,4000 次正好 1sif(n=4000) /一秒时间到,读计数器的 T0 的值 n=0; /清零EA=0; /关中断TR1=0; /关 T1 定时 TR0=0; /关 T0 计数 num=(long)TH0*256+TL0; /取计数值 TL0=0; /计数清零T

20、H0=0; /计数清零a=num/100000; /对计数值取模,显示用b=num/10000%10;c=num/1000%10;d=num/100%10;e=num/10%10;f=num%10;TR1=1; /开 T1 定时 TR0=1; /开 T0 计数 EA=1; /重开 /*函数功能:测脉冲宽度的子函数*/void maikuan(void) TMOD=0x01; /TMOD=0001H,使用计数器 T0 的模式 1EA=1; /开放总中断EX0=1; /允许使用外中断IT0=0; /选择负跳变来触发外中断TH0=0; /定时器 T0 赋初值 0TL0=0; /定时器 T0 赋初值

21、0while(L=0) display();/无限循环, 不停调用显示子函数/*函数功能:外中断 0 的中断服务程序*/void int0(void) interrupt 0 /外中断 0 的中断编号为 0青 岛 科 技 大 学 课 程 设 计 说 明 书 ( 论 文 )TR0=1; /外中断一到来,即启动 T0 计时while(u=0); / P32 为低电平时 T0 一直计数TR0=0; /P32 为高电平时关闭 T0 num=(long)TH0*256+TL0)+31; /取计数值TL0=0; /计数清零TH0=0; /计数清零if(TF0=1)/如果计数器有溢出,需要 加上溢出前的计数

22、值 65535TF0=0;num=num+65536; /计数器没有溢出,直接对计数值处理a=num/100000;b=num%100000/10000;c=num%100000%10000/1000;d=num%100000%10000%1000/100;e=num%100000%10000%1000%100/10;f=num%100000%10000%1000%100%10;/*函数功能:测频率的子函数*/void pinlv()init(); /初始化while(L=1)display();/*函数功能:主函数*/void main(void)while(1) /主循环if(L=1) /判断是计频率还是测脉冲宽度pinlv();elsemaikuan();

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报