导航:首页 > 操作系统 > 51单片机频率计设计

51单片机频率计设计

发布时间:2023-03-01 12:05:22

单片机频率计

1.实验任务

利用51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。

2.电路原理图

见插图

3.程序设计内容

(1).定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理。送到数码管显示出来。

(2).T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。

4.C语言源程序

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

*定时器+计数器测频

*

*file:frequency.c

*name:zhzhchang

*time:2010.3.17

*V1.0

*blog:http://blog.csdn.net/zhzht19861011

*Nots:本程序定义6个数码管,经过实测,在200HZ~50KHZ时结果较准确,误差小于0.4%,

*50KHZ以上频率未进行测量.据资料表明,可以测量到120KHZ,本程序未证明.

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

#include<reg52.h>

bitint_flag;//定时器01S到标志位

unsignedcharvolatileint_count;//定时器0中断次数

unsignedcharvolatileT1count;//定时器1中断次数

unsignedcharcodedofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示段码值0123456789

unsignedlongsum;//1S内脉冲总个数

unsignedcharled[6];//LED显示缓存

///////////////软件延时/////////////

voiddelay(unsignedintcnt)

{

while(--cnt);

}

///定时器0初始化

voidinit_t0(void)

{

TMOD=(TMOD&0xF0)||0x01;//定时器0工作于方式1

TH0=(65536-50000)/256;//定时50ms

TL0=(65535-50000)%256;

}

//定时器1初始化

voidinit_t1(void)

{

TMOD=(TMOD&0x0F)|0x50;//timer1forcount

TH1=0x00;

TL1=0x00;

}

//显示

voiddisp(void)

{

unsignedchari;

for(i=0;i<6;i++)

{

P0=dofly[(led[i])];//取显示数据

P2=5-i;//取段码

delay(100);//扫描间隙延时,根据单片机调整,延时1ms即可

}

}

///////////////////////////////////////////////////////

voidmain(void)

{

EA=1;//开总中断

init_t0();//初始化定时器

init_t1();

TR0=1;//定时器开始工作

TR1=1;

ET0=1;//开T0中断

while(1)

{

if(int_flag==1)

{

int_flag=0;

sum=TL1+TH1*256+T1count*65536;//计算1秒内的脉冲个数

//以下将数据格式化,转成LED可显示的BCD码

led[0]=sum%10;//最低位

sum=sum/10;

led[1]=sum%10;//第二位

sum=sum/10;

led[2]=sum%10;

sum=sum/10;

led[3]=sum%10;

sum=sum/10;

led[4]=sum%10;

led[5]=sum/10;

int_count=0x00;

T1count=0;

TH1=0x00;

TL1=0x00;

TR1=1;

}

disp();

}

}

//定时器0中断服务程序

voidint_t0(void)interrupt1

{

TH0=(65535-50000)/256;

TL0=(65535-50000)%256;

int_count++;

if(int_count==20)

{

TR1=0;

int_flag=1;

int_count=0x00;

}

}

//定时器1中断服务程序

voidint_t1(void)interrupt3

{

T1count++;

}

别说你的设计要求用汇编啊!!!

不过既然是课程设计,我这个只是给你参考,你自己一定要弄懂,变成自己的。我实测过,程序没问题,但用到你的硬件上可能需要改一下,因为你的硬件数码管不一定和我的硬件接法一样,但整体思路我都给你了。

② 51单片机电子频率计

建议你去"幸福校园"看看 里面有些样子 你可以参考
前言
传统的数字频率计都是采用纯硬件方式组成(纯数字电路)。它的集成电路(IC)用量较大,因而产品的体积、功耗都较大,生产成本较高。产品定型后不能升级(加入新功能)。而采用单片机和相关可编程智能集成器件制成的现代数字频率计方式情况就不同了,单片机的内核CPU可完成多项工作如计数、读入、译码、驱动和时基的产生等。和纯硬件方式比,它减少了很大一部分的集成电路的用量,还可加入许多的智能操作,这更是纯硬件方式所望尘莫及的。
目前市场上的频率计产品很多,但基本上都是采用专用计数芯片(如ICM7240 , ICM7216) 和数字逻辑电路组成,由于这些芯片本身的工作频率不高(如ICM7240 仅有15MHz 左右) ,从而限制了产品的工作频率的提高, 远不能达到在一些特殊的场合需要测量很高的频率的要求,而且测量精度也受到芯片本身极大的限制。
自从80年代单片机引入我国之后,单片机已广泛地应用于各行各业的电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路. 运用单片机和高速计数器的组合设计频率计,并采用适当的算法取代传统电路,次方法不仅能解决传统频率计结构复杂、稳定性差、精度不高的弊端,而且性能也将大有提高,可实现精度较高、等精度和宽范围频率计的要求;随着单片机技术的不断发展,可以用单片机通过软件设计直接用十进制数字显示被测信号频率。本设计正是基于此技术进行的传统频率计技术改进。

③ 基于51单片机的数字频率计设计(proteus仿真)

#include"reg51.h"
#define uchar unsigned char
uchar tt;
void init();
void main(uchar t) //根据需要修改相应的值;
{
t=tt;
init();
while(1)
{
if(tt==t) //如果t==10,那么周期是1秒,即平率==1Hz;
{
tt=0;
P0^0=~P0^0; //设信号从P0_0口输出;
}
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //这里周期是100ms,你可以根据你的需要修改
EA=1;
ET0=1;
TR0=1;
}
void timer() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}

④ 51单片机的数字频率计

本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生活当中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。

1.1数字频率计概述
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。测量范围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。用单片机实现自动测量功能。
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
点击重新加载
1.2频率测量仪的设计思路与频率的计算

图1 频率测量原理图

频率测量仪的设计思路主要是:对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小,其原理如右图1所示。

若被测量信号的周期为,分频数m1,分频后信号的周期为T,则:T=m1Tx 。由图可知: T=NTo
(注:To为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率f。)
由于单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,所以由式T=NTo可知,频率测量的误差主要取决于N值的大小,N值越大,误差越小,测量的精度越高。

1.3 基本设计原理

基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
所谓“频率”,就是周期性信号在单位时间(1s)内

⑤ 51单片机制作简易数字频率计程序

这里有一个四位数码管的频率计,供参考

#include<reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码
//ucharwei[4]={0XEf,0XDf,0XBf,0X7f};//位的控制端 (开发板)
ucharwei[4]={0X80,0X40,0X20,0X10};//位的控制端 (仿真)
uintz,x,c,v,date; //定义数据类型
uintdispcount=0;
uintlck=0;
uintdisp=0;
/******************************************************************

延时函数

******************************************************************/
voiddelay(uchart)
{
uchari,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{;
}
}
}

/**********************************************************************
数码管动态扫描
*********************************************************************/
voidxianshi()
{
/*****************数据转换*****************************/
z=date/1000; //求千位
x=date%1000/100; //求百位
c=date%100/10; //求十位
v=date%10; //求个位

P2=wei[0];
P0=an[z];
delay(50);
P2=wei[1];
P0=an[x];
delay(50);
P2=wei[2];
P0=an[c];
delay(50);
P2=wei[3];
P0=an[v];
delay(50);


}

/*************************************************************************
定时器初值1ms
**************************************************************************/
voidinitTimer(void)
{
TMOD=0x0;
TH0=0xe3;
TL0=0xc;
}

/*************************************************************************
定时器函数
**************************************************************************/
voidtimer0(void)interrupt1
{
TH0=0xe3;
TL0=0xc;
lck++;
if(lck==1000)
{
disp=dispcount;
lck=0;
dispcount=0;
}

}

/*************************************************************************
中断函数
**************************************************************************/
voidint0(void)interrupt0
{

dispcount++;//每一次中断,计数加一

}

/*************************************************************************
主函数
**************************************************************************/
voidmain(void)
{

IT0=1;//INT0下降沿中断
EX0=1;//允许INT1中断
initTimer();//装入初值
TR0=1;
ET0=1;
EA=1;
while(1)

{
date=disp;
xianshi();
}
}

⑥ 基于51单片机数字频率计论文

1.绪论
1.1 数字频率计的发展现状及研究概况
随着电子技术的飞速发展,各类分立电子元件及其所构成的相关功能单元,已逐步被功能更强大、性能更稳定、使用更方便的集成芯片所取代。由集成芯片和一些外围电路构成的各种自动控制、自动测量、自动显示电路遍及各种电子产品和设备。数字系统和数字设备已广泛应用于各个领域,更新换代速度可谓日新月异。
在电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。供消费用的微波炉和电视、先进的工业控制系统、空间通讯系统、交通控制雷达系统、医院急救系统等在设计过程中无一不用到数字技术。数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高系统可靠性和速度。
数字频率计是现代通信测量设备系统中不可缺少的测量仪器,不但要求电路产生频率准确的和稳定度高的信号,而且能方便的改变频率。
数字频率计主要实现方法有直接式、锁相式、直接数字式和混合式四种。
直接式的优点是速度快、相位噪声低,但结构复杂、杂散多,一般只应用在地面雷达中。
锁相式的优点是相位同步的自动控制,制作频率高,功耗低,容易实现系列化、小型化、模块化和工程化。
直接数字式的优点是电路稳定、精度高、容易实现系列化、小型化、模块化和工程化。
随着单片锁相式数字频率计的发展,锁相式和数字式容易实现系列化、小型化、模块化和工程化,性能也越来越好,已逐步成为两种最为典型,用处最为广泛的数字频率计。
1.2 本课题研究背景及主要研究意义
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。在数字电路中,频率计属于时序电路,它主要由具有记忆功能的触发器构成。在计算机及各种数字仪表中,都得到了广泛的应用。在CMOS电路系列产品中,频率计是用量最大、品种很多的产品。
本课题采用的是直接数字式的频率计,设计原理简单,是全硬件电路实现,电路稳定、精度高,大大的缩短了生产周期。
1.3 本课题主要研究内容
本课题采用数字电路来制作一个1HZ—1MHZ的数字频率计,并将所需得到的频率通过数码管显示出来。 数字频率计主要由四部分组成:时基电路、闸门电路、逻辑控制电路以及可控制的计数、译码、显示电路。原理框图如图1-1:

图1-1 原理框图

⑦ 51单片机频率计的中断程序怎么设计

定时器11MS中断一次,5次是5ms,乘200就是1秒种,其初值由晶振频率决定,有计算软件
当然,也可以中断10次或20次,频率判断更准确,但响应速度慢了
1600或800方波接入定时器/计数器0的外部输入引脚上,好像是P3.4
程序如下:
void
init()//初始化设置
{
TMOD=0x15;//定时器0作为计数器,定时器1作为定时器用
TH0=.0;//计数器清0
TL0=0;
EA=1;//开总中断
ET1=1;//允许定时器1中断
TH1=......;
TL1=.......;
TR0=1;//启动计数器
TR1=1;//启动定时器
aa=0;
}
void
main()//主程序很简单
{
init();//初始化
while(1)//循环程序
{
dd=bb*256+cc;//
5ms的计数值
ee=200*dd;//换算为1秒钟的计数值
if((ee>750)&&(ee<850))
{
P3.5=0;
}
if((ee>1550)&&(ee<1650))
{
P3.5=1;
}
}
}
void
timer1()interrupt
3//注意:定时器1的中断序号为3
{
aa++;
TH1=....;.
TL1=....;.
if(aa==5)//中断5次,共5ms
{
TR0=0;//暂停计数
aa=0;
bb=TH0;//读出计数器数据
cc=TL0;
TL0=0;//计数器清0
TH0=0;
TR0=1;//重新启动计数器
}
}

⑧ 利用单片机的定时/计数功能设计一个频率测量装置,并以此频率输出方波

可以看看这个,51单片机简易频率计

阅读全文

与51单片机频率计设计相关的资料

热点内容
鸿蒙系统怎么换为安卓系统 浏览:846
pdf已加密如何转为ppt 浏览:4
文件或文件夹怎样命名 浏览:926
悦跑圈算法 浏览:705
骑砍2霸主作战命令 浏览:980
嵌入式常用算法 浏览:548
csgo不输入命令如何切换服务器 浏览:3
安卓手机怎么开启分身微信 浏览:306
苏格拉底的申辩pdf 浏览:80
php手册怎么下载 浏览:758
哪个app可以看全运会男篮直播 浏览:968
excel中图片怎么压缩 浏览:192
电脑上java编译器 浏览:560
中联压缩式垃圾车报价 浏览:778
我的世界hmcl启动器如何开服务器 浏览:127
安卓7如何开启导航键 浏览:395
无法连接科雷服务器怎么解决饥荒 浏览:192
服务器灭火用什么灭火器 浏览:863
压缩机喷出来的油 浏览:89
fpgadsparm单片机 浏览:761