Blog

Keep up to date with the latest news

基于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; //开总中断

}

五、实物照片

六、资料下载

本文有对应资源下载,如未显示,可能资源正在审核,审核完可正常下载。