好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数字频率计51单片机.doc

20页
  • 卖家[上传人]:新**
  • 文档编号:503038666
  • 上传时间:2023-01-19
  • 文档格式:DOC
  • 文档大小:623.50KB
  • / 20 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • word自动化与电子工程学院单片机课程设计报告课程名称:单片机原理与应用学院:自动化与电子工程院专业班级:学生某某:完成时间:报告成绩:评阅意见: 评阅教师 日期 目 录第1章 数字频率计概述11频率计的根本原理12第2章课程设计方案设计2233第3章硬件设计44第4章软件设计557第5章课程设计总结7参考文献8附录Ⅰ 仿真截图9附录Ⅱ 程序清单15第1章 数字频率计概述数字频率计又称为数字频率计数器,是一种专门对被测信号频率进展测量的电子测量仪器,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器它是一种用十进制数字显示被测信号频率的数字测量仪器它的根本功能是测量方波信号与其他各种单位时间内变化的物理量本数字频率计将采用定时、计数的方法测量频率,采用6个数码管显示6位十进制数测量X围从10Hz—Hz,精度为1%,用单片机实现自动测量功能根本设计原理是直接用十进制数字显示被测信号频率的一种测量装置它以测量频率的方法对方波的频率进展自动的测量频率计的根本原理数字频率计最根本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,如此被测信号的频率f=N/T〔如下列图〕。

      图1.1 频率测量原理频率的测量实际上就是在1s时间内对信号进展计数,计数值就是信号频率用单片机设计频率计通常采用的方法是使用单片机自带的计数器对输入脉冲进展计数;好处是设计出的频率计系统结构和程序编写简单,本钱低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的AT89C51单片机,由于检测一个由“1〞到“0〞的跳变需要两个机器周期,前一个机器周期测出“1〞,后一个周期测出“0〞故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一根据频率检测的原理,很容易想到利用51单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,两者均应该工作在中断方式,一个中断用于1s时间的中断处理,一个中断用于对频率脉冲的计数溢出处理首先设置定时器T0为方式1,在被测脉冲信号INT0的下降沿进入外部中断函数,在中断函数中启动T0计数码,被测脉冲信号下降沿停止T0计数,脉宽测量过程见如下图:定时器T0以方式1对内部脉冲计数,16位计数值存放在40H〔高字节〕和41H单元第2章课程设计方案设计论述数字频率计是用于测量信号(方波,脉冲信号)的频率,并用十进制数字显示,它具有精度高,测量迅速,读数方便等优点。

      脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为f=N/T,其中,f为被测信号的频率,N为计数器所累计的脉冲个数T为产生N个脉冲所需的时间计数器所记录的结果,就是被测信号的频率如在1S内记录1000个脉冲,如此被测信号的频率为1000Hz 本实验课题仅讨论一种简单易制的数字频率计本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,可分为以下几个两个模块电路:单片机系统、数码管与显示电路各模块关系图如图2.1所示:图2.1 数字频率计系统框图本频率计的设计以AT89C51 单片机为核心,利用它内部的定时/ 计数器完成待测信号周期/ 频率的测量单片机AT89C51 内部具有2 个16 位定时/计数器,定时/ 计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能在构成为定时器时,每个机器周期加1〔使用12MHz 时钟时,每1us 加1〕,这样以机器周期为基准可以用来测量时间间隔在构成为计数器时,在相应的外部引脚发生从1 到0 的跳变时计数器加1 ,这样在计数闸门的控制下可以用来测量待测信号的频率外部输入每个机器周期被采样一次,这样检测一次从1 到0 的跳变至少需要2 个机器周期〔24 个振荡周期〕,所以最大计数速率为时钟频率的1/ 24 〔使用12MHz 时钟时,最大计数速率为500 KHz〕。

      定时/计数器的工作由相应的运行控制位TR 控制,当TR置1,定时/ 计数器开始计数;当TR 清0 ,停止计数第3章硬件设计AT89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供如下标准特征:4KB的程序存储器,128B的RAM,32条I/O线,2个16位定时器/计数器,2个外部中断源和1个串行口图3.1 单片机最小系统其引脚功能如下:⒈电源: ⑴ VCC -电源引脚,接+5V;⑵GND -接地端;⒉时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端⒊控制线:控制线共有4根, ⑴:地址锁存允许/片内EPROM编程脉冲 ① ALE功能:用来锁存P0口送出的低8位地址 ②功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲 ⑵ PSEN:外ROM读选通信号 ⑶ RESET:复位信号 ⑷:内外ROM选择/片内EPROM编程电源 ①功能:内外ROM选择端 ② Vpp功能:片内有EPROM的芯片,在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申请输入端P3.3 外部中断1申请输入端P3.4 T0 定时计数器0计数输入端P3.5 T1 定时计数器1计数输入端P3.6外部数据存储器写选通P3.7外部数据存储器读选通第4章软件设计系统软件设计采用模块化设计方法整个系统由初始化模块、显示模块和信号频率测量模块和脉冲测量模块组成() 上电后,进入系统初始化模块,系统软件开始运行在执行过程中,根据外界开关选择是频率测量模式还是脉冲宽度测量模式其中当闭合开关,蓝色指示灯亮时,表示是在单脉冲测量模式,打开开关,蓝色指示灯灭,表示是在频率测量模式假如模式选择错误,将会导致不能得到正确的测量结果具体程序流程见如下图:图4.1 主函数流程图图4.2频率测量流程图图4.3脉冲宽度测量流程图4.2程序清单程序详见附录Ⅱ第5章课程设计总结通过本次对数字频率计的设计使我对书本上的知识有了更进一步的了解,同时也使我感觉到,在实际运用中仅仅凭借书本上的的知识是远远不够的在设计中我遇到了一些困难,比如测量方法的选择上曾一度陷入困境,终于攻克了难题本次课程设计使我的分析能力和动手能力都有了很大的进步,激起了我对课程的更大兴趣。

      在电子技术中,频率是最根本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要频率计的根本原理是用一个频率稳定度高的频率源作为基准时钟,比照测量其他信号的频率通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒闸门时间也可以大于或小于一秒闸门时间越长,得到的频率值就越准确,但闸门时间越长如此没测一次频率的间隔就越长闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响本设计还有很多地方需要改良,其中包括对数据的处理,因为取模运算耗时过大 ,导致数码管在测量高频信号时出现闪烁所以应该优化算法,获得更好的显示效果参考文献[1]《单片机原理与应用》陈为,中国石油大学附录Ⅰ仿真截图开关打开,指示灯灭,表示此时为测量频率模式,调整方波频率,在数码管上得到测量值为520Hz开关打开,指示灯灭,表示此时为测量频率模式,调整方波频率,在数码管上得到测量值为21Hz经过放着可见,对频率的测量还是比拟准确的以下是对脉冲宽度测量的仿真截图双击脉冲发生器,会出现如下对话框设置脉冲格式,单脉冲,正脉冲,起始时间为1s后〔即开始仿真一秒后,脉冲自动产生〕,脉冲宽度设置为520us,点击OK保持开关闭合,模式指示灯亮,表示此时在脉冲测量方式下,点击仿真开始按钮,开始仿真,1s后,单片机接收到脉冲信号,并把结果显示到数码管上其默认单位为us,此时显示结果为576us附录Ⅱ 程序清单/*****************************************************************课题名称:单片机测输入方波脉冲频率和单脉冲宽度测量X围:外界输入频率在10KHz以内可以稳定显示,六位数码管默认单位为Hz 当测量X围过大时,因取模运算耗时大数码管会闪烁,但显示根本正确 单正脉冲测量X围可达100us--0.1s,六位数码管默认单位为us*****************************************************************/#include //包含51单片机存放器定义的头文件#define uchar unsigned char#define uint unsigned intlong n,num; //全局变量,n用来记录T1的中断次数,4000次后正好是一秒:num用来存放测脉冲宽度时T0的计数值sbit led=P2^6; //led亮时表示测量脉冲宽度状态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; //计数初值为零 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.