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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機智能遙控車程序、PCB電路圖PPT、圖片

[復制鏈接]
跳轉到指定樓層
樓主
敬請共同愛好者欣賞瀏覽提意見

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)





單片機源程序如下:
  1. /*小車用遙控器控制程序
  2. L298N的IN1234對應單片機的P1.0123
  3. 直行P1=0xfa
  4. 左轉0xf9(小車兩輪胎正反轉 調向)或0xf8(往哪面轉 哪面的的輪胎不轉)
  5. 右轉0xf6或0xf2
  6. 后退0xf5
  7. 停車oxff
  8. */
  9. #include<reg52.h>      //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義h
  10. sbit IR=P3^2;          //紅外接口標志 ,ir是紅外輻射 的意思
  11. #define DataPort P0    //定義數據端口 程序中遇到DataPort 則用P0 替換
  12. sbit dula=P2^6;        //定義鎖存使能端口 段鎖存
  13. sbit wela=P2^7;        //                 位鎖存

  14. unsigned char code DuanMa[14]={0x3f,0x06,0x5b,0x4f,0x40,0x38,0x31};// 顯示段碼值0~9
  15. unsigned char  irtime,gao_num,di_num,l,r,back,stop;//紅外、PWM用全局變量

  16. bit irpro_ok,irok;                //標志位,處理完成irpro_ok=1,接收完成irok=1
  17. unsigned char IRcord[4];  //紅外碼值有4個(客戶碼1+客2+操作碼+操作反碼),4*8=32位
  18. unsigned char irdata[33]; //32位紅外碼值+1位引導碼,也就是接受一次需要存儲的字節數

  19. void Ir_work(void);                  //紅外散轉函數聲明
  20. void Ircordpro(void);          //紅外碼值處理函數聲明


  21. void delay(int i)                //延時i ms
  22. {
  23.   int j,k;
  24.   for(j=i;j>0;j--)
  25.     for(k=110;k>0;k--);
  26. }  

  27. void tim0_isr (void) interrupt 1 using 1
  28. {
  29.   irtime++;  //用于計數2個下降沿之間的時間
  30. }

  31. /*------------------------------------------------
  32.                   外部中斷0中斷處理
  33. ------------------------------------------------*/
  34. void EX0_ISR (void) interrupt 0         //外部中斷0服務函數
  35. {
  36.   static unsigned char  i;             //接收紅外信號處理
  37.   static bit startflag;                //是否開始處理標志位

  38. if(startflag)                        
  39.    {
  40.     if(irtime<63&&irtime>=33)//引導碼 TC9012的頭碼,9ms+4.5ms
  41.                         i=0;
  42.                     irdata[i]=irtime;//存儲每個電平的持續時間,用于以后判斷是0還是1
  43.                     irtime=0;
  44.                     i++;
  45.                             if(i==33)
  46.                               {
  47.                                    irok=1;
  48.                                  i=0;
  49.                                   }
  50.           }
  51.            else
  52.                 {
  53.                 irtime=0;
  54.                 startflag=1;
  55.                 }

  56. }

  57. /*------------------------------------------------
  58.                 定時器0初始化
  59. ------------------------------------------------*/
  60. void TIM0init(void)//定時器0初始化
  61. {

  62.   TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
  63.   TH0=0x00; //重載值
  64.   TL0=0x00; //初始化值
  65.   ET0=1;    //開中斷
  66.   TR0=1;    //啟動定時器0
  67. }
  68. /*------------------------------------------------
  69.                   外部中斷0初始化
  70. ------------------------------------------------*/
  71. void EX0init(void)
  72. {
  73. IT0 = 1;   //指定外部中斷0下降沿觸發,INT0 (P3.2)
  74. EX0 = 1;   //使能外部中斷
  75. EA = 1;    //開總中斷
  76. }
  77. /*------------------------------------------------
  78.                   解碼散轉處理
  79. ------------------------------------------------*/

  80. void Ir_work(void)//紅外散轉程序,解碼后用以選擇執行指令
  81. {
  82.        switch(IRcord[2])//判斷第三個數碼值
  83.                  {
  84.                          case 0x0c:DataPort=DuanMa[1];gao_num=1;di_num=1;break;//1 速度,并顯示相應的按鍵值        0x3f,0x06,0x5b,0x4f,0x40,0x38,0x31
  85.                          case 0x18:DataPort=DuanMa[2];gao_num=2;di_num=1;break;//2
  86.                          case 0x5e:DataPort=DuanMa[3];gao_num=8;di_num=1;break;//3

  87.                          case 0x1C:DataPort=DuanMa[0];stop=1;break;//8 停車
  88.                
  89.                          case 0x52:DataPort=DuanMa[4];back=1;break;//8 倒退
  90.         
  91.                          case 0x08:DataPort=DuanMa[5];l=1;break;//轉彎控制 左轉
  92.                          case 0x5A:DataPort=DuanMa[6];r=1;break; //轉彎控制 右轉
  93.              default:break;
  94.                          }                                                                                       

  95.                   irpro_ok=0;//處理完成標志
  96.   }

  97. void qudong()
  98.         {
  99.           unsigned char i;
  100.           if(di_num!=0)                 //前行時,PWM調速
  101.                           {
  102.                                     for(i=0;i<di_num;i++)
  103.                                                 {
  104.                                                    P1=0xff;
  105.                                                 }

  106.                                     for(i=0;i<gao_num;i++)
  107.                                            {
  108.                                               P1=0xfa;
  109.                                            }
  110.                           }

  111.           if(l==1)                         //左轉 動作:左轉延時300ms后直行
  112.                    {        l=0;
  113.                                    P1=0xf8;
  114.                                 delay(300);
  115.                                 P1=0xfa;
  116.                         }
  117.           if(r==1)                     //右轉 動作:右轉延時300ms后直行
  118.                    {        r=0;
  119.                                    P1=0xf2;
  120.                                 delay(300);
  121.                                 P1=0xfa;
  122.                                  
  123.                    }
  124.            if(back==1)                //后退 動作:停車,然后一直后退
  125.                    {
  126.                             back=0;
  127.                          P1=0;            //停車
  128.                          P1=0xf5;        //后退
  129.                    }
  130.                 if(stop==1)                //后退 動作
  131.                 {
  132.                         stop=0;
  133.                         P1=0;
  134.                 }
  135.         }
  136. /*------------------------------------------------
  137.                 紅外碼值處理
  138. ------------------------------------------------*/
  139. void Ircordpro(void)//紅外碼值處理函數
  140. {
  141.   unsigned char i, j, k;
  142.   unsigned char cord,value;

  143.   k=1;
  144.   for(i=0;i<4;i++)      //處理4個字節
  145.      {
  146.       for(j=1;j<=8;j++) //處理1個字節8位
  147.          {
  148.           cord=irdata[k];
  149.           if(cord>7)//大于某值為1,這個和晶振有絕對關系,這里使用12M計算,此值可以有一定誤差
  150.              value|=0x80;
  151.           if(j<8)
  152.                     {
  153.                          value>>=1;
  154.                         }
  155.            k++;
  156.          }
  157.      IRcord[i]=value;
  158.      value=0;     
  159.      }
  160.          irpro_ok=1;//處理完畢標志位置1
  161. }

  162. /*------------------------------------------------
  163.                     主函數
  164. ------------------------------------------------*/
  165. void main(void)
  166. {
  167. ……………………

  168. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼





所有資料51hei提供下載:
遙控車(程序 電路圖 實物圖).7z (11.29 MB, 下載次數: 76)


評分

參與人數 1黑幣 +5 收起 理由
wdehyz + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發
ID:435690 發表于 2018-11-29 13:49 | 只看該作者
可以很強的
回復

使用道具 舉報

板凳
ID:537645 發表于 2019-5-14 09:53 | 只看該作者
厲害啊
回復

使用道具 舉報

地板
ID:438432 發表于 2019-5-16 21:00 | 只看該作者
有元器件清單嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人精品一区 | 黄色av一区 | 免费av播放| 羞羞在线观看视频 | 久久久久国产 | 99在线国产 | 黄色精品视频网站 | 亚洲精品日本 | 成人精品一区 | а_天堂中文最新版地址 | 欧美大片一区 | 国产成视频在线观看 | 求个av网址| 天天综合网天天综合色 | 一级毛片视频 | av毛片在线免费观看 | 不用播放器看的av | 国产一区欧美 | 欧美综合自拍 | 免费看片国产 | 午夜在线免费观看 | 国产精品久久久久久久久图文区 | 国产日产欧产精品精品推荐蛮挑 | 一级国产精品一级国产精品片 | 一区二区三区欧美在线 | 亚洲欧美日韩在线 | 国产精品国产成人国产三级 | 日韩一区二区在线视频 | 一级大片| 成人午夜视频在线观看 | 亚洲欧洲视频 | 免费国产视频 | 成人在线 | 欧美一区二区 | 欧美亚洲激情 | 欧美激情国产日韩精品一区18 | 欧美日韩在线电影 | 99草免费视频 | 国产精品69毛片高清亚洲 | 精品国产精品三级精品av网址 | 午夜电影一区二区 |