找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 7179|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

紅外避障小車(chē)程序框架

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:139660 發(fā)表于 2016-10-16 20:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
紅外避障.rar (795 Bytes, 下載次數(shù): 52)

  1. #include<reg52.h>                                                                                                                                                                                                                                                                                                                                                               #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit IN3=P0^1;                //右輪
  5. sbit IN4=P0^2;                                         
  6. sbit ENB=P0^0;                //使能端A

  7. sbit IN1=P1^1;                //左輪
  8. sbit IN2=P1^2;                                         
  9. sbit ENA=P1^0;                 //使能端B

  10. sbit left_ir=P3^2;
  11. sbit right_ir=P3^3;

  12. uchar t;
  13. uchar speedL,speedR;

  14. void init()
  15. {
  16.         TMOD=0x01;                //8位自動(dòng)重裝
  17.         TH0=(65536-20000)/256;         //發(fā)生依次中斷需要20ms
  18.         TL0=(65536-20000)%256;
  19.         ET0=1;
  20.         EA=1;
  21.         TR0=1;
  22. }

  23. void forward(uchar speed1,uchar speed2)                 //左右輪都正轉(zhuǎn)==前進(jìn)                        //speed>=0&&speed<=100; time=speed*200us
  24. {
  25.         speedL=speed1;
  26.         ENA=1;
  27.         IN1=0;
  28.         IN2=1;

  29.         speedR=speed2;
  30.         ENB=1;
  31.         IN3=1;
  32.         IN4=0;               
  33. }

  34. void backward(uchar speed3,uchar speed4)                   //左右輪都反轉(zhuǎn)==后退
  35. {
  36.         speedL=speed3;
  37.         ENA=1;
  38.         IN1=1;
  39.         IN2=0;

  40.         speedR=speed4;                          
  41.         ENB=1;
  42.         IN3=0;
  43.         IN4=1;
  44. }

  45. void turn_right(uchar speed5,uchar speed6)           //右轉(zhuǎn)
  46. {
  47.         speedL=speed5;
  48.         ENA=1;
  49.         IN1=0;                                //左輪正轉(zhuǎn)
  50.         IN2=1;

  51.         speedR=speed6;                        //右輪反轉(zhuǎn)
  52.         ENB=1;
  53.         IN3=0;
  54.         IN4=1;
  55. }

  56. void turn_left(uchar speed7,uchar speed8) //左轉(zhuǎn)
  57. {
  58.         speedL=speed7;            //左輪反轉(zhuǎn)
  59.         ENA=1;
  60.         IN1=1;
  61.         IN2=0;

  62.         speedR=speed8;                //右輪正轉(zhuǎn)
  63.         ENB=1;
  64.         IN3=1;
  65.         IN4=0;               
  66. }


  67. void main()
  68. {
  69.         init();
  70.         while(1)
  71.         {
  72.                 if(left_ir==0&&right_ir==0)
  73.                 {
  74.                         backward(30,50);
  75.                 }
  76.                 else if(left_ir==0)
  77.                 {
  78.                         turn_right(30,30);
  79.                 }        
  80.                 else if(right_ir==0)
  81.                 {
  82.                         turn_left(30,30);
  83.                 }
  84.                 else
  85.                 {
  86.                         forward(30,30);
  87.                 }
  88.         }

  89. }

  90. void Timer0() interrupt 1
  91. {
  92.         if(ENA==1)
  93.         {
  94.                 TH0=(65536-speedL)/256;
  95.                 TL0=(65536-speedL)%256;
  96.                 ENA=0;
  97.         }
  98.         if(ENB==1)
  99.         {
  100.                 TH0=(65536-speedR)/256;
  101.                 TL0=(65536-speedR)%256;
  102.                 ENB=0;
  103.         }
  104.         if(ENA==0)
  105.         {
  106.                 TH0=(65536-20000+speedL)/256;
  107.                 TL0=(65536-20000+speedL)%256;
  108.                 ENA=1;
  109.         }
  110.         if(ENB==0)
  111.         {
  112.                 TH0=(65536-20000+speedR)/256;
  113.                 TL0=(65536-20000+speedR)%256;
  114.                 ENB=1;
  115.         }
  116. }

復(fù)制代碼


評(píng)分

參與人數(shù) 2黑幣 +64 收起 理由
zhangyan951017 + 4 很給力!
admin + 60 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:218757 發(fā)表于 2017-7-12 13:01 | 只看該作者
真心不錯(cuò),終于找到了
回復(fù)

使用道具 舉報(bào)

板凳
ID:219418 發(fā)表于 2017-7-13 23:41 | 只看該作者
棒,頂你
回復(fù)

使用道具 舉報(bào)

地板
ID:219756 發(fā)表于 2017-7-14 20:49 | 只看該作者
紅外避障小車(chē)程序框架
回復(fù)

使用道具 舉報(bào)

5#
ID:238009 發(fā)表于 2017-11-30 11:44 來(lái)自觸屏版 | 只看該作者
不錯(cuò),頂一手
回復(fù)

使用道具 舉報(bào)

6#
ID:236796 發(fā)表于 2018-3-20 09:44 | 只看該作者
很棒!
回復(fù)

使用道具 舉報(bào)

7#
ID:292214 發(fā)表于 2018-4-30 04:03 | 只看該作者
請(qǐng)問(wèn)有注釋嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:319762 發(fā)表于 2018-5-12 00:18 | 只看該作者
看起來(lái)不錯(cuò)的   學(xué)學(xué)咯
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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