欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3919|回復: 1
收起左側

HY-SRF05 超聲波測距模塊 DEMO 程序

[復制鏈接]
ID:205336 發表于 2017-5-27 10:58 | 顯示全部樓層 |閱讀模式
/***********************************************************************************************************/
//HY-SRF05 超聲波測距模塊 DEMO 程序
//晶振:11。0592
//接線:模塊TRIG接 P3.7  ECH0 接P3.6
//串口波特率9600
/***********************************************************************************************************/         
        #include   <AT89X51.H>
        #include   <intrins.h>
    #include   <STDIO.H>

    #define uchar unsigned  char
    #define uint  unsigned   int  
        #define  RX  P3_6
    #define  TX  P3_7


        unsigned int  time=0;
        unsigned int  timer=0;
        float         S=0;
    bit           flag =0;
        

/********************************************************/
    void Conut(void)
        {
         time=TH0*256+TL0;
         TH0=0;
         TL0=0;
         S=(time*1.88)/10;     //算出來是MM
         if((S>=7000)||flag==1) //超出測量范圍顯示“-”
         {         
          flag=0;
          printf("-----\n");
         }
         else
         {
          printf("S=%f\n",S);
          }
        }
/********************************************************/
void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}
/********************************************************/
     void zd0() interrupt 1                  //T0中斷用來計數器溢出,超過測距范圍
  {
    flag=1;                                                         //中斷溢出標志
        RX=0;
  }

void Timer_Count(void)
{
                 TR0=1;                            //開啟計數
             while(RX);                        //當RX為1計數并等待
             TR0=0;                                //關閉計數
         Conut();                        //計算

}
/********************************************************/
   void  StartModule()                          //T1中斷用來掃描數碼管和計800MS啟動模塊
  {
          TX=1;                                         //800MS  啟動一次模塊
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          TX=0;
  }
/********************************************************/
void main(void)
{  
    unsigned int valA;
        TMOD=0x21;                   //設T0為方式1,GATE=1;
        SCON=0x50;
        TH1=0xFD;
        TL1=0xFD;
        TH0=0;
        TL0=0;
        TR0=1;  
        ET0=1;             //允許T0中斷
        TR1=1;                           //開啟定時器
        TI=1;

        EA=1;                           //開啟總中斷


         while(1)
          {
               
                delayms(60);
                RX=1;
            StartModule();
        for(valA=7510;valA>0;valA--)
            {
                  
               if(RX==1)
                   {
           Timer_Count();
                   }
             }
          }

}              
回復

使用道具 舉報

ID:313510 發表于 2018-4-22 09:11 | 顯示全部樓層
  printf("-----\n"); 這是什么意思,求大神解釋
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表