前言
本设计硬件部分主要由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; //开总中断
}
五、实物照片
六、资料下载
本文有对应资源下载,如未显示,可能资源正在审核,审核完可正常下载。