标题:
单片机超声波扫频、定频程序,为什么打不到预期的效果
[打印本页]
作者:
湮灭GG
时间:
2019-7-16 22:08
标题:
单片机超声波扫频、定频程序,为什么打不到预期的效果
#include <reg51.h>
#include <stdlib.h>
sbit Pulse = P2^0;
float Fixed_frequency;
#define Fixed_Period ((1.0/Fixed_frequency)*500)
unsigned int Frequency = 12;
#define Period ((1.0/Frequency)*500)
unsigned int Temp = 0, i = 1, Ms_20 = 0;
void Timer0_Init()
{
TMOD &= 0XF0;
TMOD |= 0X01;
TH0 = 0X96;
TL0 = 0X88;
ET0 = 1;
TR0 = 1;
}
void Timer1_Init()
{
TMOD &= 0X0F;
TMOD |= 0X20;
TH1 = TL1 = 256 - Period;
ET1 = 1;
TR1 = 1;
}
void main()
{
Timer0_Init();
Timer1_Init();
EA = 1;
for(;;)
{
;
}
}
void timer0() interrupt 1
{
TH0 = 0X96;
TL0 = 0X88;
Ms_20++;
if( Ms_20 == 3000)
{
Fixed_frequency = rand()%13 + 12;
ET1 = 0;
TR1 = 0;
TH1 = TL1 = 256 - Fixed_Period;
ET1 = 1;
TR1 = 1;
}
else if(Ms_20 == 6000)
{
ET0 = 0;
TR0 = 0;
ET1 = 0;
TR1 = 0;
}
if(Ms_20 < 3000)
{
Frequency+=0.1;
if(Frequency >25)
Frequency = 12;
ET1 = 0;
TR1 = 0;
TH1 = TL1 = 256 - Period;
ET1 = 1;
TR1 = 1;
}
}
void timer1() interrupt 3
{
Pulse = !Pulse;
}
//预期效果:一、打开开关,超声波发出6KHz的低频测试超声,持续10秒钟左右,1分钟后进入工作状
二、开始工作时超声波频率是12 KHz~25 KHz。2分钟的工作,一分钟是扫频,一分钟是定频。扫频是在12KHz~25 KHz的频段中不断变换频点循环工作。循环速度是3.8秒,定频是工作时随机选取一个频点工作1分钟。
作者:
yzwzfyz
时间:
2019-7-17 11:02
将你的程序画成框图,看看流程是否说得过去(符合题意)。
在T0中断服务程序中处理事件,是不太好的。但不代表不可以这样做。
晶振频率是多少呢?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1