基于51单片机的频率计设计(仿真+原理图+源代码+参考论文+实物照片)


前言

本设计硬件部分主要由51单片机+分频模块+整形模块+lcd1602液晶显示+按键设计构成。功能上频率的测量范围为1Hz—20MHz能测量各种周期信号,能测出正弦波、三角波或方波等波形的频率,并通过LCD1602液晶显示屏实时显示检测到的频率数值(最多8位数,单位为Hz)。


一、硬件构成

STC89C52单片机只能处理数字信号因此系统需要先把信号放大成方波信号,再通过施密特触发器整形方波,又由于单片机能处理的频率有限,所以先用74HC390芯片对输入的信号进行了分频,使其降低了100倍,才送去给单片机处理,如果频率高于200KHZ的时候就计算分频后的频率,得到数据再换算成真实的频率。
基于以上思路整个系统硬件部分主要由三极管放大电路、整形电路、分频电路、液晶模块构成。

系统结构框图

在这里插入图片描述

二、系统功能

频率测量范围为1Hz—20MHz能测量各种周期信号,能测出正弦波、三角波或方波等波形的频率。通过LCD1602液晶显示屏显示检测到的即时频率数值(最多8位数,单位为Hz)。
单片机上电后会先进行一个初始化把设置的变量的值清0,然后开启定时器首先对100分频后的输入信号进行1S内计数,当测量到频率大于200KHZ的时候,单片机会显示出当前测量的频率和周期,然后进行下一次计数,当测量到的频率少于200KHZ的时候,单片机会重新采集分频前的数据,把测量到的数据显示出来,然后再进入到下一次的计数。

系统流程图

在这里插入图片描述

三、仿真

在这里插入图片描述

四、代码

void main()
{ 
	unsigned char i;
	LCD_init();
	timer_init();             //定时/计数器初始化 
 
	for(i = 0;i<4;i++)
	{
	 	LCD_disp_char(i+0,1,character_1[i]);
	}
	while(1)
	{
		dis_num();         //显示
		 delay_1s();
			 
	}						 
}

void timer_init(void)         //定时/计数器初始化
{ 
	TMOD=0x66;                //计数器0工作工作方式2,自动重装初值 
	TH0=0;                    //计数器初值为0
	TL0=0;
	TR0=1;                    //计数器开始计数	    
	ET0=1;                    //打开计数器0中断   

	TH1=0;                    //计数器初值为0
	TL1=0;
	TR1=1;                    //计数器开始计数	    
	ET1=1;                    //打开计数器0中断   

	RCAP2H=(65536-62500)/256; //在程序初始化的时候给RCAP2L和RCAP2H赋值, 
	RCAP2L=(65536-62500)%256; //TH2和TL2将会在中断产生时自动使TH2=RCAP2H,TL2=RCAP2L。 
	TH2=RCAP2H;               //12M晶振下每次中断62.5ms
	TL2=RCAP2L;
	ET2=1;                    //打开定时器2中断	 
	TR2=1;                    //定时器2开始计时  
	EA=1;                     //开总中断   
} 

五、实物照片

在这里插入图片描述

六、资料下载

本文有对应资源下载,如未显示,可能资源正在审核,审核完可正常下载。
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值