仿真原理图如下:
MCU和LCD1602显示模块:
启动及清零信号控制模块:
C语言代码如下:
/*----------------------------------------
FileName: main.c
Function:测量0 ~ 9999Hz之间的数字信号的频率
Author: Zhang Kaizhou
Date: 2019-6-5 22:39:16
---------------------------------------*/
#include "FrequencyMeasure.h"
bit flag = 0;
uint freq = 0, count = 0, time = 10; // 定时器Timer0溢出次数
void main()
{
LCDInit();
displayInit();
freqMeasure();
display(freq);
while(1);
}
void freqMeasure()
{
Dclr = 0; // 产生D触发器的清零正脉冲
delay(5);
Dclr = 1;
TMOD = 0x59; // Timer1 非门控 方式一 计数器;Timer0 门控 方式一定时器
TH0 = (65536 - 50000) / 256; // Timer0 定时50ms 赋初值
TL0 = (65536 - 50000) % 256;