资源简介

超声波测距及报警程序 可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量范围在0.10~4.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。

资源截图

代码片段和文件信息

#include 
#include “intrins.h“
//#include “Lcd1602.h“
#define uchar unsigned char
#define uint unsigned int

sbit BEEP = P1^6;  //报警提示口
sbit vout = P1^7;  //脉冲发送口
sbit P3_2 = P3^2;  //中断接收口
sbit P2_2 = P2^2;

//sbit INT = P1^6; 
bit flag;
static uchar ledcode[12] = {0xC00xF90xA40xB00x990x920x820xF80x800x900xff0x7f};

//unsigned char discol[4]={0xef0xdf0xbf0x7f};
unsigned char code Anum_code[]={“0123456789“};
unsigned char disbuf[4]={0123};
float highlow;
unsigned char qianbaishige;
//unsigned char j=600;

/*void delay_1ms(void)  //12mhz delay 1.01ms
{
   unsigned char xy;   
   x=3;
   while(x--) 
  {
     y=40;
     while(y--);
  }
}

void delay_1us(unsigned char i) //i=1 5us; i=27us; i=39us

    while(--i); 
}*/

void delay_50us(unsigned int t) // t=100 5ms; t=1000 50ms
{
 unsigned char j;  
 for(;t>0;t--)   
  for(j=19;j>0;j--);
}

/*void delay_50ms(unsigned int t) // t=10 500ms; t=100 5s;
{
 unsigned int j; 
 for(;t>0;t--) 
  for(j=6245;j>0;j--);
}*/
void display(void)
{
   uint aij;
for(j=0;j<400;j++)
{
for(i=0;i<4;i++)                // 四路扫描
     {
  
  P0 = ledcode[disbuf[3-i]]; // 发送显示数据
  P2 = ~(1<   for (a=0; a<40; a++);     // 延时一段时间
  P2 |= (1<      }
  P2_2 = 0;
  P0 = ledcode[11];             // 显示小数点
      
       for (a=0; a<40; a++);
      P2_2 = 1;
}
}

void work(void)

  //unsigned char qianbaishige;
  float value;
  value=(high*256+low)*17/100;
  qian=value/1000;
  bai=(value-qian*1000)/100;
  shi=(value-qian*1000-bai*100)/10;
  ge=value-qian*1000-bai*100-shi*10;
  if(value<=1000)
  {
    BEEP=0;
  }
  else
  {
    BEEP=1;
  }
  disbuf[0] =

评论

共有 条评论