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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于STC89C52單片機的紅外線遙小車實現(xiàn)源碼

[復(fù)制鏈接]
ID:280773 發(fā)表于 2018-2-12 09:40 | 顯示全部樓層 |閱讀模式
基于STC89C52單片機的小車實現(xiàn)
責(zé)任描述:
一、完成小車的原理設(shè)計和焊接。
二、用Keil4編寫單片機實現(xiàn)了五個功能:1.紅外線遙控前進(jìn)后退轉(zhuǎn)彎功能。2.小車地面尋跡功能。3.超聲波感應(yīng)避障功能。4.光敏感應(yīng)行走功能。
ps:最后有文檔源代碼。

下載:
源代碼.docx (14.22 KB, 下載次數(shù): 21)

單片機源程序:
  1. #include <REGX52.H>
  2. #include <intrins.h>
  3. sbit LeftLed=P2^0;                        
  4. sbit RightLed=P0^7;                       
  5. sbit FontLled=P1^7;

  6. sbit LeftIR=P3^5;                        
  7. sbit RightIR=P3^6;                        
  8. sbit FontIR=P3^7;                        

  9. sbit M1A=P0^0;                           
  10. sbit M1B=P0^1;                           

  11. sbit M2A=P0^2;                           
  12. sbit M2B=P0^3;                           

  13. sbit B1=P0^4;                             
  14. sbit SB1=P0^6;                           
  15. sbit IRIN=P3^3;                                       

  16. unsigned char code  LedShowData[]={0x03,0x9F,0x25,0x0D,0x99,  
  17.                                    0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9
  18. unsigned char code  RecvData[]={0x19,0x46,0x15,0x43,0x44,0x40,0x0D,0x0E,0x00,0x0F};
  19. unsigned char IRCOM[7];
  20. static unsigned int LedFlash;                        
  21. bit EnableLight=0;                                    
  22. #define ShowPort P2                                   
  23. unsigned char temp = 1;
  24. void tingzhi()
  25. {
  26.    M1A=0;                                   
  27.    M1B=0;                                   
  28.    M2A=0;                                   
  29.    M2B=0;

  30. }

  31. void qianjin()
  32. {
  33.    M1A=1;                                   
  34.    M1B=0;                                   
  35.    M2A=1;                                   
  36.    M2B=0;
  37. }

  38. void houtui()
  39. {
  40.    M1A=0;                                   
  41.    M1B=1;                                   
  42.    M2A=0;                                   
  43.    M2B=1;
  44. }

  45. void zuozhuan()
  46. {
  47.    M1A=0;                                   
  48.    M1B=1;                                   
  49.    M2A=1;                                   
  50.    M2B=0;
  51. }

  52. void youzhuan()
  53. {
  54.    M1A=1;                                   
  55.    M1B=0;                                   
  56.    M2A=0;                                   
  57.    M2B=1;
  58. }

  59. void Delay1ms(unsigned int i)
  60. {
  61. unsigned char j,k;
  62. do{
  63.   j = 10;
  64.   do{
  65.    k = 50;
  66.    do{
  67.     _nop_();
  68.    }while(--k);     
  69.   }while(--j);
  70. }while(--i);

  71. }

  72. void delay_nus(unsigned int i)  
  73. {
  74.   i=i/10;
  75.   while(--i);
  76. }   
  77. void delay_nms(unsigned int n)  
  78. {
  79.   n=n+1;
  80.   while(--n)  
  81.   delay_nus(900);         
  82.   
  83. }  

  84. void delayms(unsigned char x)                        
  85. {
  86.   unsigned char i;                                   
  87.   while(x--)                                         
  88.   {
  89.     for (i = 0; i<13; i++) {}                        
  90.   }
  91. }

  92. void Delay()                                          
  93. {
  94.   unsigned int DelayTime=30000;                       
  95.   while(DelayTime--);                                 
  96.   return;                                             
  97. }
  98. void ControlCar(unsigned char ConType)   
  99. {

  100.   tingzhi();
  101. switch(ConType)                          
  102. {
  103.   case 1:  //前進(jìn)                        
  104.   {
  105.     //tingzhi();                                                     
  106.         //Delay1ms(50);
  107.         LeftLed = 0 ;
  108.         qianjin();
  109.     break;
  110.   }
  111.   case 2: //后退                        
  112.   {
  113.    // tingzhi();                                                              
  114.    // Delay1ms(50);
  115.     LeftLed = 1 ;         
  116.         houtui();                                
  117.     break;
  118.   }
  119.   case 3: //左轉(zhuǎn)                          
  120.   {
  121.      //tingzhi();                                                                  
  122.         // Delay1ms(50);
  123.          zuozhuan();                              
  124.          break;
  125.   }
  126.   case 4: //右轉(zhuǎn)                          
  127.   {
  128.    // tingzhi();                                                                  
  129. //        Delay1ms(50);
  130.         youzhuan();                                
  131.                                           
  132.         break;
  133.   }
  134.   case 8: //停止                          
  135.   {
  136.     tingzhi();
  137.         break;                                
  138.   }
  139. }
  140. }

  141. void ControlCar_yaokong(unsigned char ConType)   
  142. {

  143.   tingzhi();
  144. switch(ConType)                          
  145. {
  146.   case 1:  //前進(jìn)                        
  147.   {
  148.     tingzhi();                                                      
  149.         Delay1ms(150);
  150.         LeftLed = 0 ;
  151.         qianjin();
  152.     break;
  153.   }
  154.   case 2: //后退                          
  155.   {
  156.     tingzhi();                                                              
  157.     Delay1ms(150);
  158.     LeftLed = 1 ;         
  159.         houtui();                                
  160.     break;
  161.   }
  162.   case 3: //左轉(zhuǎn)                          
  163.   {
  164.      tingzhi();                                                                  
  165.          Delay1ms(150);
  166.          zuozhuan();                              
  167.          break;
  168.   }
  169.   case 4: //右轉(zhuǎn)                          
  170.   {
  171.      tingzhi();                                                                  
  172.          Delay1ms(150);
  173.      youzhuan();                                
  174.           break;
  175.   }
  176.   case 8: //停止                          
  177.   {
  178.     tingzhi();
  179.         break;                              
  180.   }
  181. }
  182. }
  183. void Robot_Avoidance()                  
  184. {

  185.    LeftLed=LeftIR;                        
  186.    RightLed=RightIR;                     
  187.    FontLled= FontIR;
  188.    SB1=FontIR;

  189.     if(FontIR == 0)                          
  190.    {
  191.       ControlCar(8);                       
  192.       delay_nms (300);                                          
  193.           ControlCar(2);                                          
  194.           delay_nms (1000);                                          
  195.           ControlCar(3);                                          
  196.           delay_nms (1800);        
  197.   }
  198.    else
  199.    {
  200.       ControlCar(1);                     
  201.       delay_nms (10);
  202.    }
  203.     ControlCar(1);
  204. }
  205. //機器人循跡子程序
  206. void Robot_Traction()                     
  207. {
  208.    LeftLed=LeftIR;                        
  209.    RightLed=RightIR;                     
  210.    FontLled= FontIR;
  211.    SB1=LeftIR;
  212.    if(LeftIR == 0 && RightIR == 0)   
  213.    {
  214.       ControlCar(1);                     
  215.       delay_nms (10);
  216.    }
  217.    
  218.    else if(LeftIR == 0 && RightIR == 1)
  219.    {
  220.       ControlCar(3);                     
  221.       delay_nms (10);
  222.    }

  223.    else if(LeftIR == 1 && RightIR == 0)
  224.    {
  225.       ControlCar(4);                     
  226.       delay_nms (10);
  227.    }
  228.     ControlCar(8);
  229. }

  230. void main()                              
  231. {
  232.   
  233.   bit RunFlag=0;                          
  234.   LedFlash=3000;                                       
  235.   //EX1=1;                                               
  236.   IT1=1;                                               
  237.   EA=1;                                                
  238.   ControlCar(8);                          
  239.   while(1)                                
  240.   {
  241.              if(P3_2 == 0)
  242.           {
  243.            delay_nms(10);
  244.            if(P3_2 == 0)
  245.            {
  246.                      temp++;
  247.                   while(!P3_2);
  248.            }
  249.           }
  250.           if(temp > 3)
  251.           {
  252.           temp = 1;
  253.           }
  254.           switch(temp)
  255.           {
  256.                    case 1:        ShowPort = LedShowData[1];Robot_Traction();EX1 = 0;break;
  257.                 case 2: ShowPort = LedShowData[2];Robot_Avoidance();EX1 = 0;break;
  258.                 case 3: ShowPort = LedShowData[3];EX1 = 1;break;
  259.           }
  260.   }
  261. }
  262. //----------紅外遙控-------------------------------------------------------------
  263. void IR_IN() interrupt 2 using 0                     
  264. {
  265.   unsigned char j,k,N=0;                              
  266.    
  267.   EX1 = 0;                                             
  268.   delayms(15);                                       
  269.   if (IRIN==1)                                       
  270.   {  
  271.      EX1 =1;                                         
  272.          return;                                       
  273.   }
  274.                            
  275.   while (!IRIN)                                    
  276.   {
  277.       delayms(1);                                   
  278.   }

  279.   for (j=0;j<4;j++)                                
  280.   {
  281.     for (k=0;k<8;k++)                              
  282.     {
  283.        while (IRIN)                                 
  284.        {
  285.          delayms(1);                              
  286.        }
  287.       
  288.        while (!IRIN)                                
  289.        {
  290.          delayms(1);                              
  291.        }
  292.    
  293.        while (IRIN)                                
  294.        {
  295.          delayms(1);                                
  296.          N++;                                      
  297.          if (N>=30)                              
  298.              {
  299.            EX1=1;                                 
  300.                return;                                   
  301.          }                  
  302.        }
  303.                                        
  304.       IRCOM[j]=IRCOM[j] >> 1;                        
  305.      
  306.       if (N>=8)                                      
  307.       {
  308.          IRCOM[j] = IRCOM[j] | 0x80;                  
  309.       }
  310.       N=0;                                         
  311.     }
  312.   }
  313.    
  314.   if (IRCOM[2]!=~IRCOM[3])                           
  315.   {
  316.      EX1=1;                                          
  317.      return;                                         
  318.   }

  319.   for(j=0;j<10;j++)                                   
  320.    {
  321.       if(IRCOM[2]==RecvData[j])                     
  322.       {
  323.        // ControlCar(j);
  324.                 ControlCar_yaokong(j);                              
  325.       }
  326.    }
  327.    EX1 = 1;                                         
  328. }
  329. //-------------------------------------------------------------------------------------------------------
復(fù)制代碼


回復(fù)

使用道具 舉報

ID:493533 發(fā)表于 2019-4-11 14:57 | 顯示全部樓層
調(diào)速的怎么改啊
回復(fù)

使用道具 舉報

ID:462827 發(fā)表于 2019-4-12 19:21 | 顯示全部樓層
小車是買成品還是散件自己裝?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 18gay男同69亚洲网站 | 欧美成人精品 | 国产成人精品一区二 | 在线看片福利 | 久久精品无码一区二区三区 | 日韩久久综合网 | 亚洲综合视频一区 | 国产精品地址 | 久草色视频 | 成人h视频在线 | 国产精品一区二区无线 | 中文字幕成人免费视频 | 久久的色| 久久69精品久久久久久久电影好 | 日本一级淫片免费啪啪3 | 成人在线免费观看 | 精品在线一区 | 日韩视频在线免费观看 | 欧美激情一区二区三级高清视频 | chinese中国真实乱对白 | 成人污污视频 | 91精品国产91久久久久青草 | 精品免费国产一区二区三区四区 | 野狼在线社区2017入口 | 免费国产视频在线观看 | 中文字幕日韩在线 | 在线欧美视频 | 人人看人人搞 | 欧美精品网站 | 日韩超碰 | 黄色毛片大全 | 精品国产乱码久久久久久蜜柚 | 欧美一区二区三区在线观看 | 精品产国自在拍 | 久久久久国产精品一区三寸 | 成人自拍视频网站 | 成人a在线| 不卡一二三区 | 久久久一区二区三区 | 亚洲免费视频在线观看 | 自拍视频精品 |