久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14317|回復: 10
打印 上一主題 下一主題
收起左側

超聲波避障源程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:317966 發表于 2018-4-27 18:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


#include <reg52.h>//51頭文件
#include <intrins.h>   //包含nop等系統函數

sbit RX = P2^0;//ECHO超聲波模塊回響端
sbit TX = P2^1;//TRIG超聲波模塊觸發端

unsigned char pwm_left_val = 150;//左電機占空比值 取值范圍0-170,0最快
unsigned char pwm_right_val = 150;//右電機占空比值取值范圍0-170 ,0最快
unsigned char pwm_t;//周期
unsigned int  time = 0;//傳輸時間
unsigned long S = 0;//距離
bit      flag = 0;//超出測量范圍標志位


void delay(unsigned int z)//毫秒級延時
{
        unsigned int x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);
}
void Delay10us(unsigned char i)            //10us延時函數 啟動超聲波模塊時使用
{
   unsigned char j;
        do{
                j = 10;
                do{
                        _nop_();
                }while(--j);
        }while(--i);
}
/*小車前進*/
void forward()
{
        left_motor_go; //左電機前進
        right_motor_go; //右電機前進
}

/*小車后退*/
void backward()
{
        left_motor_back; //左電機后退
        right_motor_back; //右電機后退       
}

/*定時器1中斷輸出PWM信號*/
void timer1() interrupt 3
{
        pwm_t++;//周期計時加
        if(pwm_t == 255)
                pwm_t = EN1 = EN2 = 0;
        if(pwm_left_val == pwm_t)//左電機占空比       
                EN1 = 1;               
        if(pwm_right_val == pwm_t)//右電機占空比
                EN2 = 1;                         
}

/*判斷S2是否被按下*/
void keyscan()
{
        for(;;)        //死循環
        {
                if(key_s2 == 0)// 實時檢測S2按鍵是否被按下
                {
                        delay(5); //軟件消抖
                        if(key_s2 == 0)//再檢測S2是否被按下
                        {
                                while(!key_s2);//松手檢測
                                beep = 0;        //使能有源蜂鳴器
                                delay(200);//200毫秒延時
                                beep = 1;        //關閉有源蜂鳴器
                                break;                //退出FOR死循環
                        }
                }
        }       
}

/*定時器0中斷*/
void timer0() interrupt 1        //T0中斷用來計數器溢出,超過測距范圍
{
        flag=1;                                                         //中斷溢出標志                         
}
void  StartModule()                          //啟動超聲波模塊
{
          TX=1;                                             //啟動一次模塊
      Delay10us(2);
          TX=0;
}

/*計算超聲波所測距離并顯示*/
void Conut()
{
        time=TH0*256+TL0;
        TH0=0;
        TL0=0;
       
        S=(float)(time*1.085)*0.17;     //算出來是MM
        if((S>=7000)||flag==1) //超出測量范圍
        {         
                flag=0;

        }
}



/*超聲波避障*/
void        Avoid()
{
        if(S > 150)//設置避障距離(單位毫米)
        {
                forward();
        }
        else
        {
                backward();       
        }
}
       
void main()
{
        keyscan();//等待按鍵按下啟動
        delay(1000);//延時1秒
        TMOD |= 0x20;//定時器1工作模式2,8位自動重裝。用于產生PWM
        TMOD |= 0x01;//定時器0工作模塊1,16位定時模式。T0用測ECH0脈沖長度
        TH1 = 220; //
        TL1 = 220; //100HZ T1
        TH0        = 0;
    TL0        = 0;//T0,16位定時計數用于記錄ECHO高電平時間         
    ET1        = 1;//允許T1中斷
        ET0 = 1;//允許T0中斷
        TR1 = 1;//啟動定時器1
        EA  = 1;//啟動總中斷
        while(1)
        {               
                 StartModule();        //啟動模塊測距
                 while(!RX);                //當RX(ECHO信號回響)為零時等待
                 TR0=1;                            //開啟計數
                 while(RX);                        //當RX為1計數并等待
                 TR0=0;                                //關閉計數
             Conut();                        //計算距離
                 Avoid();                        //避障
                 delay(65);       
        }
}

16、超聲波實現魔術手實驗.zip

46.42 KB, 下載次數: 91, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:321034 發表于 2018-5-21 16:50 | 只看該作者
LZ, 我借用你的占空比程序 用在我編寫的程序上面,沒有效果啊,速度還是那么快~  是那個地方的問題呢
回復

使用道具 舉報

板凳
ID:595011 發表于 2019-8-5 21:47 | 只看該作者
按鍵是定義的嗎 想問一下這個按鍵是哪個呀
回復

使用道具 舉報

地板
ID:324611 發表于 2019-8-15 13:43 | 只看該作者
學習下。
回復

使用道具 舉報

5#
ID:506687 發表于 2019-8-28 10:07 | 只看該作者
看的還是比較明白
回復

使用道具 舉報

6#
ID:353061 發表于 2019-9-5 16:03 | 只看該作者
很有用,感謝分享。
回復

使用道具 舉報

7#
ID:608128 發表于 2019-9-7 10:10 | 只看該作者
很完整,值得參考
回復

使用道具 舉報

8#
ID:616032 發表于 2019-9-25 09:31 | 只看該作者
樓主,請問有對應的電路圖嗎?
回復

使用道具 舉報

9#
ID:28260 發表于 2021-6-27 18:40 | 只看該作者

已拜讀,非常完整,值得參考!
回復

使用道具 舉報

10#
ID:981733 發表于 2021-11-17 11:08 | 只看該作者
樓主必須要按鍵嗎
回復

使用道具 舉報

11#
ID:969453 發表于 2022-2-28 17:19 | 只看該作者
小車其他接線沒有了嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品成人一区二区 | 久久久精品久 | 天天综合网天天综合 | 午夜视频免费 | 国产精品精品久久久 | 日韩在线视频播放 | 性欧美精品一区二区三区在线播放 | 天天搞天天操 | 亚洲视频在线看 | 新av在线 | 激情婷婷 | 精品在线免费看 | 99精品视频在线观看 | 国产精品久久久久久久久久了 | 五月综合激情婷婷 | 99热精品6| 免费观看国产视频在线 | 久久久蜜桃 | 国产成人精品久久二区二区91 | 国产精品片aa在线观看 | 国产探花在线观看视频 | 黄色小视频入口 | 欧美精品久久久 | 亚洲区视频 | 精品少妇一区二区三区在线播放 | 日韩精品av一区二区三区 | 久久免费精彩视频 | 亚洲 中文 欧美 日韩 在线观看 | 久久久久国产一区二区三区四区 | 色婷婷九月 | 一区二区在线免费观看视频 | 午夜在线观看视频 | 欧美精品在线一区二区三区 | 天天色综| 国产高清在线观看 | 一区免费 | 欧美高清视频在线观看 | 五月激情综合 | 国产精品久久久久久52avav | 欧美成人第一页 | 在线观看中文字幕 |