欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: STC8A8K64S4A12單片機(jī)2.4G遙控小車,模擬量搖桿 舵機(jī)超聲波 OELD顯示 附帶程序哦 [打印本頁]

作者: 15932885433    時(shí)間: 2018-12-11 21:55
標(biāo)題: STC8A8K64S4A12單片機(jī)2.4G遙控小車,模擬量搖桿 舵機(jī)超聲波 OELD顯示 附帶程序哦
沒發(fā)過什么帖子 ,打字就不多了,用圖片來解釋:
遙控發(fā)射模塊

小車模型

此小車用STC8A8K64S4A12作為控制芯片,也是51內(nèi)核,對(duì)玩小車的人來說  移植也是比較簡(jiǎn)單的。這里我沒有自己做一個(gè)遙控器,用2個(gè)8A8K的開發(fā)板做收發(fā)遙控 玩玩就行了。發(fā)射模塊上我用模擬量遙控制,用的是板子上2.5V的基準(zhǔn)電壓。一開始用了超聲波測(cè)距,還用了舵機(jī)云臺(tái)再180度角內(nèi)轉(zhuǎn)動(dòng)并連續(xù)測(cè)距里,但是后面添加2.4G后,發(fā)現(xiàn)大部分時(shí)間被超聲波測(cè)距占用了,導(dǎo)致2.4G反應(yīng)遲鈍,于是屏蔽了超聲波,反應(yīng)速度立馬提高。在顯示方面,本來用了SPI的協(xié)議,可以黑白反顯,但是2.4G也是SPI,就改成了IIC,所以沒有黑白反顯的功能了。

制作出來的實(shí)物圖如下:


直接附上程序吧
#include "oled.h"
#include  "pwm.h"
#include "delay.h"
#include "dingshiqi.h"
#include "csb.h"
#include "NRF24L01.h"
extern uint8  RxPayload[32];   //無線接收緩存
extern uint8 flag,sudu,CSB;

/***************************************************************************
* 描  述 : 主函數(shù)
* 入  參 : 無
* 返回值 : 無
**************************************************************************/
int main()            //主函數(shù)
{     
static uint16 n1,n2;
//static uint16  c;   
       uint8 i;
       bit kai=1;
    n1=50;
    n2=50;
    P0M1=0x00;    //推挽輸出
    P0M0=0xC0;
//   Timer1Init();
//   Timer0Init();                //TO定時(shí)器是超聲波
    PWM0_Configuration();          //控制舵機(jī)的
    PWM1_Configuration();       //控制舵機(jī)的
    EA=1;

  Init_NRF24L01_MA();         //初始化
  Set_RxMode_MA();       //配置nRF24L01為接收模式

  delay_ms(150);
    OLED_Init() ;
  OLED_Fill(0x00);                    //清屏
  
   for(i=0;i<8;i++)
    {
     LCD_P16x16Ch(i*16,0,i);     
   };
   
    for(i=8;i<11;i++)
    {
     LCD_P16x16Ch(i*16-16*8,4,i);     
   };
     for(i=15;i<18;i++)
    {
     LCD_P16x16Ch(i*16-16*15,2,i);     
   };
   LCD_P8x16Str(48, 2,":");
   LCD_P8x16Str(48, 4,":");
  LCD_P8x16Str(80, 4,"'C");
   LCD_P8x16Str(0, 6,"PWMY:");
   CSZX(90);     //超聲波的控制舵機(jī)角度
   XCZX(90);    //轉(zhuǎn)向角的控制舵機(jī)角度
   delay_ms(1500);   //讓舵機(jī)有時(shí)間轉(zhuǎn)到中間
  while(1)
  {  
  if(NRF24L01_RxPacket_MA(RxPayload)==RX_OK)  
   if(RxPayload[0] == 0x01)                                  //檢驗(yàn)校驗(yàn)碼
   {   
   while( !(NRF24L01_RxPacket_MA(RxPayload+1)==RX_OK));    //等待接收數(shù)據(jù)
    while( !(NRF24L01_RxPacket_MA(RxPayload+2)==RX_OK));    //等待接收數(shù)據(jù)
    while( !(NRF24L01_RxPacket_MA(RxPayload+3)==RX_OK));   //等待接收數(shù)據(jù)
   }

   
    if(RxPayload[0] == 0x01 && RxPayload[3] == 0x02)   //符合校驗(yàn)碼的值 ,則中間的數(shù)據(jù)是正確的,不然亂碼,錯(cuò)位的數(shù)據(jù)就不對(duì)
    {
     n1=RxPayload[1];
     n2=RxPayload[2];
  
     RxPayload[0] = 0;
     RxPayload[1] = 0;
     RxPayload[2] = 0;
     RxPayload[3] = 0;
     
    }
   
    XCZX(75+15*n1/50);            
    if(n2<48)moter(0,(49-n2)*80/45);
         else if(n2<52)   moter(0,0);
       else  moter(1,(n2-52)*80/45);
//      CSBZX_();                //控制超聲波舵機(jī)轉(zhuǎn)向的
//        if(CSB==1)          //超聲波測(cè)距
//   {                                
//     StartModule();               //啟動(dòng)HC-SR04模塊 (控制控制口發(fā)一個(gè)10uS以上的高電平)
//     while(!ECHO);              //當(dāng)HC-SR04模塊的接收端ECHO為低電平時(shí),程序執(zhí)行空語句,即等待ECHO端口變?yōu)楦唠娖讲艌?zhí)行下面的語句
//     TR0=1;                     //當(dāng)HC-SR04模塊的接收端ECHO為高電平時(shí),開啟定時(shí)器0計(jì)數(shù)
//     while(ECHO);               //若HC-SR04模塊的接收端ECHO仍為高電平,程序執(zhí)行空語句,即等待ECHO端口變?yōu)榈碗娖讲艌?zhí)行下面的語句
//     TR0=0;                    //當(dāng)HC-SR04模塊的接收端ECHO變?yōu)榈碗娖綍r(shí),關(guān)閉定時(shí)器0
//     c=Conut();                   //計(jì)算距離并在oled屏上顯示
//     CSB=0;
//   
//   if(c<=400) {moter(0,10);kai=0;}
//     else kai=1;
//   }
   
}

}



全部資料51hei下載地址:
nRF24L01無線發(fā)射(硬件SPI)OLED.zip (5.39 MB, 下載次數(shù): 142)



作者: Loser123456    時(shí)間: 2018-12-12 11:28
真的是超級(jí)超級(jí)棒啊,簡(jiǎn)直可以拿去參加飛思卡爾





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1