超声波测距 数码管显示 求增加报警装置 20
#include<AT89x51.H>//器件配置文件#include<intrins.h>#defineRXP3_4#defineTXP3_5unsignedintti...
#include <AT89x51.H> //器件配置文件
#include <intrins.h>
#define RX P3_4
#define TX P3_5
unsigned int time=0;
unsigned int timer=0;
unsigned char posit=0;
unsigned long S=0;
bit flag =0;
unsigned char const discode[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};
unsigned char const positon[3]={ 0xfe,0xfd,0xfb};
unsigned char disbuff[4] ={ 0,0,0,0,};
/********************************************************/
void Display(void) //扫描数码管
{
if(posit==0)
{P0=(discode[disbuff[posit]])&0x7f;}
else
{P0=discode[disbuff[posit]];}
P2=positon[posit];
if(++posit>=3)
posit=0;
}
/********************************************************/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出来是CM
if((S>=700)||flag==1) //超出测量范围显示“-”
{
flag=0;
disbuff[0]=10; //“-”
disbuff[1]=10; //“-”
disbuff[2]=10; //“-”
}
else
{
disbuff[0]=S%1000/100;
disbuff[1]=S%1000%100/10;
disbuff[2]=S%1000%10 %10;
}
}
/********************************************************/
void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围
{
flag=1; //中断溢出标志
}
/********************************************************/
我不知道怎么添加,一添加数码管就开始延迟了 展开
#include <intrins.h>
#define RX P3_4
#define TX P3_5
unsigned int time=0;
unsigned int timer=0;
unsigned char posit=0;
unsigned long S=0;
bit flag =0;
unsigned char const discode[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff/*-*/};
unsigned char const positon[3]={ 0xfe,0xfd,0xfb};
unsigned char disbuff[4] ={ 0,0,0,0,};
/********************************************************/
void Display(void) //扫描数码管
{
if(posit==0)
{P0=(discode[disbuff[posit]])&0x7f;}
else
{P0=discode[disbuff[posit]];}
P2=positon[posit];
if(++posit>=3)
posit=0;
}
/********************************************************/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出来是CM
if((S>=700)||flag==1) //超出测量范围显示“-”
{
flag=0;
disbuff[0]=10; //“-”
disbuff[1]=10; //“-”
disbuff[2]=10; //“-”
}
else
{
disbuff[0]=S%1000/100;
disbuff[1]=S%1000%100/10;
disbuff[2]=S%1000%10 %10;
}
}
/********************************************************/
void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围
{
flag=1; //中断溢出标志
}
/********************************************************/
我不知道怎么添加,一添加数码管就开始延迟了 展开
2个回答
展开全部
程序中,超出测距范围,用---来显示,这就属于报警了。
楼主还想要什么报警?
对 S 进行判断、处理即可。
楼主还想要什么报警?
对 S 进行判断、处理即可。
追问
就是蜂鸣器报警,在不同的距离范围之内报警使用的频率不一样,但是我一直加不进去,能说说怎么加呀 谢谢你了 这件事我愁了好几天
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
艾因蒂克
2024-11-28 广告
2024-11-28 广告
超声阵列探头是艾因蒂克科技(上海)有限公司在超声检测领域的一项重要技术产品。它采用先进的阵列设计,能够显著提高超声检测的精度和效率。该探头通过多个超声传感器的协同工作,实现对被检测物体的全方位、多角度扫描,从而更准确地发现物体内部的缺陷和问...
点击进入详情页
本回答由艾因蒂克提供
展开全部
这个简单,把报警的声响时间与测量的距离关联超来就行,你电子乐屋上看看吧,有具体的电路,还有仿真。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询