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

📄 ceju.c

📁 超声波测剧驱动 40KHZ 频率 范围达到50CM 以上
💻 C
字号:
#include </atmel/at89x51.h>

unsigned char i,zflag;

void delay(unsigned int times)
{
 unsigned int j;
 for(j=0;j<=times;j++){;}
}

void mdelay(unsigned int times)
{
 unsigned int i,j;
 for(i=0;i<=times;i++)
 {
 for(j=0;j<=111;j++){;}
 }
}

void init_distance(void)
{
 TR0=0;EA=0;EX0=0;P0_0=0;P0_1=0;P0_2=0;
 TH0=0x00;TL0=0x00;TMOD=0x21;
 IT0=0;
 TR0=1;
}

void init_uart(void)
{
 TMOD=0x21;
 TH1=0xe8;
 PCON=0X00;
 SCON=0x50;
 TR1=1;
}

void close_uart(void)
{
 TR1=0;
 TMOD=0x21;
 SCON=0x00;
}

void int0(void) interrupt 0 using 1
{ unsigned char distance;
 EA=0;EX0=0;
 TR0=0;
 init_uart();
 distance=(TH0*256+TL0)*0.0187;
 switch(zflag)
 {
  case 0:
  {
   SBUF='^';while(TI==0);TI=0;
  }break;
  case 1:
  {
   if((distance>5)&&(distance<50)){
   SBUF='l';while(TI==0);TI=0;
   delay(100);
   SBUF='=';while(TI==0);TI=0;
   delay(100);
   SBUF=distance/10+0x30;
   while(TI==0);TI=0;
   delay(100);
   SBUF=distance%10+0x30;
   while(TI==0);TI=0;}
  }break;
  case 2:
  {
   if((distance>5)&&(distance<50)){
   SBUF='r';while(TI==0);TI=0;
   delay(100);
   SBUF='=';while(TI==0);TI=0;
   delay(100);
   SBUF=distance/10+0x30;
   while(TI==0);TI=0;
   delay(100);
   SBUF=distance%10+0x30;
   while(TI==0);TI=0;}
  }break;
 }
 close_uart();
 i=20;
 }

void shot(unsigned char flag)
{
switch(flag)
{
 case 0://左侧超声波
 {
 zflag=0;
 for(i=0;i<30;i++)
 {
 init_distance();
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=0;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=1;
 P0_0=0;
  delay(15);
  EA=1;
  EX0=1;
 }
 }break;
 case 1://前侧超声波
 {
 zflag=1;
 for(i=0;i<20;i++)
 {
  init_distance();
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=0;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P0_1=1;
  P1_1=0;
  delay(15);
  EA=1;
  EA=1;
  EX0=1;
  EX0=1;
  delay(300);
 }
 }break;
 case 2://右侧超声波
 {
 zflag=2;
 for(i=0;i<20;i++)
 {
  init_distance();
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=0;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=1;
  P0_2=0;
  delay(15);
  EA=1;
  EX0=1;
  delay(300);
 }
 }break;
}
}

void main(void)
{while(1){
 shot(0);
 mdelay(1000);
 shot(1);
 mdelay(1000);
 shot(2);
 mdelay(1000);
}
}

⌨️ 快捷键说明

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