<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機wifi小車代碼

          51單片機wifi小車代碼

          作者: 時間:2016-11-22 來源:網(wǎng)絡 收藏
          51單片機wifi小車代碼

          #include

          本文引用地址:http://www.ex-cimer.com/article/201611/319843.htm

          #include

          #define uchar unsigned char

          #define uint unsigned int

          uchar Buffer =0; //從串口接收的數(shù)據(jù)

          uint i,j;

          uchar flag=0;

          uchar key_stime_counter,hight_votage=15,timeT_counter;

          bit key_stime_ok;

          sbit control_signal=P3^6;

          sbit StatusLight=P2^2;

          sbit MainLight=P2^3;

          /********************************************************************

          * 名稱 : Delay_1ms()

          * 功能 : 延時子程序,延時時間為 1ms * x

          * 輸入 : x (延時一毫秒的個數(shù))

          * 輸出 : 無

          ***********************************************************************/

          void Delay_1ms(uint i)//1ms延時

          {

          uchar x,j;

          for(j=0;j

          for(x=0;x<=148;x++);

          }

          void Turn*****tatusLight()

          {

          StatusLight=0;

          }

          /********************************************************************

          * 名稱 : Com_Int()

          * 功能 : 串口中斷子函數(shù)

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void Com_Int(void) interrupt 4

          {

          EA = 0;

          if(RI == 1) //當硬件接收到一個數(shù)據(jù)時,RI會置位

          {

          Buffer = SBUF-48; //這里減去48是因為從電腦中發(fā)送過來的數(shù)據(jù)是ASCII碼。

          RI = 0;

          }

          EA = 1;

          }

          /********************************************************************

          * 名稱 : Com_Init()

          * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中斷

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void Com_Init(void)

          {

          TMOD = 0x21;

          PCON = 0x00;

          SCON = 0x50;

          TH1 = 0xFd; //設置波特率 9600

          TL1 = 0xFd;

          TR1 = 1; //啟動定時器1

          ES = 1; //開串口中斷

          EA = 1; //開總中斷

          IT0=0;

          EX0=1;

          }

          void TimerInit()

          {

          control_signal=0;

          EA=1; //開總中斷

          ET0=1; //定時器0中斷允許

          TH0 = 0xFF; //定時器裝初值

          TL0 = 0xA3;

          TR0=0;

          }

          /********************************************************************

          * 名稱 :Moto_Forward()

          * 功能 : 電機1、2啟動,都是前進,整車表現(xiàn)為前進。

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void Moto_Forward()

          {

          P1= 0x06;

          Delay_1ms(100);

          }

          /********************************************************************

          * 名稱 :Moto_Backward()

          * 功能 : 電機1、2啟動,都是后退,整車表現(xiàn)為后退。

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void Moto_Backward()

          {

          P1= 0x05;

          Delay_1ms(100);

          }

          /********************************************************************

          * 名稱 :Moto_TurnLeft()

          * 功能 : 電機1后退,電機2前進,整車表現(xiàn)為左轉。

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void Moto_TurnLeft()

          {

          P1= 0x09;

          Delay_1ms(100);

          }

          /********************************************************************

          * 名稱 :Moto_TurnRight()

          * 功能 : 電機1前進,電機2后退,整車表現(xiàn)為右轉。

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void Moto_TurnRight()

          {

          P1= 0x0A;

          Delay_1ms(100);

          }

          /********************************************************************

          * 名稱 :Moto_Stop()

          * 功能 : 電機1停止,電機2停止,整車表現(xiàn)為停止。

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void Moto_Stop()

          {

          P1= 0x00;

          Delay_1ms(100);

          }

          /********************************************************************

          * 名稱 :SteerEngineTurningUp()

          * 功能 : 舵機向上轉。

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void SteerEngineTurningUp()

          {

          ET0=1;

          TR0=1;

          Delay_1ms(40);

          hight_votage-=1;

          if(hight_votage<5)

          hight_votage=5;

          }

          /********************************************************************

          * 名稱 :SteerEngineTurningDown()

          * 功能 : 舵機向下轉。

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void SteerEngineTurningDown()

          {

          ET0=1;

          TR0=1;

          Delay_1ms(40);

          hight_votage+=1;

          if(hight_votage>20)

          hight_votage=20;

          }

          /********************************************************************

          * 名稱 : SteerEngine()

          * 功能 : 舵機PWM中斷

          * 輸入 : 無

          * 輸出 : 無

          ***********************************************************************/

          void SteerEngine() interrupt 1

          {

          TH0=0xFF;

          TL0=0xA3;

          if (++key_stime_counter>=200)

          {

          key_stime_counter=0;

          control_signal=1;

          key_stime_ok = 1; // 20ms到

          timeT_counter=0;

          }

          if (key_stime_ok&&(++timeT_counter>=hight_votage))

          {

          key_stime_ok=0;

          timeT_counter=0;

          control_signal=0; // hight_votage*0.1ms到

          }

          }

          void main()

          {

          MainLight=0;

          Delay_1ms(200);

          Com_Init();//串口初始化

          TimerInit();//舵機初始化

          while(1)

          {

          switch (Buffer) //根據(jù)鍵值不同,執(zhí)行不同的內(nèi)容

          {

          case 0:

          Moto_Stop();

          break;

          case 1:

          Moto_Forward();

          break;

          case 2:

          Moto_Backward();

          break;

          case 3:

          Moto_TurnLeft();

          break;

          case 4:

          Moto_TurnRight();

          break;

          case 5:

          SteerEngineTurningUp();

          break;

          case 6:

          SteerEngineTurningDown();

          break;

          case 8:

          MainLight=1;

          break;

          case 9:

          MainLight=0;

          break;

          default : TR0=0;TR2=0;

          break;

          }

          }

          }

          //紅外壁障

          void extern_int0(void) interrupt 0 using 0

          {

          EX0=0;

          Moto_TurnLeft();

          Buffer=0;

          EX0=1;

          IE0=0;

          }



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();