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

QQ登錄

只需一步,快速開始

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

k60單片機(jī)依據(jù)紅外信號(hào)識(shí)別方向控制舵機(jī)電機(jī)舵機(jī)的源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
k60單片機(jī),依據(jù)紅外信號(hào)識(shí)別方向控制舵機(jī)電機(jī)舵機(jī)的程序

紅外信號(hào)采用海爾牌遙控器內(nèi)置NEC協(xié)議, 協(xié)議包括9ms的高電平、4.5ms 的低電平、四個(gè)字節(jié)地址碼和命令碼,四個(gè)字節(jié)地址碼分別為:地址碼 0xC3,地址反碼 0x3C,命令碼 0x55,命令碼反碼 0xAA,低位首發(fā)�;鶐盘�(hào)如下圖1 所示


圖1 基帶信號(hào)圖
實(shí)際信號(hào)中高電平為 38KHz的信號(hào),實(shí)際信號(hào)如下圖所示:

超聲波導(dǎo)引信號(hào)頻率為 40KHz的方波。

引腳使用:
KLED1  PTE0
KLED2  PTE1

SERVO
PWM     PTA11

舵機(jī)占空比    18.5%     14.0%       11.3%
舵漿位置      左滿舵  中間位置    右滿舵


電機(jī)    PA07
  
紅外接收器
1->PTB0
2->PTB4
3->PTB6
4->PTB8
5->PTB10
6->PTB16
7->PTB20
8->PTB22


k60單片機(jī)源程序如下:
  1. #include "common.h"
  2. #include "isr.h"
  3. #include "LedBuz.h"
  4. #include "FreeCars.h"
  5. #include "infrared.h"
  6. #include "motor.h"
  7. #include "servo.h"
  8. #include "oled.h"
  9. #include "VoltageDetect.h"
  10. #include "wdog.h"
  11. #include "dirCtrl.h"

  12. /* 修改主頻 請(qǐng)使用 CMSIS標(biāo)準(zhǔn)文件 system_MKxxxx.c 中的 CLOCK_SETUP 宏 */

  13. void SysInitialization(void);                        //系統(tǒng)初始化


  14. //uint8_t startLineMaskFlag = 0;                     //起跑線屏蔽標(biāo)志
  15. //uint32_t VoltageTime,MenuTime,FreeCarsTime,ImgDealFreTimer,StartRunTime,StartLineDetectTime;


  16. int main(void)
  17. {
  18.     test_motor=1500;
  19.         SysInitialization();                                   //系統(tǒng)初始化
  20.         
  21.         EnableInterrupts();                               //開啟全部中斷
  22.    
  23.     KLED2_ON;
  24.     KLED1_ON;   


  25.     //test_motor=1580;
  26.     Servo_Test=1455;
  27.     DelayMs(1000);

  28.     while(1)
  29.         {

  30.       //SingleMotor_Control(test_motor);
  31.       //Servos_control(Servo_Test);
  32.       
  33.       //DirPIDCalculate();
  34.      // VoltageConvert();
  35.         //KLED1_REV;
  36.         KLED2_REV;
  37.       SingleMotor_Control(test_motor);      
  38.       DirPIDCalculate();        
  39.      
  40.     }

  41. }

  42. //系統(tǒng)初始化
  43. void SysInitialization(void)
  44. {
  45.         DisableInterrupts();                              //禁止全部中斷
  46.         DelayInit();                                      //延時(shí)函數(shù)初始化,使用的是DWT
  47.         GPIO_LedBuzInit();                                //初始化LED和蜂鳴器引腳
  48.         FreeCars_Init();                                  //FreeCars上位機(jī)UART引腳配置
  49.         Motor_Init();                                         //電機(jī)初始化(包含單電機(jī)和雙電機(jī)的,在Preprocessor Symbols中設(shè)置)
  50.         Servo_Init();                                         //舵機(jī)初始化   50Hz
  51.         //Voltage_Init();                                                  //電壓檢測初始化
  52.         DirPID_Init();                                                //方向PID參數(shù)初始化   
  53.     GPIO_InfraredInit();                 //紅外接收器初始化
  54.     PIT_QuickInit(HW_PIT_CH0, 10000);    //CH0  10ms中斷,用于舵機(jī)PID控制
  55.         ISR_Config();                                                  //所有中斷的配置,該函數(shù)應(yīng)放在所有初始化函數(shù)之后
  56. }
復(fù)制代碼


所有資料51hei提供下載:
紅外程序.rar (5.94 MB, 下載次數(shù): 23)


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表