標題: 我的超聲波測距程序 [打印本頁]

作者: 犒匹    時間: 2018-1-4 18:31
標題: 我的超聲波測距程序
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uchar xms);//延時大概x毫秒
void display(uchar number);               
void main(void);
void count(void);
void didi();
sbit Trig=P1^3; //超聲波發(fā)射端
sbit Echo=P1^2; //接
sbit g=P2^5;
sbit s=P2^4;                                                  
sbit beep=P2^2;         //報警
sbit led=P2^0;
bit flag=0;
uint time=0;
uint timer=0;         
uint M;
code uchar buf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}共陽
/******************************************/
void delay(uint z)
{
        uint i,j;
        for(i=z;i>0;i--)
         for(j=640;j>0;j--);
}
/**********************************************/
void display(uchar number)               
{
/******************************************/
        g = 0;
        s = 1;
        P0 = buf[number%10];
        delay(1);
        P0 = 0xff;
/******************************************/
    g = 1;
        s = 0;
        P0 = buf[number/10%10];
        delay(1);
/**********************************************/
void main(void)
{          
      TMOD=0X11; //定時器工作方式1,GATE=1;
      TH0=0;
      TL0=0;
               ET0=1;         //T0中斷
          ET1=1;         //T1中斷
          TR1=0;         //開啟定時器
      EA=1; //開總中斷
  while(1)
{           
    while(!Echo); //當RX為零時等待

    while(Echo); //當RX為1時計數(shù)并等待

  didi();
         }       
}

/****************************************************/
void count(void)
{       

    time=TH0*256+TL0;
    TH0=0;
    TL0=0; //清零
    M=(time*1.7)/100;//厘米
    for(M>=1;M<=20;flag==1)//范圍0--5米
         {
          int k;
        while(1)
        {
         for(k=0;k<=999;k++)
         {


        display(k);
       

          
         }
        }
           }                         

        }






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1