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

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

QQ登錄

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

搜索
查看: 6704|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

智能車資料 有單片機(jī)源碼,原理圖和PCB庫(kù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:224914 發(fā)表于 2017-11-16 20:54 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
智能車的原理圖如下:



單片機(jī)源程序:
  1. include "reg52.h"
  2. # include<intrins.h>

  3. //定義全局變量

  4. char count=0,cheer=0;         //  調(diào)節(jié)占空比
  5. char left=0,right=0;  // 左右輪速度          可在主函數(shù)中修改
  6. char duojizhongzhi=0;       // 舵機(jī)中值
  7. //  定義I/O口
  8. //  定義 紅外檢測(cè)  電機(jī)引腳 舵機(jī)   以上IO口可修改  
  9. //  定義 紅外檢測(cè)         

  10. sbit hw1=P2^0;
  11. sbit hw2=P2^1;
  12. sbit hw3=P2^2;
  13. sbit hw4=P2^3;
  14. sbit hw5=P2^4;
  15. sbit hw6=P2^5;
  16. sbit hw7=P2^6;
  17. sbit hw8=P2^7;

  18. //定義電機(jī)I/O口          可修改

  19. sbit dianji1=P1^0;
  20. sbit dianji2=P1^1;
  21. sbit dianji3=P1^2;
  22. sbit dianji4=P1^3;

  23. // 定義舵機(jī)         I/O口          可修改

  24. sbit duoji=P1^7;

  25. //  申明 自定義函數(shù)          // 不懂勿動(dòng)
  26. void time1init();
  27. void time0init();

  28. // 紅外檢測(cè)情況          如果用少于8個(gè)紅外  可自行刪減
  29. int hongwaijiance ()                //8個(gè)紅外檢測(cè)黑線情況   返回值為 整形
  30. {                                                                                //紅外信號(hào)為1檢測(cè)白,為0檢測(cè)黑(不一定,根據(jù)情況自行調(diào)整0和1)
  31.         if((hw1==0)&&(hw2==1)&&(hw3==1)&&(hw4==1)&&(hw5==1)&&(hw6==1)&&(hw7==1)&&(hw8==1)        )  //左邊第一個(gè)檢測(cè)到黑線并且其余
  32.                 return 1;                                                                                                                                                                                                                                                                                                   //7個(gè)檢測(cè)白,此時(shí)返回1
  33.         
  34.         if((hw1==1)&&(hw2==0)&&(hw3==1)&&(hw4==1)&&(hw5==1)&&(hw6==1)&&(hw7==1)&&(hw8==1)        )          // 左邊第二個(gè)檢測(cè)黑線并且其余7個(gè)
  35.                 return 2;                                                                                                                                                                                                                                                                                                                //檢測(cè)白,此時(shí)返回2
  36.         
  37.         if((hw1==1)&&(hw2==1)&&(hw3==0)&&(hw4==1)&&(hw5==1)&&(hw6==1)&&(hw7==1)&&(hw8==1)        )        //
  38.                 return 3;
  39.         
  40.         if((hw1==1)&&(hw2==1)&&(hw3==1)&&(hw4==0)&&(hw5==1)&&(hw6==1)&&(hw7==1)&&(hw8==1)        )        //
  41.                 return 4;
  42.         
  43.         if((hw1==1)&&(hw2==1)&&(hw3==1)&&(hw4==1)&&(hw5==0)&&(hw6==1)&&(hw7==1)&&(hw8==1)        )         //
  44.                 return 5;
  45.         
  46.         if((hw1==1)&&(hw2==1)&&(hw3==1)&&(hw4==1)&&(hw5==1)&&(hw6==0)&&(hw7==1)&&(hw8==1)        )        //
  47.                 return 6;
  48.         
  49.         if((hw1==1)&&(hw2==1)&&(hw3==1)&&(hw4==1)&&(hw5==1)&&(hw6==1)&&(hw7==0)&&(hw8==1)        )        //
  50.                 return 7;
  51.         
  52.         if((hw1==1)&&(hw2==1)&&(hw3==1)&&(hw4==1)&&(hw5==1)&&(hw6==1)&&(hw7==1)&&(hw8==0)        )        //
  53.                 return 8;
  54.                                                                                        
  55.                 return 0;         // 以上情況都沒(méi)有  什么都不執(zhí)行
  56. }

  57. //     延時(shí)函數(shù)  延時(shí)2S             用于延時(shí)啟動(dòng)

  58. void delay2s()   //誤差 0us
  59. {
  60.     unsigned char a,b,c,n;
  61.     for(c=167;c>0;c--)
  62.         for(b=39;b>0;b--)
  63.             for(a=152;a>0;a--);
  64.     for(n=1;n>0;n--);
  65. }

  66. //      主函數(shù)
  67. void main()
  68. {
  69.     char Data,Data_1;
  70.         time0init();          // 定時(shí)器函數(shù)
  71.         time1init();          // 定時(shí)器函數(shù)
  72.         left=50;    // 左輪速度
  73.         right=50;        // 右輪速度
  74.         duojizhongzhi=15;        //  舵機(jī)中值
  75.         delay2s();   //  延時(shí)啟動(dòng)
  76.         while(1)
  77.                 {   
  78.                         Data=hongwaijiance();                        //對(duì)變量 Data 賦值
  79.                         if(Data == 0)                        //
  80.                                 Data=Data_1;                //
  81.                         Data_1=Data;                        //這4句使車沖出去后能自己回來(lái)
  82.                         //  停車程序  
  83.                     if((hw1==0)&&(hw2==0)&&(hw3==0)&&(hw4==0)&&(hw5==0)&&(hw6==0)&&(hw7==0)&&(hw8==0)        )
  84.                     {
  85.                                 _nop_();
  86.                                 _nop_();
  87.                         if ( (hw1==0)&&(hw2==0)&&(hw3==0)&&(hw4==0)&&(hw5==0)&&(hw6==0)&&(hw7==0)&&(hw8==0) )
  88.                                 {
  89.                                         left=0;
  90.                                         right=0;
  91.                                         duojizhongzhi=16;     //  此時(shí)該值為舵機(jī)在最中央位置的值   也就是中值
  92.                                 }
  93.                     }
  94.                         switch(Data)                        //switch語(yǔ)句對(duì)之前紅外檢測(cè)情況進(jìn)行處理(由實(shí)際情況調(diào)整里面各變量數(shù)值)
  95.                         {                          

  96.                         case 1: duojizhongzhi = 16;left = 90;right =20;  _nop_(); _nop_();        break;        //Delay_Nms(8)給舵機(jī)轉(zhuǎn)動(dòng)留時(shí)間,數(shù)8可調(diào)整
  97.                         case 2:                                                                                                                                                                                                                                  break;
  98.                         case 3:                                                                                                                                                                                                                                        break;
  99.                         case 4:                                                                                                                                                                                                                                  break;
  100.                         case 5:                                                                                                                                                                                                                                        break;                                
  101.                         case 6:                                                                                                                                                                                                                                        break;
  102.                         case 7:                                                                                                                                                                                                                                        break;
  103.                         case 8:                                                                                                                                                                                                                                  break;
  104.                                 
  105.                         default:
  106.                                 break;
  107.                         }
  108.                
  109.                            
  110.                 }
  111. }

  112. // 定時(shí)器 0  中斷   

  113. void time0init()
  114. {
  115.   TMOD=0X11;
  116.   TH0=0XFF;
  117.   TL0=0XF6;
  118.   ET0=1;
  119.   TR0=1;
  120.   EA=1;
  121. }

  122. // 定時(shí)器 1  中斷

  123. void time1init()
  124. {
  125. //        TMOD=0X11;
  126.         EA=1;
  127.         ET1=1;
  128.         TR1=1;
  129.         TL1=0XF6;
  130.         TH1=0XFF;
  131. }

  132. // 定時(shí)器0控制電機(jī)速度
  133. /***********************
  134.   占空比越大 速度越快
  135. ************************/
  136. void  time0()   interrupt 1            // 定時(shí)器0執(zhí)行函數(shù)            中斷號(hào)1
  137. {
  138.   //重新裝載
  139.    TL0=0XF6;                                 //  初值           
  140.    TH0=0XFF;                                 // 每隔10US  進(jìn)一次中斷
  141.    count++;                  //占空比不斷增加
  142.    if(count>100)
  143.    count=0;
  144.    if(count<left)  // 占空比對(duì)應(yīng)的速度小于需要的速度  讓電機(jī)加速
  145.    {
  146.    dianji1=1;                 
  147.    dianji2=0;
  148.    }
  149.    else
  150.    {
  151.    dianji1=0;                 
  152.    dianji2=1;
  153.    }
  154.    if(count<right)  // 占空比對(duì)應(yīng)的速度小于需要的速度  讓電機(jī)加速
  155.    {
  156.    dianji3=1;                 
  157.    dianji4=0;
  158.    }
  159.    else
  160.    {
  161.    dianji4=0;                 
  162.    dianji3=1;
  163.    }
  164. }

  165. // 定時(shí)器1控制舵機(jī)轉(zhuǎn)向
  166. /***********************
  167. 占空比越大偏轉(zhuǎn)的角度越大
  168. ***********************/
  169. void  time1()  interrupt 3            //定時(shí)器1執(zhí)行函數(shù)   中斷號(hào)3
  170. {
  171.         TL1=0XF6;
  172.     TH1=0XFF;
  173.         cheer++;  // 占空比增加
  174.         if(cheer>100)
  175.         cheer=0;
  176.         if(cheer<duojizhongzhi)             // 如果占空比所對(duì)應(yīng)的角度沒(méi)達(dá)到所需要的值
  177.         duoji=1;                         //  高電平
  178.         else
  179.         duoji=0;
  180. }
復(fù)制代碼
  1. //  智能車程序
  2. # include "reg52.h"                 //  頭文件 包含一定定義
  3. # include "intrins.h"
  4. //  用uint  uchar 代替無(wú)符號(hào)整型 字符型
  5. typedef unsigned int uint ;                  
  6. typedef unsigned char uchar;

  7. //  定義 電機(jī)引腳 可修改
  8. sbit IN1=P1^0;
  9. sbit IN2=P1^1;
  10. sbit IN3=P1^2;
  11. sbit IN4=P1^3;

  12. // 定義紅外引腳  可修改
  13. sbit Infrared1=P0^0;
  14. sbit Infrared2=P0^1;
  15. sbit Infrared3=P0^2;
  16. sbit Infrared4=P0^3;
  17. sbit Infrared5=P0^4;
  18. sbit Infrared6=P0^5;
  19. sbit Infrared7=P0^6;
  20. sbit Infrared8=P0^7;

  21. // 定義舵機(jī)引腳          可修改

  22. sbit Servo=P2^0;

  23. // 定義變量  左右輪速度 及占空比                  舵機(jī)中值
  24. uint speed_left=0, speed_right=0,count=0,add=0,djzz=0;
  25. uint receive;  //  用于接受返回值

  26. // 定義自定義函數(shù)
  27. void time0init();
  28. void delay2s();
  29. void delay100us();
  30. uint  HW() ;
  31. void Drive( uint left ,uint right,uint dj );
  32. void Stop();
  33. //  主函數(shù)
  34. void main()
  35. {        
  36.         uchar Data_1;        //申明變量
  37.         time0init(); // 不斷執(zhí)行定時(shí)器中斷        
  38.         delay2s(); // 延時(shí)啟動(dòng)
  39.         // 以下需要修改
  40.         while(1)
  41.         {
  42.                 djzz=15;        //改這個(gè)值 使舵機(jī)居中
  43.                   delay100us();
  44.                 break;
  45.         }         
  46.         speed_left=1;           // 調(diào)節(jié)電機(jī)速度
  47.         speed_right=1;            // 調(diào)節(jié)電機(jī)速度
  48.         //   以上需要修改
  49.         while(1)
  50.         {         
  51.                         receive=HW();        //receive接受HW函數(shù)返回值        
  52.                         if(receive == 0)        //使車自己回去               
  53.                         receive=Data_1;        
  54.                         Data_1=receive;
  55.                  HW();           //引用自定義函數(shù)
  56.         Drive( speed_left,speed_right,djzz ); //引用自定義函數(shù)
  57.                 Stop();          //停止
  58.         }
  59. }

  60. //  延時(shí)函數(shù)  延時(shí)2S
  61. void delay2s()   //誤差 0us
  62. {
  63.     unsigned char a,b,c;
  64.     for(c=127;c>0;c--)
  65.         for(b=235;b>0;b--)
  66.             for(a=32;a>0;a--);
  67.     _nop_();
  68. }

  69. void delay100us()   //誤差 0us
  70. {
  71.     unsigned char a,b;
  72.     for(b=1;b>0;b--)
  73.         for(a=47;a>0;a--);
  74. }

  75. //紅外檢測(cè)函數(shù)                //需要自己添加情況
  76. uint HW()
  77. {
  78. //如果紅外一檢測(cè)到 執(zhí)行情況
  79.         if( Infrared1==1&&Infrared2==0&&Infrared3==0&&Infrared4==0&&Infrared5==0&&Infrared6==0&&Infrared7==0&&Infrared8==0 )
  80.                          return 1;

  81.         /*
  82.                         以下情況復(fù)制上面自己改
  83.         */
  84.         else
  85.         {
  86.                 return 0;
  87.         }
  88. }
  89. // 電機(jī)驅(qū)動(dòng)函數(shù)           //需要自己添加情況
  90. void Drive( uint left ,uint right,uint dj )
  91. {
  92.         if( receive==1 )
  93.         {
  94.                 left =10;
  95.                 right=10;
  96.                 dj=10;
  97.         }
  98.         /*
  99.           根據(jù)所需要自己添加
  100.         */
  101. }
  102. /*******************************************************************************
  103.                                                  以下函數(shù)不能修改
  104. *******************************************************************************/
  105. //  停止函數(shù)    當(dāng)紅外八個(gè)燈同時(shí)檢測(cè)到 之后停止
  106. void Stop()
  107. {
  108.            if( Infrared1==1&&Infrared2==1&&Infrared3==1&&Infrared4==1&&Infrared5==1&&Infrared6==1&&Infrared7==1&&Infrared8==1 )
  109.         {
  110.                 delay100us();
  111.                 if( Infrared1==1&&Infrared2==1&&Infrared3==1&&Infrared4==1&&Infrared5==1&&Infrared6==1&&Infrared7==1&&Infrared8==1 )
  112.                 speed_left=0;
  113.                 speed_right=0;        
  114.         }
  115. }

  116. void time0init()
  117. {
  118.         TMOD|=0X11;
  119.         TH0=(65536-50)/256;
  120.         TL0=(65536-50)%256;
  121.         TH1=(65536-100)/256;
  122.         TL1=(65536-100)%256;
  123.         ET0=1;
  124.         ET1=1;
  125.         EA=1;
  126.         TR0=1;
  127.         TR1=1;
  128. }
  129. //  定時(shí)器0 用于控制電機(jī)速度
  130. void Motor0 () interrupt 1
  131. {
  132.         TR0=0;
  133.         TH0=(65536-50)/256;
  134.         TL0=(65536-50)%256;
  135.         count++;
  136.         if(count>100)
  137.         {
  138.                 count=0;
  139.         }
  140.         if( count>speed_left )        //  
  141.         {
  142.                 IN1=0;
  143.                 IN2=0;
  144.         }
  145.         else
  146.         {
  147.                 IN1=1;
  148.                 IN2=0;
  149.         }
  150.                 if( count>speed_right )        //  
  151.         {
  152.                 IN3=0;
  153.                 IN4=0;
  154.         }
  155.         else
  156.         {
  157.                 IN3=1;
  158.                 IN4=0;
  159.         }
  160.         TR0=1;
  161. }                                
  162. void ServoTemper() interrupt 3
  163. {   
  164.         add++;
  165.         TH1=(65536-100)/256;
  166.         TL1=(65536-100)%256;
  167.         if( add>=200 )
  168.         {
  169.                 add=0;
  170.         }
  171.         if( djzz>=add )
  172.         {
  173.                 Servo=1;
  174.         }         
  175.         else
  176.         {
  177.                 Servo=0;
  178.         }
  179. }<div class="quote"><blockquote>
復(fù)制代碼

原理圖.7z

826.6 KB, 下載次數(shù): 56, 下載積分: 黑幣 -5

最新庫(kù).7z

79.76 KB, 下載次數(shù): 39, 下載積分: 黑幣 -5

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:224914 發(fā)表于 2017-11-16 20:56 | 只看該作者
這個(gè)舵機(jī)調(diào)時(shí)需要延時(shí) ,用的是定時(shí)器仿真PWM,望互相學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

板凳
ID:87193 發(fā)表于 2017-11-30 14:50 | 只看該作者
不知道做出來(lái)的實(shí)物是怎么樣的呢
回復(fù)

使用道具 舉報(bào)

地板
ID:224914 發(fā)表于 2018-1-18 21:13 | 只看該作者
lemon0210 發(fā)表于 2017-11-30 14:50
不知道做出來(lái)的實(shí)物是怎么樣的呢

白色賽道中間有黑色膠帶,能按照黑色的軌跡跑
回復(fù)

使用道具 舉報(bào)

5#
ID:224914 發(fā)表于 2018-1-18 21:15 | 只看該作者
lemon0210 發(fā)表于 2017-11-30 14:50
不知道做出來(lái)的實(shí)物是怎么樣的呢

白色賽道,黑色軌跡,能根據(jù)軌跡跑
回復(fù)

使用道具 舉報(bào)

6#
ID:818853 發(fā)表于 2020-9-14 14:23 | 只看該作者

不知道做出來(lái)的實(shí)物是怎么樣的呢
回復(fù)

使用道具 舉報(bào)

7#
ID:1068978 發(fā)表于 2023-3-29 21:08 | 只看該作者
有沒(méi)有CH32V307的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 浴室洗澡偷拍一区二区 | 久久青 | 色天天综合 | 青久草视频| 久久精品一区二区三区四区 | 欧美精品综合 | 精品一区国产 | 日本黄色免费大片 | 精品一区二区三区在线视频 | 成人a视频 | 亚洲一区在线免费观看 | 国产999精品久久久影片官网 | 伊人色综合久久久天天蜜桃 | 久久久久91 | 999精彩视频 | 日韩激情在线 | 免费成人在线网站 | 欧产日产国产精品国产 | 蜜桃精品噜噜噜成人av | 成人在线黄色 | 午夜欧美一区二区三区在线播放 | 亚洲精品99| 亚洲综合婷婷 | 欧美在线激情 | 一区二区中文字幕 | 午夜噜噜噜 | 国产成人一区二区三区 | 久久久美女| 麻豆精品久久久 | 中文字幕一页二页 | 日本精品久久久久久久 | 欧美中文字幕在线观看 | 久久国产精品久久 | 一级大黄色片 | 91视频网 | 91毛片在线观看 | 日韩一区欧美一区 | 成人午夜 | 国产激情视频网站 | 亚洲一区二区三区视频 | aaaaa毛片|