数字频率计(51单片机)
单片机C51数字频率计程序
单片机C51数字频率计程序**//头文件部分,文件名:plj.h/**************************************************#include<reg52.h>#include<absacc.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charextern const uchar NoDisp=0; //无显示extern const uchar NoCur=1; //有显示无光标extern const uchar CurNoFlash=2; //有光标但不闪烁extern const uchar CurFlash=3; //有光标且闪烁extern void LcdPos(uchar,uchar); //确定光标位置extern void LcdWd(uchar); //写字符extern void LcdWc(uchar); //送控制字(检测忙信号)extern void LcdWcn(uchar ); //送控制字子程序(不检测忙信号)extern void mDelay(uchar ); //延时,毫秒数由j决定extern void WaitIdle(void); //正常读写操作之前检测LCD控制器状态extern void RstLcd(void); //复位LCD控制器extern void WriteChar(uchar c,uchar xPos,uchar yPos);//在指定的行与列显示指定的字符,xpos:行,ypos:列,c:待显示字符extern void WriteString(uchar *s,uchar xPos,uchar yPos);extern void SetCur(uchar Para); //设置光标extern void ClrLcd(void); //清屏命令extern void WaitIdle(void); // 正常读写操作之前检测LCD控制器状态extern void mDelay(uchar j);/**************************************************/**************************************************//液晶1602子程序,文件名:1602.c/**************************************************;连线图:; DB0---DPROT.0 DB4---DPROT.4 RS-------------P3.5 ; DB1---DPROT.1 DB5---DPROT.5 RW-------------P3.6 ; DB2---DPROT.2 DB6---DPROT.6 E--------------P3.7 ; DB3---DPROT.3 DB7---DPROT.7 VLCD接10K可调电阻到GND*; 需要11根单片机口线;80C51的晶振频率为12MHz;液晶显示程序;**************************************************/#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit RS = P3^5;sbit RW = P3^6;sbit EN = P3^7;#define DPORT P1void LcdPos(uchar,uchar); //确定光标位置void LcdWd(uchar); //写字符void LcdWc(uchar); //送控制字(检测忙信号)void LcdWcn(uchar ); //送控制字子程序(不检测忙信号)void mDelay(uchar ); //延时,毫秒数由j决定void WaitIdle(); //正常读写操作之前检测LCD控制器状态//在指定的行与列显示指定的字符,xpos:行,ypos:列,c:待显示字符void WriteChar(uchar c,uchar xPos,uchar yPos){LcdPos(xPos,yPos);LcdWd(c);}void WriteString(uchar *s,uchar xPos,uchar yPos){ uchar i;if(*s==0) //遇到字符串结束return;for(i=0;;i++){if(*(s+i)==0)break;WriteChar(*(s+i),xPos,yPos);xPos++;if(xPos>=15) //如果XPOS中的值未到15(可显示的最多位)break;}}void SetCur(uchar Para) //设置光标{ mDelay(2);switch(Para){ case 0:{ LcdWc(0x08); //关显示break;}{ LcdWc(0x0c); //开显示但无光标break;}case 2:{ LcdWc(0x0e); //开显示有光标但不闪烁break;}case 3:{ LcdWc(0x0f); //开显示有光标且闪烁break;}default:break;}}void ClrLcd() //清屏命令{ LcdWc(0x01);}// 正常读写操作之前检测LCD控制器状态void WaitIdle(){ uchar tmp;RS=0;RW=1;EN=1;_nop_();for(;;){ tmp=DPORT;tmp&=0x80;if( tmp==0)}EN=0;}void LcdWd(uchar c) //写字符子程序{ WaitIdle();RS=1;RW=0;DPORT=c; //将待写数据送到数据端口EN=1;_nop_();_nop_();EN=0;}void LcdWc(uchar c) //送控制字子程序(检测忙信号){ WaitIdle();LcdWcn(c);}void LcdWcn(uchar c) //送控制字子程序(不检测忙信号){ RS=0;RW=0;DPORT=c;EN=1;_nop_();EN=0;}void LcdPos(uchar xPos,uchar yPos) //设置第(xPos,yPos)个字符的DDRAM地址{ unsigned char tmp;xPos&=0x0f; //x位置范围是0~15yPos&=0x01; //y位置范围是0~1if(yPos==0) //显示第一行tmp=xPos;elsetmp=xPos+0x40;tmp|=0x80;LcdWc(tmp);}void RstLcd() //复位LCD控制器{ mDelay(15); //如果使用12M或以下晶振,此数值不必改,如用24M晶振,须用30LcdWc(0x38); //显示模式设置LcdWc(0x08); //显示关闭LcdWc(0x01); //显示清屏LcdWc(0x06); //显示光标移动位置LcdWc(0x0c); //显示开及光标设置}void mDelay(uchar j) //延时,毫秒数由j决定{ uint i=0;for(;j>0;j--){ for(i=0;i<124;i++){;}}}//主函数:/*===================================== ========================================= ====公司名称:河海大学电气工程学院 *模块名:AT89C52单片机系统,全国电子设计大赛 *创建人:南东亮日期:2007。
51单片机数字频率计的代码
51单片机数字频率计的代码标题: 用51单片机实现数字频率计功能的创作导言:数字频率计是一种常见的电子测量仪器,用于测量信号的频率。
本文将介绍如何使用51单片机实现数字频率计的功能,通过编写相关代码和接线,实现对信号频率的测量和显示。
一、引言数字频率计是一种电子测量仪器,用于测量信号的频率。
它通过将输入信号与计时器进行比较,并将计数结果转换为频率值。
在本项目中,我们将使用51单片机来实现这一功能。
二、硬件设计我们需要准备的硬件有:51单片机、晶体振荡器、LCD显示屏、按键开关和一些连接线。
首先,将晶体振荡器连接到单片机的相应引脚上,以提供系统时钟。
然后将LCD显示屏连接到单片机的I/O端口上,用于显示测量结果。
最后,连接按键开关到单片机的I/O端口上,用于启动和停止测量。
三、软件设计1. 初始化我们需要初始化单片机的计时器和LCD显示屏。
通过设置计时器的工作模式和计数方式,以及LCD的显示模式和位置,来确保测量和显示的准确性。
2. 信号测量接下来,我们需要编写代码来测量输入信号的频率。
通过将输入信号与计时器进行比较,并在每个计数周期结束时进行计数,来获取信号的周期时间。
然后,通过计算周期时间的倒数,即可得到信号的频率。
3. 结果显示将测量得到的频率值转换为字符形式,并通过LCD显示屏进行显示。
可以使用LCD库函数来实现字符显示的功能,通过将频率值转换为字符数组,并逐个显示在LCD屏幕上。
四、实验结果经过测试,我们成功实现了数字频率计的功能。
当输入信号稳定时,可以准确地测量并显示信号的频率。
通过按下按键开关,可以启动和停止频率测量。
结论:通过51单片机的编程和硬件设计,我们成功实现了数字频率计的功能。
该频率计可以准确地测量输入信号的频率,并通过LCD显示屏进行显示。
这个项目不仅加深了我们对单片机的理解,还提高了我们的编程能力。
希望这个项目能对读者有所帮助,激发对电子技术的兴趣和研究。
基于51单片机的数字频率计设计
基于51单片机的数字频率计一、实验内容1.1数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用四位LED数码管动态显示4位数。
测量范围从1Hz—10kHz的正弦波、方波、三角波。
用单片机实现自动测量功能。
1.2频率测量仪的设计思路与频率的计算频率测量仪的设计思路主要是:设置单片机T1为计数器模式,对输入信号进行计数,T0设置为定时器模式,定时时间为1秒,则计数器所计数值即为被测信号频率。
1.3 基本设计原理基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以在单位时间内对被测信号上升沿计数的方法对正弦波、方波、三角波的频率进行自动的测量。
如果被测信号频率超过量程,则有警报灯闪烁。
所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。
若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。
1.4 频率计性能参数设计量程:0-10KHz波形:方波输入信号电压:5V二、数字频率计的硬件结构设计2.1 系统硬件的构成本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有电源电路、复位电路、显示器,报警电路等器件,如下图所示:图一数字频率计功能模块2.2 AT89C51单片机引脚说明在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合数码管,发光二极管,按键开关构成控制及显示模块。
在试验中选用P1.2,P1.3,P1.4端口分别控制数据和时钟信号的输入实现频率的动态显示。
基于51单片机的频率计设计报告
基于51单片机的频率计设计报告
在该设计报告中,我将介绍基于51单片机的频率计的设计原理、硬件设计和软件设计。
设计原理:
频率计是一种用于测量信号频率的仪器。
基于51单片机的频率计的设计原理是利用单片机的定时计数器来测量输入信号的脉冲个数,然后将脉冲个数转换为频率。
硬件设计:
硬件设计主要包括输入信号的采集电路、计数电路和显示电路。
输入信号的采集电路使用一个比较简单的电路,包括一个电阻和一个电容,用于将输入信号转换为脉冲信号。
计数电路使用单片机的定时计数器来进行计数。
在这个设计中,我们使用TIMER0和TIMER1作为计数器,分别用于测量输入信号的高电平时间和低电平时间,然后将两个时间相加得到一个完整的周期,再根据周期反推频率。
显示电路使用一个LCD模块来显示测量得到的频率。
在这个设计中,我们使用IO口将计算得到的频率发送给LCD模块,通过LCD模块来显示频率。
软件设计:
软件设计主要包括信号采集、脉冲计数和频率计算。
信号采集主要通过定时器的中断来进行。
在采集到一个脉冲之后,中
断程序会使计数器加1
脉冲计数是通过对输入信号高电平时间和低电平时间计数来完成的。
在脉冲计数的过程中,我们需要启动TIMER0和TIMER1,并设置正确的工
作模式和计数值。
频率计算是通过将高电平时间和低电平时间相加得到一个完整的周期,然后再根据周期反推频率来完成的。
最后,将计算得到的频率发送给LCD
模块进行显示。
总结:。
数字频率计(51单片机)
自动化与电子工程学院单片机课程设计报告课程名称:单片机原理与应用学院:自动化与电子工程院专业班级:学生姓名:完成时间:报告成绩:评阅意见:评阅教师日期目录第1章数字频率计概述11.1数字频率计概述01.2数字频率计的基本原理01.3单脉冲测量原理1第2章课程设计方案设计12.1系统方案的总体论述12.2系统硬件的总体设计22.3处理方法2第3章硬件设计33.1单片机最小系统3第4章软件设计44.1系统的软件流程图44.2程序清单6第5章课程设计总结6参考文献7附录Ⅰ仿真截图8附录Ⅱ程序清单14第1章数字频率计概述1.1数字频率计概述数字频率计又称为数字频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量方波信号及其他各种单位时间内变化的物理量。
本数字频率计将采用定时、计数的方法测量频率,采用6个数码管显示6位十进制数。
测量范围从10Hz—5.5kHz,精度为1%,用单片机实现自动测量功能。
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量频率的方法对方波的频率进行自动的测量。
1.2数字频率计的基本原理数字频率计最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T(如图1.1所示)。
图1.1 频率测量原理频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。
用单片机设计频率计通常采用的办法是使用单片机自带的计数器对输入脉冲进行计数;好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。
缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的AT89C51单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。
基于51单片机的频率计的设计
基于51单片机的频率计的设计频率计是一种测量信号频率的仪器或装置,其原理是通过对信号进行计数和定时来测量信号的周期,并进而计算出信号的频率。
在本篇文章中,我们将设计一个基于51单片机的频率计。
设计方案:1.硬件设计:(1)时钟电路:使用11.0592MHz晶振为主频时钟源。
(2)信号输入:选择一个IO口作为信号输入口,通过外部电平转换电路将信号转换为51单片机能够处理的电平。
(3)显示装置:使用一个数码管或液晶显示屏来输出测量结果。
2.软件设计:(1)初始化:设置51单片机的工作模式、引脚功能、定时器等。
初始化时,将IO口配置为输入模式,用于接收外部信号。
(2)定时器设置:利用定时器来进行时间的测量,可以选择适当的定时器和计数器来实现定时功能。
(3)外部中断设置:使用外部中断来触发定时器,当外部信号边沿发生变化时,触发定时器的启动或停止。
(4)中断处理:通过中断处理程序来对定时器进行启动、停止和计数等操作。
(5)频率计算:将计数结果经过一定的处理和运算,计算出信号的频率。
(6)结果显示:将计算得到的频率结果通过数码管或液晶显示屏输出。
3.工作流程:(1)初始化设置:对51单片机进行初始化设置,包括端口、定时器、中断等的配置。
(2)外部信号输入:通过外部电平转换电路将要测量的信号输入至51单片机的IO口。
(3)定时测量:当外部信号发生边沿变化时,触发外部中断,启动定时器进行定时测量。
(4)停止计时:当下一个信号边沿出现时,中断处理程序停止定时器,并将计数结果保存。
(5)频率计算:根据定时器的设置和计数结果,计算出信号的周期和频率。
(6)结果显示:将计算得到的频率结果通过数码管或液晶显示屏进行显示。
4.注意事项:(1)确保信号输入的稳定性:外部信号输入前需要经过滤波处理,保证稳定且无杂波的输入信号。
(2)测量精度的提高:如有必要,可以通过增加定时器的位数或扩大计数范围来提高测量精度。
(3)显示结果的优化:可以根据需要,通过增加缓冲区、优化数码管显示等方式来改善结果的可读性。
基于51单片机的数字频率计
• 6、RESET/VPD(9脚):复位信号输入端/备用电源输入 端;
单片机执行程序都是从地址0000H开始的,所以在进入系 统时必须对CPU进行复位,有时候程序运行错误或操作错 误,系统会处于锁死的状态为了摆脱这样的状态也必须对 单片机进行复位。
复位的方法比较简单:只要在RESET脚上加一个持续时 间为24个振荡周期(两个机器周期)的高电平就可以了。
• 7、EA/VPP(31脚):内/外部ROM选择端; • 8、P0口(39-32脚):双向IO口P00-P07(P0口无上拉
电阻,作输出用需要接上拉电阻);
• 9、P1口(1-8脚):准双向通用IO口; • 10、P2口(21-28脚):准双向通用IO口; • 11、P3口(10-17脚):准双向通用IO口;
环境干扰等因素。经实际多次测试频率在 等于1000Hz的时候最大相对误差达到0.1%, 符合误差要求。
• 实物图
2.3 显示模块
• 2.3.1 LCD1602简介
LCD1602是一种专门用来显示字母、数字、 符号等的点阵型液晶模块,它由若干个5X7 或者5X11等点阵字符位组成,每个点阵字 符位都可以显示一个字符,每位之间有一 个点距的间隔,每行之间也有间隔,起到 了字符间距和行间距的作用。LCD1602是= 显示的内容为16X2,即可以显示两行,每 行16个字符液晶模块。
2.3.4 LCD1602地址
比如第二行第一个字符的地址是40H,那么是否直接 写入40H就可以将光标定位在第二行第一个字符的位置呢? 这样不行,因为写入显示地址时要求最高位D7恒定为高 电平1,所以实际写入的数据应该40H+80H=C0H
51单片机——数字频率计
频率计是我们经常会用到的实验仪器之一,本实验要使用单片机和计数电路及液晶器件来设计一个宽频的频率计。
期望达到10Hz-1.1G范围的频率精确测量。
实验电路图(初步方案)1) 计数及显示电路:2)前置放大及分频电路:设计思路频率的测量实际上就是在1S时间内对信号进行计数,计数值就是信号频率。
用单片机设计频率计通常采用两种办法,1)使用单片机自带的计数器对输入脉冲进行计数,或者测量信号的周期;2)单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。
由于单片机自带计数器输入时钟的频率通常只能是系统时钟频率的几分之一甚至几十分之一,因此采用单片机的计数器直接测量信号频率就受到了很大的限制。
本实验电路采用方式2,使用一片74LS393四位双二进制计数器和Atmega8的 T1计数器组成了24位计数器,最大计数值为16777215。
如果输入信号经过MB501分频器进行64分频后再进行测量,则固定1S时基下最高测量频率为1073.741760Mhz。
为了方便得到准确的1秒钟测量闸门信号,我们使用了Atmega8的异步实时时钟功能,采用32.768Khz的晶振由TC2产生1秒钟的定时信号。
测量原理:单片机打开测量闸门,即PB1输出高电平,同时TC2定时器启动。
74LS393开始对输入脉冲进行计数,74LS393每计数达256时,Atmega8的T1计数器也向上计数1次。
当1S定时到达时,单片机产生中断,PB1输出低电平关闭测量闸门,然后Atmega8读取74LS393和T1的计数值,然后送LCD显示。
实验进展2004-09-27根据设计思路编写程序初步获得了一些实验结果,如下图所示。
下图是测量8M有源晶振的输出结果。
由于1S的测量闸门时间在业余条件下不好测试,因此,实验程序中在LCD上同时显示实时时钟用于判断1S闸门时间的准确性。
实验中,我使用CDMA手机上显示的GPS卫星精确时间进行比较。
手机时间显示的最小单位是分钟,测量时一旦手机分钟值发生跳变,则立即记录下LCD显示的秒值,这样的话让频率计运行一段时间后,再多次记录下LCD显示的秒,就可以准确判断频率计的异步时钟是否准确。
基于51单片机数字频率计的设计
基于51单片机数字频率计的设计在电子技术领域中,频率计是一种常见的测试仪器,它可以用来测量信号的频率。
在本文中,我们将通过介绍基于51单片机数字频率计的设计实现来了解它的工作原理和设计流程。
1. 确定设计需求在进行任何项目之前,我们需要明确自己的设计需求。
对于频率计而言,它的主要需求就是准确地测量信号的频率。
因此,我们需要确定我们需要测量的频率范围和精确度。
2. 确定硬件设计在确定了设计需求之后,我们需要确定硬件设计。
对于数字频率计而言,它需要一个计数器来计算信号的脉冲数量。
在本设计中,我们采用74LS90计数器芯片来实现计数功能。
我们还需要一个51单片机来读取计数器的计数值,并将其转换为对应的频率值。
另外,我们还需要硬件板、LCD显示屏、按键等元件来搭建数字频率计的电路结构。
3. 确定软件设计硬件设计完成后,我们需要开发相应的软件来实现我们的需求。
在本设计中,我们使用KEIL C51软件来编写51单片机的程序。
编写软件的主要步骤是读取计数器计数值、计算出对应的频率值、将频率值显示在LCD屏幕上,并实现按键控制。
我们需要将这些步骤按照程序流程依次实现。
4. 进行测试在软件编写完成后,我们需要对数字频率计进行测试,以确保其满足我们的需求。
我们可以使用信号发生器给数字频率计输入不同频率的信号,然后观察LCD屏幕上显示出来的相应频率值是否准确。
如果测试结果不满足我们的需求,则需要对硬件或软件进行优化或调试,直到数字频率计能够正常工作为止。
总之,基于51单片机的数字频率计设计是一个较为简单的电子设计项目。
通过上述步骤的详细介绍,我们了解了数字频率计的设计流程和工作原理,并明确了设计中需要注意的细节和注意事项。
希望能够对大家理解数字频率计的设计过程有所帮助。
基于51单片机的数字频率计设计
基于51单片机的数字频率计一、设计说明1.数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。
测量范围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。
用单片机实现自动测量功能。
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
2.频率测量仪的设计思路与频率的计算频率测量仪的设计思路主要是:对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小,其原理如右图所示。
若被测量信号的周期为,分频数m1,分频后信号的周期为T,则:T=m1Tx。
由图可知:T=NTo(注:To为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率f。
)由于单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,所以由式T=NTo可知,频率测量的误差主要取决于N值的大小,N值越大,误差越小,测量的精度越高。
3.设计原理及系统分析基本设计原理:直接用十进制数字显示被测信号频率的一种测量装置。
它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。
其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。
时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,则门控电路的输出信号持续时间亦准确地等于1s。
51单片机数字频率计设计
摘要摘要数字频率计是一种基本的测量仪器。
它被广泛应用于航天、电子、测控等领域,还被应用在计算机及各种数学仪表中。
一般采用的是十进制数字,显示被测信号频率。
基本功能是测量正弦信号,方波信号以及其他各种单位时间内变坏的物理量。
由于其使用十进制数显示,测量迅速精确,显示直观,所以经常被用来使用。
本文主要介绍数字频率计的设计和调试,本作品是基于STC89C52单片机作为平台,基本原理是通过STC89C52单片机进行频率的采集和分析工作,在通过程序使其显示在LCD1602的液晶显示屏上,通过液晶显示屏,让使用者能够直观的看到当前的输入频率是多少。
由于STC89C52单片机只能处理数字信号因此系统需要先把信号放大成方波信号,再通过施密特触发器整形方波,又由于单片机能处理的频率有限,所以这次我们先用74HC390芯片对输入的信号进行了分频,使其降低了100倍,才送去给单片机处理,如果频率高于200KHZ的时候就计算分频后的频率,得到数据再换算成真实的频率。
关键字:单片机,LCD显示屏,分频器ABSTRACTABSTRACTDigital frequency meter is a basic measuring instruments. It is widely used in aerospace, electronics, measurement and control, etc., it is also used in computer and mathematical instrument. Generally using a decimal number, it displays the signal frequency. The basic function is to measure sinusoidal signal, square-wave signal, and various other units within the time deterioration of physical quantities. Due to the use of decimal display, rapid measurement precision, intuitive display, it is often used to use.This paper describes a digital frequency meter design and debugging, the present work is based STC89C52 microcontroller as a platform, the basic principle is the collection and analysis of the operating frequency through STC89C52 microcontroller, through the program to display on the LCD1602 LCD screen, the LCD display, allowing users to visually see the current input frequency is.Since only single-chip digital signal processing STC89C52 so the system need to put a square wave signal is amplified signal, and then through the Schmitt trigger shaping a square wave, but also due to the limited frequency microcontroll er can handle, so this time we will start with 74HC390 chip input The signal is a frequency, it reduces by 100 times, was sent to the microcontroller processing frequency if the frequency is higher than the frequency after 200KHZ when it calculated to obtain the data and then converted into real frequency.Keywords:microcontroller, LCD display, divider.目录第1章整体框架 (1)1.1课题任务 (1)1.2课题要求 (1)1.3研究意义 (1)第2章设计方案 (3)2.1硬件部分 (3)2.1.1主控模块 (3)2.1.2 LCD液晶显示器模块 (7)2.1.3主控模块的选型和论证 (9)2.1.4显示模块的选型和论证 (9)2.1.5放大电路的选型和论证 (10)2.2软件部分 (10)2.2.1软件工具介绍 (10)2.2.2模块流程图 (11)第3章实现功能 (13)3.1实现功能描述 (13)3.2电路设计 (13)3.2.1主控模块 (14)3.2.2 LCD液晶显示器 (14)3.2.3三极管放大电路设计 (15)3.2.4整形模块设计 (16)3.2.5分频模块设计 (17)3.3软件设计 (19)3.3.2系统软件总体设计 (20)第4章调试与实现 (22)4.1调试中遇到的重点与难点 (22)4.1.1硬件调试 (22)4.1.2软件调试 (22)4.2解决方案 (22)4.3实现展示(附上仿真图或实物照片) (23)第5章总结 (25)参考文献 (26)致谢 (27)附录 (28)第1章整体框架第1章整体框架1.1课题任务本系统设计制作一个基于单片机的频率计。
基于51单片机的数字频率计设计
毕业论文课题:基于单片机的数字频率计的设计摘要本方案主要以单片机为核心,主要分为时基电路,复位电路,显示电路三大部分,设计以单片机为核心,利用单片机的计数器和定时器的功能对被测信号进行计数。
编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
本设计以89C51单片机为核心,应用单片机的算术运算和控制功能并采用LED数码显示管将所测频率显示出来。
系统简单可靠、操作简易,能基本满足一般情况下的需要。
既保证了系统的测频精度,又使系统具有较好的实时性。
本频率计设计简洁,便于携带,扩展能力强,适用范围广。
[关键词]单片机,运算,频率计,LED数码管。
*******************************************************************************************************************************************专抠专欢迎**业抠为您的**代群大加入**做 2 学**毕 4 生**设 6 服** 3 务** 8 解** 2 决** 2 问** 3 题** ***********************************************************************************************************************************************AbstractThe program mainly microcontroller as the core, are divided into time-base circuit, the logic control circuit, amplifier shaping circuit, the gate circuit, the counting circuit, latch circuit, decoding circuit most of the seven shows, design a microcontroller as the core, the measured signal the first amplifier to amplify the incoming signal, and then was sent to the waveform shaping circuit surgery, the measured sine wave or triangle wave shaping as a square wave. Counter and timer microchip features of the signal count. Write the corresponding program can automatically adjust the measurement range of SCM, and the frequency of the measured data to the display circuit displays.The design of the89C51microcontroller core, microcontroller applications and control functions and arithmetic operations with LED digital display tube to the measured frequency is displayed. System is simple, reliable, easy to operate and can basically meet the general needs. Both to ensure the accuracy of the system frequency measurement, but also the system has good real-time. The frequency meter design is simple and easy to carry, expansion capability, wide application.[Key words] microcontroller, operation, frequency meter, LED digital tube。
数字频率计(51单片机)
数字频率计(51单片机)数字频率计(51单片机)数字频率计(Digital Frequency Counter)是一种常用的电子测量仪器,可用于测量信号的频率。
在本文中,我们将介绍如何使用51单片机实现一个简单的数字频率计。
一、原理简介数字频率计的基本原理是通过计算信号波形周期内的脉冲数来确定频率。
在实际应用中,我们通常使用51单片机作为微控制器,通过计数器和定时器模块来实现频率计算。
二、硬件设计1.信号输入首先,我们需要将待测信号输入到频率计中。
可以使用一个输入接口电路,将信号连接到51单片机的IO口上。
2.计时模块我们需要使用51单片机的定时器/计数器来进行计时操作。
在这里,我们选择使用定时器0来进行计数,同时可以利用定时器1来进行溢出次数的计数,以扩展计数范围。
3.显示模块为了显示测量结果,我们可以使用数码管、LCD液晶显示屏等显示模块。
通过将结果以可视化的方式呈现,方便用户进行观察和读数。
三、软件设计1.定时器配置首先,我们需要对定时器进行配置,以确定计时器的计数间隔。
通过设置定时器的工作模式、计数范围和时钟频率等参数,可以控制定时器的计数精度和溢出时间。
2.中断服务程序当定时器溢出时,会触发中断,通过编写中断服务程序,实现对计数器的相应操作,例如将计数值累加,记录溢出次数等。
3.数字频率计算根据计数器的值和溢出次数,我们可以计算出信号的频率。
通过简单的公式计算,即可得到测量结果。
四、实验步骤1.搭建硬件电路,将待测信号连接到51单片机的IO口上,并连接显示模块。
2.根据硬件设计要求,配置定时器的工作模式和计数范围。
3.编写中断服务程序,实现对计数器的相应操作。
4.编写主程序,实现数字频率计算和显示。
5.下载程序到51单片机,进行测试。
五、实验结果与分析通过实验,我们可以得到信号的频率测量结果,并将结果以数码管或LCD屏幕的形式进行显示。
通过对比实际频率和测量频率,可以评估数字频率计的准确性和稳定性。
基于51单片机数字频率计的设计与开发
摘要在电子技术中,频率是最大体的参数之一,而且与许多电参量的测量方案、测量结果都有十分紧密的关系,因此频率的测量就显得更为重要。
测量频率的方式有多种,其中电子计数器测量频率具有精度高、利用方便、测量迅速,和便于实现测量进程自动化等优势,是频率测量的重要手腕之一。
电子计数器测频有两种方式:一是直接测频法,即在必然闸门时刻内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。
本文论述了基于通用集成电路设计了一个简单的数字频率计的进程。
关键词:频率,信号,周期AbstractIn electronic technology,the frequency is the most basic one of the parameters,andwith a number of electrical parameters of the measurement program,measurement more important,There are several ways of mesuring frequency,in which electronic counter the frequency with high precision,easy to use ,quick measurements,and is easy to realize the advatages of automaion of measurement process is an important means of frequency Counter Frequency Measurement There are two ways:First,the directfrequency measurement method,thatis,the gate in a certain period of time measured the number of measured signal pulse;2is indirect frequency measurement method,such as cycle frequency measurement frequency measurement method for high-frequency signals offrequency measurement,indirect frequency measurement method for low-frequency signald of frequency this paper,based on a commom integrated circuit design of a simple digital frequency meter process.Key words:frequency,signal,period目录摘要 (Ⅰ)一、引言(一)数字频率计概述 (1)(二)问题提出 (1)(三)设计思想 (1)二、方案论证与比较(一)方案选择 (2)一、整体方案比较 (2)二、测频方案比较 (2)(二)测频原理 (2)三、数字频率计设计(一)数字频率计原理 (4)一、数字频率计的大体组成 (4)二、数字频率计的要紧技术指标 (5)(二)数字频率计的设计 (5)一、硬件电路设计 (5)二、软件的设计 (7)3、软件仿真 (9)四、大体元器件的论述(一)AT89S52简介 (9)一、要紧功能特性 (10)二、引脚功能 (11)(二)555按时器 (11)一、555按时器及其应用 (11)二、施密特触发器 (12)五、终止语(一)总结 (13)致谢 (14)参考文献 (15)附录 (16)一、引言(一)数字频率计概述数字频率计是运算机,通信设备,音频视频等科研生产领域不可缺少的测量仪器。
基于51单片机的数字频率计的设计
1前言频率测量是电子学测量中最为基本的测量之一。
由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。
随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。
1.1频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它2测频的原理归结成一句话,就是“在单位时间内对被测信号进行计数”。
被测信号,通过输入通道的放大器放大后,进入整形器加以整形变为矩形波,并送入主门的输入端。
由晶体振荡器产生的基频,按十进制分频得出的分频脉冲,经过基选通门去触发主控电路,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信号所产生的矩形波,至十进制计数电路进行直接计数和显示。
若在一定的时间间隔T内累计周期性的重复变化次数N,则频率的表达式为式:频率计数器严格地按照Nf=T公式进行测频。
由于数字测量的离散性,被测频率在计数器中所记进的脉冲数可有正一个或负一个脉冲的1量化误差,在不计其他误差影响的情况下,测量精度将为:应当指出,测量频率时所产生的误差是由N和T俩个参数所决定的,一方面是单位时间内计数脉冲个数越多时,精度越高,另一方面T越稳定时,精度越高。
为了增加单位时间内计数脉冲的个数,一方面可在输入端将被测信号倍频,另一方面可增加T来满足,为及分频电路提供电源,电压要求稳定、噪声小及性价高的电源。
3、放大整形模块:放大电路是对待测信号的放大,降低对待测信号幅度的要求。
整形电路是对一些不是方波的待测信号转化成方波信号,便于测量。
4、分频模块:考虑单片机外部计数,使用12MHz时钟时,最大计数速率为500kHz,因此需要外部分频。
分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。
5、显示模块:显示电路采用四位共阳极数码管动态显示,为了加大数码管的亮度,使用4个PNP三极管进行驱动,便于观测。
基于51单片机的数字频率计的设计
1 前言频率测量是电子学测量中最为基本的测量之一。
由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。
随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。
1.1频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。
本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小等优点。
1.2频率计发展与应用在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。
单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。
单片机已成为电子系统的中最普遍的应用。
单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。
其中以AT89S52为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要。
2 系统总体设计测频的原理2.1。
被测信号,测频的原理归结成一句话,就是“在单位时间内对被测信号进行计数”通过输入通道的放大器放大后,进入整形器加以整形变为矩形波,并送入主门的输入端。
经过基选通门去触发主控电路,按十进制分频得出的分频脉冲,由晶体振荡器产生的基频,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信内累T号所产生的矩形波,至十进制计数电路进行直接计数和显示。
51单片机设计数字频率计的代码
51单片机设计数字频率计的代码前言本文档将介绍如何使用51单片机设计数字频率计的代码。
数字频率计是一种测量信号频率的仪器,通过测量信号周期的倒数来计算频率。
在本文中,我们将使用51单片机来实现这个功能。
硬件准备*51单片机开发板*串口调试助手*信号源代码实现步骤1.引入头文件首先,在代码开头引入51单片机所需的头文件,包括re g51.h、s t di o.h和se ri al.h。
#i nc lu de<r eg51.h>#i nc lu de<s td io.h>#i nc lu de<s er ia l.h>2.定义全局变量我们需要定义一些全局变量来存储计数器的值和频率值。
u n si gn ed in tc ou nt=0;u n si gn ed lo ng fr equ e nc y=0;3.初始化串口使用串口调试助手来与单片机进行通信,需要在代码中初始化串口模块。
v o id in it_s er ia l(){T M OD&=0x0F;T M OD|=0x20;S C ON=0x50;T H1=0x FD;T L1=TH1;T R1=1;}4.中断服务函数我们需要定义一个中断服务函数来处理定时器溢出中断。
在每次溢出时,计数器将自增,并计算频率值。
v o id in te rr up t_han d le r()i nt er ru pt1{i f(T F0==1){T F0=0;c o un t++;i f(c ou nt>=1000){f r eq ue nc y=(1000/c o un t)*1000;c o un t=0;}}}5.主函数在主函数中,我们需要进行一些初始化操作,包括初始化串口和定时器。
v o id ma in(){i n it_s er ia l();E A=1;T M OD&=0x F0;T M OD|=0x01;T H0=0x FC;T L0=TH0;E T0=1;T R0=1;w h il e(1){p r in tf("当前频率:%lu Hz\n",fr eq ue n cy);}}6.编译和下载代码将代码编译生成h ex文件,并下载到51单片机开发板中。
基于51单片机的频率计的设计讲解
基于51单片机的频率计的设计讲解频率计是一种测量信号频率的仪器。
基于51单片机的频率计设计能够实现对不同频率信号的测量,具有简单、可靠、价格低廉的优势。
本文将详细介绍基于51单片机的频率计的设计原理、电路设计和程序设计。
设计原理:基于51单片机的频率计的设计原理主要包括输入信号的检测和计数、计数值显示和频率计算。
当外部信号输入到单片机的输入引脚时,单片机通过计数器对输入信号的波形进行计数,计数值与输入信号的频率成正比。
通过将计数值转换为频率值,并在显示屏上显示,即可实现对输入信号频率的测量。
电路设计:输入电路:输入电路主要负责将外部信号通过耦合电容和电阻接入单片机的输入引脚。
在输入电路中,耦合电容的作用是将交流信号的AC分量通过,阻隔直流信号的DC分量。
电阻的作用是限制输入信号的幅值,防止单片机输入引脚的过大电流。
计数电路:计数电路是基于51单片机的频率计的核心部分,主要由计数器和时钟发生器组成。
计数器负责对输入信号的波形进行计数,时钟发生器负责提供计数脉冲。
计数器的选择应根据所需测量范围来确定,通常使用定时器/计数器来实现。
显示电路:显示电路主要由数码管和驱动电路组成。
通过将计数值转换为对应的数字,并将数字数据发送给数码管进行显示。
驱动电路负责控制数码管的亮度和显示方式。
程序设计:输入信号的采样:在程序中,通过定时器/计数器对输入信号进行采样,采样时间根据信号频率来确定。
采样得到的数据存储在特定的寄存器中,以供后续的计数和计算。
计数器的计数:通过对输入信号进行计数,得到计数值。
计数值的大小与输入信号的周期成反比,与输入信号频率成正比。
计数器的计数方式可以是边沿计数或脉冲计数,根据实际需求选择。
频率计算和显示:通过将计数值转换为频率值,并将频率值显示在数码管上。
频率计算可以采用简单的比例关系,如频率=计数值/计数时间。
将频率值转换为对应的数字,并通过驱动电路控制数码管的显示。
总结:基于51单片机的频率计通过对输入信号进行采样、计数、计算和显示,能够实现对不同频率信号的测量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自动化与电子工程学院单片机课程设计报告课程名称:单片机原理与应用学院:自动化与电子工程院专业班级:学生姓名:完成时间:报告成绩:目录第1章数字频率计概述 (2)1.1数字频率计概述 (1)1.2数字频率计的基本原理 (1)1.3单脉冲测量原理 (2)第2章课程设计方案设计 (2)2.1系统方案的总体论述 (2)2.2系统硬件的总体设计 (3)2.3处理方法 (3)第3章硬件设计 (4)3.1单片机最小系统 (4)第4章软件设计 (5)4.1系统的软件流程图 (5)4.2程序清单 (7)第5章课程设计总结 (7)参考文献 (8)附录Ⅰ仿真截图 (9)附录Ⅱ程序清单 (15)第1章数字频率计概述1.1数字频率计概述数字频率计又称为数字频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量方波信号及其他各种单位时间内变化的物理量。
本数字频率计将采用定时、计数的方法测量频率,采用6个数码管显示6位十进制数。
测量范围从10Hz—5.5kHz,精度为1%,用单片机实现自动测量功能。
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量频率的方法对方波的频率进行自动的测量。
1.2数字频率计的基本原理数字频率计最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T(如图1.1所示)。
图1.1 频率测量原理频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。
用单片机设计频率计通常采用的办法是使用单片机自带的计数器对输入脉冲进行计数;好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。
缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的AT89C51单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。
故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一。
根据频率检测的原理,很容易想到利用51单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,两者均应该工作在中断方式,一个中断用于1s时间的中断处理,一个中断用于对频率脉冲的计数溢出处理。
1.3单脉冲测量原理首先设置定时器T0为方式1,在被测脉冲信号INT0的下降沿进入外部中断函数,在中断函数中启动T0计数码,被测脉冲信号下降沿停止T0计数,脉宽测量过程见下图:定时器T0以方式1对内部脉冲计数,16位计数值存放在40H(高字节)和41H单元第2章课程设计方案设计2.1系统方案的总体论述数字频率计是用于测量信号(方波,脉冲信号)的频率,并用十进制数字显示,它具有精度高,测量迅速,读数方便等优点。
脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为f=N/T,其中,f为被测信号的频率,N为计数器所累计的脉冲个数。
T为产生N个脉冲所需的时间。
计数器所记录的结果,就是被测信号的频率。
如在1S内记录1000个脉冲,则被测信号的频率为1000Hz。
本实验课题仅讨论一种简单易制的数字频率计。
2.2系统硬件的总体设计本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,可分为以下几个两个模块电路:单片机系统、数码管及显示电路。
各模块关系图如图2.1所示:图2.1 数字频率计系统框图2.3处理方法本频率计的设计以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章硬件设计3.1单片机最小系统AT89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:4KB的程序存储器,128B的RAM,32条I/O线,2个16位定时器/计数器,2个外部中断源和1个串行口。
图3.1 单片机最小系统其引脚功能如下:⒈电源:⑴ VCC -电源引脚,接+5V;⑵ GND -接地端;⒉时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
⒊控制线:控制线共有4根,⑴PROGALE:地址锁存允许/片内EPROM编程脉冲/① ALE功能:用来锁存P0口送出的低8位地址②PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RESET:复位信号。
⑷VppEA:内外ROM选择/片内EPROM编程电源。
/①EA功能:内外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 串行输出口INT外部中断0申请输入端P3.2 0INT外部中断1申请输入端P3.3 1P3.4 T0 定时计数器0计数输入端P3.5 T1 定时计数器1计数输入端P3.6 WR外部数据存储器写选通P3.7 RD外部数据存储器读选通第4章软件设计4.1系统的软件流程图系统软件设计采用模块化设计方法。
整个系统由初始化模块、显示模块和信号频率测量模块和脉冲测量模块组成(见图4.1) 。
上电后,进入系统初始化模块,系统软件开始运行。
在执行过程中,根据外界开关选择是频率测量模式还是脉冲宽度测量模式。
其中当闭合开关,蓝色指示灯亮时,表示是在单脉冲测量模式,打开开关,蓝色指示灯灭,表示是在频率测量模式。
若模式选择错误,将会导致不能得到正确的测量结果。
具体程序流程见下图:图4.1 主函数流程图图4.2频率测量流程图图4.3脉冲宽度测量流程图4.2程序清单程序详见附录Ⅱ。
第5章课程设计总结通过本次对数字频率计的设计使我对书本上的知识有了更进一步的了解,同时也使我感觉到,在实际运用中仅仅凭借书本上的的知识是远远不够的。
在设计中我遇到了一些困难,比如测量方法的选择上曾一度陷入困境,终于攻克了难题。
本次课程设计使我的分析能力和动手能力都有了很大的进步,激起了我对课程的更大兴趣。
在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。
闸门时间也可以大于或小于一秒。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则没测一次频率的间隔就越长。
闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。
本设计还有很多地方需要改进,其中包括对数据的处理,因为取模运算耗时过大,导致数码管在测量高频信号时出现闪烁。
所以应该优化算法,获得更好的显示效果。
参考文献[1]《单片机原理及应用》陈为,中国石油大学出版社附录Ⅰ仿真截图开关打开,指示灯灭,表示此时为测量频率模式,调整方波频率,在数码管上得到测量值为520Hz开关打开,指示灯灭,表示此时为测量频率模式,调整方波频率,在数码管上得到测量值为21Hz经过放着可见,对频率的测量还是比较准确的以下是对脉冲宽度测量的仿真截图双击脉冲发生器,会出现如下对话框设置脉冲格式,单脉冲,正脉冲,起始时间为1s后(即开始仿真一秒后,脉冲自动产生),脉冲宽度设置为520us,点击OK保持开关闭合,模式指示灯亮,表示此时在脉冲测量方式下,点击仿真开始按钮,开始仿真,1s后,单片机接收到脉冲信号,并把结果显示到数码管上其默认单位为us,此时显示结果为576us修改脉冲宽度为0.1s(要求测量范围的上限),仿真结果如下,此时数码管显示为100000us,即0.1s附录Ⅱ程序清单/*****************************************************************课题名称:单片机测输入方波脉冲频率和单脉冲宽度测量范围:外界输入频率在10KHz以内可以稳定显示,六位数码管默认单位为Hz当测量范围过大时,因取模运算耗时大数码管会闪烁,但显示基本正确单正脉冲测量范围可达100us--0.1s,六位数码管默认单位为us*****************************************************************/#include<reg51.h> //包含51单片机寄存器定义的头文件#define uchar unsigned char#define uint unsigned intlong n,num; //全局变量,n用来记录T1的中断次数,4000次后正好是一秒:num用来存放测脉冲宽度时T0的计数值sbit u=P3^2; //将u位定义为P3.2sbit L=P2^7; //将L位定义为P2.7sbit 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;i<z;i++)for(j=0;j<50;j++);}/**************************************************************函数功能:测频率时的定时器初始化*************************************************************/void init() //测频率时的定时器初始化{TMOD=0x25; // 0010 0101 =>T1,定时方式二,8位自动重装;T0,计数,方式1 TH0=0; //计数初值为零TL0=0;TH1=6; //定时250usTL1=6;TR1=1; //开T1定时TR0=1; //开T0计数ET0=1; //允许TO中断ET1=1; //允许T1中断EA=1; //开总中断}/************************************************************** 函数功能:显示子函数*************************************************************/ void display() //显示{P2=0xfe; //最右端一位数码管P0=t[f]; //送段码delay(1); //延时P0=0; //熄灭P2=0xfd; //右端数第二位P0=t[e]; //送段码delay(1); //延时P0=0; //熄灭P2=0xfb; //右端数第三位P0=t[d]; //送段码delay(1); //延时P0=0; //熄灭P2=0xf7; //右端数第三位P0=t[c]; //送段码delay(1); //延时P0=0; //熄灭P2=0xef; //右端数第三位P0=t[b]; //送段码delay(1); //延时P0=0; //熄灭P2=0xdf; //右端数第三位P0=t[a]; //送段码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; //计数清零TH0=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赋初值0while(L==0)display();//无限循环,不停调用显示子函数}/************************************************************** 函数功能:外中断0的中断服务程序*************************************************************/ void int0(void) interrupt 0 //外中断0的中断编号为0{TR0=1; //外中断一到来,即启动T0计时while(u==0); // P3^2为低电平时T0一直计数TR0=0; //P3^2为高电平时关闭T0num=((long)TH0*256+TL0)+31; //取计数值TL0=0; //计数清零TH0=0; //计数清零if(TF0==1)//如果计数器有溢出,需要加上溢出前的计数值65535 {TF0=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();}}。