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

標題: HT6221智能小車的設(shè)計論文 含程序 [打印本頁]

作者: w874778939    時間: 2017-6-6 16:01
標題: HT6221智能小車的設(shè)計論文 含程序
打開小車開關(guān)和攝像頭開關(guān),然后手機連接到wifi信號,通過將wifi接收器接收到的信號傳送給STC89C52,最后將信號傳送給小車和攝像頭進行小車的移動和攝像頭視頻的錄制。摘要隨著無線技術(shù)的發(fā)展及應(yīng)用,手機藍牙及wifi技術(shù)逐漸被應(yīng)用于人們生活中。針對現(xiàn)階段家電智能化的發(fā)展趨勢,為了實現(xiàn)家電的智能化控制,本文設(shè)計了以單片機為控制核心,基于手機平臺,利用WiFi技術(shù),無線WiFi模塊,單片機模塊,將攝像頭、小車與手機APP連接在一起,手機APP的操作指令通過WiFi無線傳輸給攝像頭內(nèi)部的芯片,進而根據(jù)指令做出相應(yīng)改變。這種以無線連接為基礎(chǔ)的監(jiān)視控制系統(tǒng),不僅能夠?qū)崿F(xiàn)小車的無線控制,而且體現(xiàn)了區(qū)域自由的優(yōu)越性。

第一章 引言當今世界,傳感器技術(shù)和自動控制技術(shù)正在飛速發(fā)展,機械、電氣和電子信息已經(jīng)不再明顯分家,自動控制在工業(yè)領(lǐng)域中的地位已經(jīng)越來越重要,“智能”這個詞也已經(jīng)成為了熱門詞匯。現(xiàn)在國外的自動控制和傳感器技術(shù)已經(jīng)達到了很高的水平,特別是日本,比如日本本田制作的機器人,其仿人雙足行走已經(jīng)做得十分逼真,而且具有一定的學習能力,還據(jù)說其智商已達到6歲兒童的水平。 而本次學校組織的智能循跡小車大賽也讓同學們能充分的參與到實際電子作品的設(shè)計,制作中,同時也讓同學們能在實際制作中理解傳感器系統(tǒng),自動控制系統(tǒng)。無容置疑,人才的培養(yǎng)不論是在國外還是國內(nèi),都開始重視起來,主要表現(xiàn)在大學生的各種大型的創(chuàng)新比賽,比如:亞洲廣播電視聯(lián)盟亞太地區(qū)機器人大賽(ABU ROBCON)、全國大學生“飛思卡爾”杯智能汽車競賽等眾多重要競賽都能很好的培養(yǎng)大學生對于電子,電路,自動控制,傳感系統(tǒng)相關(guān)知識。學校此次的比賽對于我們來說就是很好的一個平臺,讓我們能更加的加強自己理論方面的知識,同時,增強理論與實踐相結(jié)合的發(fā)散性,創(chuàng)造性思維的能力。 第二章 系統(tǒng)方案2.1方案與選擇方案1:該智能車采用紅外傳感器對賽道進行道路檢測,單片機根據(jù)采集到的信號的不同狀態(tài)判斷小車當前狀態(tài),通過電機驅(qū)動芯片L298N發(fā)出控制命令,控制電機的工作狀態(tài)以實現(xiàn)對小車姿態(tài)的控制。方案2:該智能車采用HT6221芯片控制小車的移動,單片機根據(jù)控制器發(fā)出的信號做出相應(yīng)的移動,再加上小車上安裝了攝像頭對沿途的狀況記錄并傳送到手機上。綜合以上方案我們選擇方案2的設(shè)計。功能:                              由遙控器控制小車進行移動,攝像機進行拍攝。
第三章 硬件3.1最小系統(tǒng):小車采用atmel公司的AT89S52單片機作為控制芯片,圖1是其最小系統(tǒng)電路。主要包括:時鐘電路、電源電路、復(fù)位電路。其中各個部分的功能如下:1、時鐘電路:給單片機提供一個外接的16MHz的石英晶振。2、電源電路:給單片機提供5V電源。3、復(fù)位電路:在電壓達到正常值時給單片機一個復(fù)位信號。 圖2  單片機最小系統(tǒng)原理圖3.2遙控電路 HT6221/HT6222芯片是通用紅外遙控發(fā)射集成電路,采用CMOS工藝制造,最多可外接64個按鍵,并有三組雙重按鍵。封裝形式為SOP-24和SOP-20。 特點:1. 低壓CMOS工藝制造。2. 工作電壓范圍寬。3.通過外部接法最多可產(chǎn)生65536種用戶碼。4. 可通過SEL管腳選擇,最多可支持128+6條指令碼。5.SOP-24、SOP-20、COB封裝形式可選。 圖3 控制電路圖 第四章 軟件設(shè)計移動監(jiān)視車的設(shè)計包括兩部分,一部分是通過手機APP與wifi連接實現(xiàn)的攝像顯示,另一部分是通過HT6221芯片接受控制 信號進行移動。4.1 無線鏈接

4.2軟件流程圖
第五章 測試結(jié)果
將本電路用硬件做出來,用編程器將KEIL軟件對源程序編譯生成的.HEX文件燒入AT89S52單片機,將單片機插入到小車中,連好線。
將“控制模式”開關(guān)選擇在“遙控”,打開電源,小車在遙控器的控制下開始移動,攝像頭也正常工作。
測試結(jié)果表明,本系統(tǒng)實現(xiàn)了預(yù)期功能。我們還想給小車添加自動監(jiān)控的功能,遇到障礙進行躲避。為了這一目標我們繼續(xù)努力。












附錄
#include <REGX52.H> //包含51單片機相關(guān)的頭文件
#include <intrins.h>
sbit LeftLed=P2^0;                        //定義前方左側(cè)指示燈端口
sbit RightLed=P0^7;                       //定義前方右側(cè)指示燈端口
sbit FontLled=P1^7;
sbit LeftIR=P3^5;                         //定義前方左側(cè)紅外探頭端口
sbit RightIR=P3^6;                        //定義前方右側(cè)紅外探頭端口
sbit FontIR=P3^7;                         //定義前方正前方紅外探頭端口
sbit M1A=P0^0;                            //定義左側(cè)電機驅(qū)動A
sbit M1B=P0^1;                            //定義左側(cè)電機驅(qū)動B
sbit M2A=P0^2;                            //定義右側(cè)電機驅(qū)動A
sbit M2B=P0^3;                            //定義右側(cè)電機驅(qū)動B
sbit B1=P0^4;                             //定義語音識識別傳感器端口
sbit SB1=P0^6;                            //定義蜂鳴器端口
sbit IRIN=P3^3;                                       //定義紅外接收端口
unsigned char code  LedShowData[]={0x03,0x9F,0x25,0x0D,0x99,  //定義數(shù)碼管顯示數(shù)據(jù)
                                   0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9
unsigned char code  RecvData[]={0x19,0x46,0x15,0x43,0x44,0x40,0x0D,0x0E,0x00,0x0F};
unsigned char IRCOM[7];
static unsigned int LedFlash;                         //定義閃動頻率計數(shù)變量
bit EnableLight=0;                                    //定義指示燈使能位
#define ShowPort P2                                   //定義數(shù)碼管顯示端口
unsigned char temp = 1;
void tingzhi()
{
   M1A=0;                                   //M1電機A端初始化為0
   M1B=0;                                   //M1電機B端初始化為0
   M2A=0;                                   //M2電機A端初始化為0
   M2B=0;
}
void qianjin()
{
   M1A=1;                                   
   M1B=0;                                   
   M2A=1;                                   
   M2B=0;
}
void houtui()
{
   M1A=0;                                   
   M1B=1;                                   
   M2A=0;                                   
   M2B=1;
}
void zuozhuan()
{
   M1A=0;                                   
   M1B=1;                                   
   M2A=1;                                   
   M2B=0;
}
void youzhuan()
{
   M1A=1;                                   
   M1B=0;                                   
   M2A=0;                                   
   M2B=1;
}
void Delay1ms(unsigned int i)
{
unsigned char j,k;
do{
  j = 10;
  do{
   k = 50;
   do{
    _nop_();
   }while(--k);     
  }while(--j);
}while(--i);
}
void delay_nus(unsigned int i)  //延時:i>=12 ,i的最小延時單12 us
{
  i=i/10;
  while(--i);
}   
void delay_nms(unsigned int n)  //延時n ms
{
  n=n+1;
  while(--n)  
  delay_nus(900);         //延時 1ms,同時進行補償
  
}  
void delayms(unsigned char x)                         //0.14mS延時程序
{
  unsigned char i;                                    //定義臨時變量
  while(x--)                                          //延時時間循環(huán)
  {
    for (i = 0; i<13; i++) {}                         //14mS延時
  }
}
void Delay()                                          //定義延時子程序
{
  unsigned int DelayTime=30000;                       //定義延時時間變量
  while(DelayTime--);                                 //開始進行延時循環(huán)
  return;                                             //子程序返回
}
void ControlCar(unsigned char ConType)    //定義電機控制子程序
{

  tingzhi();
switch(ConType)                          //判斷用戶設(shè)定電機形式
{
  case 1:  //前進                         //判斷用戶是否選擇形式1
  {
    //tingzhi();                                                      //進入前進之前 先停止一段時間  防止電機反向電壓沖擊主板 導(dǎo)致系統(tǒng)復(fù)位
         //Delay1ms(50);
         LeftLed = 0 ;
         qianjin();
    break;
  }
  case 2: //后退                          //判斷用戶是否選擇形式2
  {
   // tingzhi();                                                                //進入后退之前 先停止一段時間  防止電機反向電壓沖擊主板 導(dǎo)致系統(tǒng)復(fù)位
   // Delay1ms(50);
    LeftLed = 1 ;      
         houtui();                                //M2電機反轉(zhuǎn)
    break;
  }
  case 3: //左轉(zhuǎn)                          //判斷用戶是否選擇形式3
  {
     //tingzhi();                                                                            //進入左轉(zhuǎn)之前 先停止一段時間  防止電機反向電壓沖擊主板 導(dǎo)致系統(tǒng)復(fù)位
         // Delay1ms(50);
          zuozhuan();                               //M2電機正轉(zhuǎn)
          break;
  }
  case 4: //右轉(zhuǎn)                          //判斷用戶是否選擇形式4
  {
   // tingzhi();                                                                      //進入右轉(zhuǎn)之前 先停止一段時間  防止電機反向電壓沖擊主板 導(dǎo)致系統(tǒng)復(fù)位
//       Delay1ms(50);
         youzhuan();                                //M1電機正轉(zhuǎn)
                                          //M2電機反轉(zhuǎn)
         break;
  }
  case 8: //停止                          //判斷用戶是否選擇形式8
  {
    tingzhi();
         break;                                //退出當前選擇
  }
}
}
void ControlCar_yaokong(unsigned char ConType)    //定義電機控制子程序       (紅外遙控單獨設(shè)置一個 switch  case  語句  )
{

  tingzhi();
switch(ConType)                          //判斷用戶設(shè)定電機形式
{
  case 1:  //前進                         //判斷用戶是否選擇形式1
  {
    tingzhi();                                                         //進入前進之前 先停止一段時間  防止電機反向電壓沖擊主板 導(dǎo)致系統(tǒng)復(fù)位
         Delay1ms(150);
         LeftLed = 0 ;
         qianjin();
    break;
  }
  case 2: //后退                          //判斷用戶是否選擇形式2
  {
    tingzhi();                                                                  //進入后退之前 先停止一段時間  防止電機反向電壓沖擊主板 導(dǎo)致系統(tǒng)復(fù)位
    Delay1ms(150);
    LeftLed = 1 ;      
         houtui();                                //M2電機反轉(zhuǎn)
    break;
  }
  case 3: //左轉(zhuǎn)                          //判斷用戶是否選擇形式3
  {
     tingzhi();                                                                     //進入左轉(zhuǎn)之前 先停止一段時間  防止電機反向電壓沖擊主板 導(dǎo)致系統(tǒng)復(fù)位
          Delay1ms(150);
          zuozhuan();                               //M2電機正轉(zhuǎn)
          break;
  }
  case 4: //右轉(zhuǎn)                          //判斷用戶是否選擇形式4
  {
     tingzhi();                                                                     //進入右轉(zhuǎn)之前 先停止一段時間  防止電機反向電壓沖擊主板 導(dǎo)致系統(tǒng)復(fù)位
          Delay1ms(150);
     youzhuan();                                //M1電機正轉(zhuǎn)  //M2電機反轉(zhuǎn)
         break;
  }
  case 8: //停止                          //判斷用戶是否選擇形式8
  {
    tingzhi();
         break;                                //退出當前選擇
  }
}
}
void Robot_Avoidance()                   //機器人避障子程序
{
   LeftLed=LeftIR;                        //前方左側(cè)指示燈指示出前方左側(cè)紅外探頭狀態(tài)
   RightLed=RightIR;                      //前方右側(cè)指示燈指示出前方右側(cè)紅外探頭狀態(tài)
   FontLled= FontIR;
   SB1=FontIR;
    if(FontIR == 0)                          //如果前面避障傳感器檢測到障礙物
   {
      ControlCar(8);                       //停止
      delay_nms (300);                                           //停止300MS   防止電機反相電壓沖擊  導(dǎo)致系統(tǒng)復(fù)位
           ControlCar(2);                                               //后退  
           delay_nms (1000);                                                 //后退1500MS  
           ControlCar(3);                                               //
           delay_nms (1800);        
  }
   else
   {
      ControlCar(1);                      //右側(cè)沒有信號時,開始向左轉(zhuǎn)一定的角度
      delay_nms (10);
   }
    ControlCar(1);
}
//機器人循跡子程序
void Robot_Traction()                     //機器人循跡子程序
{
   LeftLed=LeftIR;                        //前方左側(cè)指示燈指示出前方左側(cè)紅外探頭狀態(tài)
   RightLed=RightIR;                      //前方右側(cè)指示燈指示出前方右側(cè)紅外探頭狀態(tài)
   FontLled= FontIR;
   SB1=LeftIR;
   if(LeftIR == 0 && RightIR == 0)    //三個紅外檢測到黑線,就前進
   {
      ControlCar(1);                      //左側(cè)沒有信號時,開始向右轉(zhuǎn)一定的角度
      delay_nms (10);
   }
   
   else if(LeftIR == 0 && RightIR == 1)
   {
      ControlCar(3);                      //右側(cè)沒有信號時,開始向左轉(zhuǎn)一定的角度
      delay_nms (10);
   }
   else if(LeftIR == 1 && RightIR == 0)
   {
      ControlCar(4);                      //右側(cè)沒有信號時,開始向左轉(zhuǎn)一定的角度
      delay_nms (10);
   }
    ControlCar(8);
}
void main()                               //主程序入口
{
  
  bit RunFlag=0;                          //定義小車運行標志位
  LedFlash=3000;                                       //對閃燈數(shù)據(jù)進行初始化
  //EX1=1;                                               //同意開啟外部中斷1
  IT1=1;                                               //設(shè)定外部中斷1為低邊緣觸發(fā)類型
  EA=1;                                                //總中斷開啟
  ControlCar(8);                          //初始化小車運行狀態(tài)
  while(1)                                //程序主循環(huán)
  {
        if(P3_2 == 0)
           {
            delay_nms(10);
            if(P3_2 == 0)
            {
                 temp++;
                     while(!P3_2);
            }
           }
           if(temp > 3)
           {
           temp = 1;
           }
           switch(temp)
           {
               case 1:      ShowPort = LedShowData[1];Robot_Traction();EX1 = 0;break;
                   case 2: ShowPort = LedShowData[2];Robot_Avoidance();EX1 = 0;break;
                   case 3: ShowPort = LedShowData[3];EX1 = 1;break;
           }
  }
}
//----------紅外遙控-------------------------------------------------------------
void IR_IN() interrupt 2 using 0                      //定義INT2外部中斷函數(shù)
{
  unsigned char j,k,N=0;                              //定義臨時接收變量
   
  EX1 = 0;                                            //關(guān)閉外部中斷,防止再有信號到達   
  delayms(15);                                        //延時時間,進行紅外消抖
  if (IRIN==1)                                        //判斷紅外信號是否消失
  {  
     EX1 =1;                                          //外部中斷開
          return;                                          //返回
  }
                           
  while (!IRIN)                                       //IR變?yōu)楦唠娖剑^9ms的前導(dǎo)低電平信號。
  {
      delayms(1);                                     //延時等待
  }
  for (j=0;j<4;j++)                                   //采集紅外遙控器數(shù)據(jù)
  {
    for (k=0;k<8;k++)                                 //分次采集8位數(shù)據(jù)
    {
       while (IRIN)                                   // IR 變?yōu)榈碗娖剑^4.5ms的前導(dǎo)高電平信號。
       {
         delayms(1);                                  //延時等待
       }
      
       while (!IRIN)                                  // IR 變?yōu)楦唠娖?/font>
       {
         delayms(1);                                  //延時等待
       }
   
       while (IRIN)                                   //計算IR高電平時長
       {
         delayms(1);                                  //延時等待
         N++;                                         //計數(shù)器加加
         if (N>=30)                                   //判斷計數(shù)器累加值
              {
           EX1=1;                                     //打開外部中斷功能
                return;                                    //返回
         }                  
       }
                                       
      IRCOM[j]=IRCOM[j] >> 1;                         //進行數(shù)據(jù)位移操作并自動補零
     
      if (N>=8)                                       //判斷數(shù)據(jù)長度
      {
         IRCOM[j] = IRCOM[j] | 0x80;                  //數(shù)據(jù)最高位補1
      }
      N=0;                                            //清零位數(shù)計錄器
    }
  }
   
  if (IRCOM[2]!=~IRCOM[3])                            //判斷地址碼是否相同
  {
     EX1=1;                                           //打開外部中斷
     return;                                          //返回
  }
  for(j=0;j<10;j++)                                   //循環(huán)進行鍵碼解析
   {
      if(IRCOM[2]==RecvData[j])                       //進行鍵位對應(yīng)
      {
       // ControlCar(j);
                   ControlCar_yaokong(j);                               //數(shù)碼管顯示相應(yīng)數(shù)碼
      }
   }
   EX1 = 1;                                           //外部中斷開
}

作者: yezhaowei    時間: 2021-1-21 16:08
請問你HT6221這個16按鍵遙控器做出來了嗎,可以請教一下嗎




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美一区二区三区在线播放 | 天天操天天天 | 国产美女黄色 | 99av成人精品国语自产拍 | 久久久久国产一区二区三区 | 欧美精品一二区 | 中文字幕亚洲精品在线观看 | 亚洲网站在线 | 9191av| 国产丝袜一区二区三区免费视频 | 91精品导航 | 亚洲午夜久久久 | 亚洲综合精品 | 亚洲一区二区三区视频 | 97超级碰碰| www国产亚洲精品久久网站 | 午夜一区二区三区视频 | 美女天堂 | 午夜精品一区二区三区在线观看 | 永久av | 欧美极品少妇xxxxⅹ免费视频 | 成人精品一区二区三区中文字幕 | 成人av免费在线观看 | 久久香蕉网 | 亚洲精品永久免费 | 亚洲精品99久久久久久 | 超级乱淫av片免费播放 | 欧美精品91 | 亚洲成人一区二区 | 国产精品久久久久久一区二区三区 | 伊人久操| 国产欧美日韩精品一区二区三区 | av二区三区 | 国产91在线播放精品91 | 中文字幕精品一区二区三区精品 | www狠狠爱com| 91av在线不卡| 美女黄18岁以下禁止观看 | 国产视频黄色 | 久久久久国产一区二区 | 91影院在线观看 |