找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2610|回復(fù): 0
收起左側(cè)

四路紅外線避障實驗源碼

[復(fù)制鏈接]
ID:253493 發(fā)表于 2018-3-18 10:59 | 顯示全部樓層 |閱讀模式
四路紅外線避障實驗單片機源程序如下:
  1. #include <REGX51.H>
  2. #include <INTRINS.H>
  3. //  演示如何控制智能車底盤前進 后退 左右轉(zhuǎn)動和停止
  4. //接線說明
  5. //51 單片機的P1口和智能車底板的J1口對應(yīng)關(guān)系
  6. //P10 -> EN12
  7. //P11 -> EN34
  8. //P12 -> IN1
  9. //P13 -> IN2
  10. //P14 -> IN3
  11. //P15 -> IN4

  12. //P34 -> SHCP
  13. //P35 -> STCP
  14. //P36 -> OE
  15. //P37 -> DAT

  16. //51 單片機的P3 、P2口和智能車底板的J2口對應(yīng)關(guān)系
  17. //P30 -> OUT1
  18. //P31 -> OUT2
  19. //P32 -> OUT3
  20. //P25 -> OUT4

  21. sbit SHCP =  P3^4;
  22. sbit STCP =  P3^5;
  23. sbit OE   =  P3^6;
  24. sbit DAT  =  P3^7;


  25. sbit EN12 =  P1^0;
  26. sbit EN34 =  P1^1;
  27. sbit IN1 =  P1^2;
  28. sbit IN2 =  P1^3;
  29. sbit IN3 =  P1^4;
  30. sbit IN4 =  P1^5;

  31. sbit OUT1 = P3^0;
  32. sbit OUT2 = P3^1;
  33. sbit OUT3 = P3^2;
  34. sbit OUT4 = P2^5;


  35. void Delay(int n)
  36. {
  37.         int i;
  38.         for(;n > 0;n--)
  39.                 for(i=0;i<0xffff;i++)
  40.                         ;
  41. }


  42. void front(void)
  43. {
  44.    EN12 = 1;
  45.    EN34 = 1;
  46.    IN1 = 0;
  47.    IN2 = 1;
  48.    IN3 = 0;
  49.    IN4 = 1;
  50. }

  51. void back(void)
  52. {
  53.    EN12 = 1;
  54.    EN34 = 1;
  55.    IN1 = 1;
  56.    IN2 = 0;
  57.    IN3 = 1;
  58.    IN4 = 0;
  59. }


  60. void left(void)
  61. {
  62.         EN12 = 1;
  63.            EN34 = 1;
  64.            IN1 = 1;
  65.            IN2 = 0;
  66.            IN3 = 0;
  67.            IN4 = 1;
  68. }

  69. void right(void)
  70. {
  71.         EN12 = 1;
  72.            EN34 = 1;
  73.            IN1 = 0;
  74.            IN2 = 1;
  75.            IN3 = 1;
  76.            IN4 = 0;
  77. }


  78. void stop(void)
  79. {
  80.   EN12 = 0;
  81.   EN34 = 0;       
  82. }




  83. void adjust_speed(char num)
  84. {
  85.         char dat,i;
  86.         dat = num;
  87.         OE = 0;
  88.         SHCP = 0;
  89.         STCP = 0;
  90.         for(i =0;i<8;i++)
  91.         {
  92.                  if(dat & 0x80)
  93.                  {
  94.                         DAT =1;
  95.                  }
  96.                  else
  97.                  {
  98.                          DAT = 0;
  99.                 }
  100.                 _nop_();
  101.                 _nop_();
  102.                 SHCP =         1;
  103.                 _nop_();
  104.                 _nop_();
  105.                 SHCP =         0;
  106.                 dat <<=1;
  107.         }

  108.         STCP = 1;
  109.           OE = 0;
  110. }



  111. void main(void)
  112. {
  113.         adjust_speed(150);
  114.         while(1)
  115.         {
  116.                 if(OUT4)
  117.                 {
  118.                         right();
  119.                         Delay(1);
  120.                 }
  121.        
  122.                 if(OUT3)
  123.                 {
  124.                         left();
  125.                         Delay(1);
  126.                 }
  127.        
  128.                 if(OUT2)
  129.                 {
  130.                         right();
  131.                         Delay(1);
  132.                 }
  133.        
  134.                 if(OUT1)
  135.                 {
  136.                         left();
  137.                         Delay(1);
  138.                 }
  139.        
  140.                
  141.                
  142.                 if((OUT4 == 0) &&(OUT3 == 0) && (OUT2 == 0) &&(OUT1 == 0))
  143.                 {
  144.                         front();
  145.                 }
  146.         }
  147.        
  148. }
復(fù)制代碼

所有資料51hei提供下載:
四路紅外線避障實驗.rar (28.41 KB, 下載次數(shù): 8)



評分

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

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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