找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2518|回復(fù): 0
收起左側(cè)

51板,超聲波測距串口顯示程序,一直是亂碼,程序邏輯很簡單,51大佬幫忙看一下...

[復(fù)制鏈接]
ID:277307 發(fā)表于 2018-1-18 11:15 | 顯示全部樓層 |閱讀模式
//接線:模塊TRIG接 P1.2  ECH0 接P1.1
//串口波特率9600
/***********************************************************************************************************/          
        #include   <AT89X51.H>
        #include   <intrins.h>
    #include   <STDIO.H>

    #define uchar unsigned  char
    #define uint  unsigned   int  
        #define  RX  P1_1
    #define  TX  P1_2


        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.87)/100;     //算出來是CM
         if(flag==1)                    //超出測量
         {
          flag=0;
          printf("-----\n");
         }

          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中斷用來計(jì)數(shù)器溢出,超過測距范圍
  {
    flag=1;                                                         //中斷溢出標(biāo)志
  }
/********************************************************/
   void  StartModule()                          //T1中斷用來掃描數(shù)碼管和計(jì)800MS啟動(dòng)模塊
  {
          TX=1;                                         //800MS  啟動(dòng)一次模塊
          _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)
{  
    TMOD=0x21;                   //設(shè)T0為方式1,GATE=1;
        SCON=0x50;
        TH1=0xFD;
        TL1=0xFD;
        TH0=0;
        TL0=0;
        TR0=1;  
        ET0=1;             //允許T0中斷
        TR1=1;                           //開啟定時(shí)器
        TI=1;

        EA=1;                           //開啟總中斷


        while(1)
        {
         StartModule();
         while(!RX);                //當(dāng)RX為零時(shí)等待
         TR0=1;                            //開啟計(jì)數(shù)
         while(RX);                        //當(dāng)RX為1計(jì)數(shù)并等待
         TR0=0;                                //關(guān)閉計(jì)數(shù)
     Conut();                        //計(jì)算
         delayms(100);                //100MS

        }

}              

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表