编号:41
基于51单片机的高频测量仪设计
功能描述:
由STC89C52单片机+信号输入+74HC14整形电路+74HC390分频电路+LCD1602显示模块+电源构成。
1、能测出正弦波、三角波或方波等波形的频率;
2、频率的测量范围为1Hz—12MHz,且能检测幅度最小值为1Vpp的信号;
3、通过LCD1602液晶显示屏显示检测到的即时频率数值(最多8位数,单位为Hz)、显示周期时间。
Proteus7.8以上版本均可使用
视频演示链接:
41、基于51单片机的高频测量仪设计
仿真图:
PCB图:
报告截图:
程序源码:
void main()
{
unsigned char i;
LCD_init();
timer_init(); //定时/计数器初始化
for(i = 0;i<4;i++)
{
LCD_disp_char(i+0,1,character_1[i]);
}
LCD_write_command(0xc0+0);//第一行
LCD_write_data ('T');
LCD_write_data ('i');
LCD_write_data ('m');
LCD_write_data ('=');
while(1)
{
dis_num(); //显示
delay_1s();
}
}
void timer_init(void) //定时/计数器初始化
{
TMOD=0x66; //计数器0和计数器1工作工作方式2,自动重装初值
TH0=0; //计数器初值为0
TL0=0;
TR0=1; //计数器开始计数
ET0=1; //打开计数器0中断
TH1=0; //计数器初值为0
TL1=0;
TR1=1; //计数器开始计数
ET1=1; //打开计数器1中断
RCAP2H=(65536-62500)/256; //在程序初始化的时候给RCAP2L和RCAP2H赋值,
RCAP2L=(65536-62500)%256; //TH2和TL2将会在中断产生时自动使TH2=RCAP2H,TL2=RCAP2L。
TH2=RCAP2H; //12M晶振下每次中断62.5ms(1s=1000ms=62.5ms×16)
TL2=RCAP2L;
ET2=1; //打开定时器2中断
TR2=1; //定时器2开始计时
EA=1; //开总中断
}
void timer2(void) interrupt 5 //定时器2中断(62.5ms)
{
time++;
TF2=0; //定时器2的中断标志位TF2不能够由硬件清零,所以要在中断服务程序中将其清零
if (time==16) //定时1s时间到
{
time=0; //计时清0
EA=0; //关中断
fre=(long)count1*256+TL1; //count*256强制转换成long型,否则将不产生进位~先判断分频后(计数器1)
FLAG = 0;
if(fre<2000)//如果不到200KHz则读取分频前(计数器0)频率(200K÷100=2000)
{
fre = (long)count*256+TL0;
FLAG = 1;
}
if(!FLAG)
{
fre = fre *100;//100分频
}
TL0=0; //清零计数器0计数
TH0=0;
TL1=0;
TH1=0;
count=0; //清零计数器0计数
count1=0;
EA=1; //开中断
}
}
//----------------------------------------------------------------
void timer0(void) interrupt 1 //计数器0中断(100分频前)
{
count++;
}
//----------------------------------------------------------------
void timer1(void) interrupt 3 //计数器1中断(100分频后)
{
count1++;
}
软件免费下载地址:
1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包
链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w
提取码:2756
3、KEIL5 MDK软件(STM32开发软件)
链接:https://pan.baidu.com/s/1t3eY-3yRdTa7jZMlijq_jg
提取码:ab58
文件下载:
链接:https://pan.baidu.com/s/10UIhhva7NuC1_X0xf_R0Nw?pwd=zse4
提取码:zse4