gw140624 发表于 2013-4-11 10:18:07

求51单片机C程序----超声测距程序(一个发射两个接受)

有哪位大神帮帮忙,急!!!!!!!!!!!!

绿茶山人 发表于 2013-4-16 14:45:53

类似的源码网上很多,楼主还是别这么直接要代码了。

liu_shu 发表于 2013-4-16 14:48:51

又是学生党吧?

gw140624 发表于 2013-4-16 20:25:16

是求大家帮忙看看我的这个程序

#include <REGX52.H>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit csbout =P1^1;   //超声波发送
sbit csbint1 =P3^2;//左耳超声波接收
sbit csbint2 =P3^3;          //右耳超声波接收
sbit bj1 =P1^7;       //左耳报警值输出(声音)
sbit bj2 =P1^6;      //右耳报警值输出(声音)
uchar tab={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};//0~9段码

sbit LED1 = P3^0;                        //数码管位驱动
sbit LED2 = P3^1;                        //数码管位驱动
sbit LED3 = P3^4;                        //数码管位驱动
sbit LED4= P3^5;                        //数码管位驱动
sbit LED5= P3^6;                        //数码管位驱动
sbit LED6 = P3^7;                        //数码管位驱动       

uchar u1,u2;

uint count1,count2,b;
char outcome1H,outcome1L,outcome2H,outcome2L;

void delay(uint a) //延时;
{
uint m;
for(m=0;m<a;m++);
}

void csbfs()                  //从P1.1发出40KHz的脉冲
{
                 csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
                 csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
                 csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
              csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
                 csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
              csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
              csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
              csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
          csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
               csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
       csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
               csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
       csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
               csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
       csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
               csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
               csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
          csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
               csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
           csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
               csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
          csbout=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
               csbout=0;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();                                /*40KHz超声波 */
}
       

void display1(void) //显示;
{               
      u1=count1%10;
      u1=(count1/10)%10;
      u1=(count1/100)%10;
      
                LED4=1;LED5=1;LED6=1;
                P0=tab];
                LED6=0;
                delay(10);
                LED6=1;
                P0=tab];
                LED5=0;
                delay(10);
                LED5=1;
                P0=tab];
                LED4=0;
                delay(10);
                LED4=1;
                       
         
}
void display2(void) //显示;
{
      u2=count2%10;
      u2=(count2/10)%10;
      u2=(count2/100)%10;

             LED1=1;LED2=1;LED3=1;
                P2=tab];
                LED3=0;
                delay(10);
                LED3=1;
                P2=tab];
                LED2=0;
                delay(10);
                LED2=1;
                P2=tab];
                LED1=0;
                delay(10);
                LED1=1;
                       
      
}

void rcsbint1() interrupt 0 //外部中断0,接收信号
{
EX0=0;
TR0=0;
outcome1H=TH0;
outcome1L=TL0;
count1=outcome1L;
count1<<=8;
count1=count1|outcome1L;
count1=count1*34/2000;
TH0=0;
TL0=0;

       
}
void rcsbint2() interrupt 2// 外部中断1,接收信号
{
EX1=0;
TR1=0;
outcome2H=TH1;
outcome2L=TL1;
count2=outcome2H;
count2<<=8;
count2=count2|outcome2L;
count2=count2*34/2000;
TH1=0;
TL1=0;
       
}

voidtimer2(void) interrupt 5
{
display1();       
display2();       
}
/*void over()interrupt 1 //T0溢出为无效测量显示FFF;
{
u=10;
u=10;
u=10;
display();
TR0=0;
}
*/

void main()
{                                                  
      csbout=0;
      TH0=0;
      TL0=0;
                TH1=0;
                TL1=0;
      TMOD=0x11;
      EA=1;
                bj1=1;
      bj2=1;
                EX0=1;
                EX1=1;
                IT0=1;
                IT1=1;
                RCAP2H=(0xFFFF-500)/256;
          RCAP2L=(0xFFFF-500)%256;
                ET2=1;
                TR2=1;
                LED1=1;
                LED2=1;
                LED3=1;
                LED4=1;
                LED5=1;
                LED6=1;
                count1=0;
                count2=0;
while(1)
{
   
          
       csbfs();
      TR0=1;
                TR1=1;
          EX0=1;
                EX1=1;
               delay(1000);
      
}
}

gw140624 发表于 2013-4-16 20:26:24

接收后数码管只显示固定的数值,没有实时显示
页: [1]
查看完整版本: 求51单片机C程序----超声测距程序(一个发射两个接受)