⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 超声波测距.c

📁 倒车雷达源代码
💻 C
字号:
#include <reg51.h>
#include "mtv230m.h"


unsigned char xdata af1;
unsigned char xdata af2;
unsigned char xdata af3;
unsigned char xdata af4;
unsigned char xdata af5;
unsigned char xdata af6;
unsigned char xdata af7;
unsigned char xdata af8;
unsigned char xdata af9;
unsigned char xdata af10;
unsigned char xdata af11;
unsigned char xdata af12;
unsigned char xdata af13;
char ufb;
char fbr;
unsigned int data juli;//回波距离
unsigned int  julisz[9];
unsigned int pu;//平均距离
bit julicc;//超出范围标志


bit fs_yk;//发射和遥控标志=1为发射

bit jsf;//接收到回波标志
bit jsfa;//接收到回波溢出标志

bit yk_bz;//遥控标志

void int0() interrupt 0 using 0//计算超声波发射距离
{
 unsigned char w;
 unsigned char b;
 unsigned char j;
 unsigned int ds[9];
 unsigned int k;
 ufb=0;
 EX0=0;
TR1=0;
julisz[8]=julisz[7];
julisz[7]=julisz[6];
julisz[6]=julisz[5];
julisz[5]=julisz[4];
julisz[4]=julisz[3];
julisz[3]=julisz[2];
julisz[2]=julisz[1];
julisz[1]=julisz[0];
julisz[0]=juli;


  
  ds[0]=julisz[0];ds[1]=julisz[1];ds[2]=julisz[2];ds[3]=julisz[3];
  ds[4]=julisz[4]; ds[5]=julisz[5];ds[6]=julisz[6];ds[7]=julisz[7];ds[8]=julisz[8];
   for(b=0;b<8;b++)
  	{
  	w=b;
  	for(j=b+1;j<9;j++)
  		
  	if(ds[j]<ds[w])w=j;
        k=ds[w];ds[w]=ds[b];ds[b]=k;
  	}
   pu=(ds[3]+ds[4]+ds[5])/3; 
   af1=af2;af2=af3;af3=af4;af4=af5;af5=af6;af6=af7; 
   af7=af8;af8=af9;af9=af10;af10=af11;af11=af12;af12=af13;af13=pu;
   if(af1>af2)
    ufb=ufb+1;
   else if(af1<af2)
           ufb=ufb-1;
   else ;
    if(af2>af3)
    ufb=ufb+1;
   else if(af2<af3)
           ufb=ufb-1;
   else ;
    if(af3>af4)
    ufb=ufb+1;
   else if(af3<af4)
           ufb=ufb-1;
   else ;
    if(af4>af5)
    ufb=ufb+1;
   else if(af4<af5)
           ufb=ufb-1;
   else ;
    if(af5>af6)
    ufb=ufb+1;
   else if(af5<af6)
           ufb=ufb-1;
   else ;
    if(af6>af7)
    ufb=ufb+1;
   else if(af6<af7)
           ufb=ufb-1;
   else ;
     if(af7>af8)
    ufb=ufb+1;
   else if(af7<af8)
           ufb=ufb-1;
   else ;
    if(af8>af9)
    ufb=ufb+1;
   else if(af8<af9)
           ufb=ufb-1;
   else ;
    if(af9>af10)
    ufb=ufb+1;
   else if(af9<af10)
           ufb=ufb-1;
   else ;
    if(af10>af11)
    ufb=ufb+1;
   else if(af10<af11)
           ufb=ufb-1;
   else ;
    if(af11>af12)
    ufb=ufb+1;
   else if(af11<af12)
           ufb=ufb-1;
   else ;
    if(af12>af13)
    ufb=ufb+1;
   else if(af12<af13)
           ufb=ufb-1;
   else ;
   if(ufb>9)
    {
    fbr=10;
    af1=0;af2=0;af3=0;af4=0;af5=0;af6=0; 
   af7=0;af8=0;af9=0;af10=0;af11=0;af12=0;af13=0;
    }
   else if(ufb<9)
    {
          fbr=-10;
          af1=0;af2=0;af3=0;af4=0;af5=0;af6=0; 
   af7=0;af8=0;af9=0;af10=0;af11=0;af12=0;af13=0;
    }
   else ;
  jsf=1;
}
void timer0() interrupt 1 using 1//发射和遥控
{

    yk_bz=0;//启动进入遥控
}
void timer1() interrupt 3 using 3
{
  
  if(juli>4000)
  	{
  	julicc=1;
  	juli=0xffff;//超出量程
  	jsfa=1;
  	TR1=0;
  	}
  else juli=juli+1;
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -