標(biāo)題: k60單片機依據(jù)紅外信號識別方向控制舵機電機舵機的源程序 [打印本頁]

作者: 578969416    時間: 2018-9-17 11:10
標(biāo)題: k60單片機依據(jù)紅外信號識別方向控制舵機電機舵機的源程序
k60單片機,依據(jù)紅外信號識別方向控制舵機電機舵機的程序

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


圖1 基帶信號圖
實際信號中高電平為 38KHz的信號,實際信號如下圖所示:

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

引腳使用:
KLED1  PTE0
KLED2  PTE1

SERVO
PWM     PTA11

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


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


k60單片機源程序如下:
  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. /* 修改主頻 請使用 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ù)初始化,使用的是DWT
  47.         GPIO_LedBuzInit();                                //初始化LED和蜂鳴器引腳
  48.         FreeCars_Init();                                  //FreeCars上位機UART引腳配置
  49.         Motor_Init();                                         //電機初始化(包含單電機和雙電機的,在Preprocessor Symbols中設(shè)置)
  50.         Servo_Init();                                         //舵機初始化   50Hz
  51.         //Voltage_Init();                                                  //電壓檢測初始化
  52.         DirPID_Init();                                                //方向PID參數(shù)初始化   
  53.     GPIO_InfraredInit();                 //紅外接收器初始化
  54.     PIT_QuickInit(HW_PIT_CH0, 10000);    //CH0  10ms中斷,用于舵機PID控制
  55.         ISR_Config();                                                  //所有中斷的配置,該函數(shù)應(yīng)放在所有初始化函數(shù)之后
  56. }
復(fù)制代碼


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







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