找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3335|回复: 0
收起左侧

k60单片机依据红外信号识别方向控制舵机电机舵机的源程序

[复制链接]
ID:398909 发表于 2018-9-17 11:10 | 显示全部楼层 |阅读模式
k60单片机,依据红外信号识别方向控制舵机电机舵机的程序

红外信号采用海尔牌遥控器内置NEC协议, 协议包括9ms的高电平、4.5ms 的低电平、四个字节地址码和命令码,四个字节地址码分别为:地址码 0xC3,地址反码 0x3C,命令码 0x55,命令码反码 0xAA,低位首发。基带信号如下图1 所示
0.png

图1 基带信号图
实际信号中高电平为 38KHz的信号,实际信号如下图所示:
0.jpg
超声波导引信号频率为 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
0.jpg

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标准文件 system_MKxxxx.c 中的 CLOCK_SETUP 宏 */

  13. void SysInitialization(void);                        //系统初始化


  14. //uint8_t startLineMaskFlag = 0;                     //起跑线屏蔽标志
  15. //uint32_t VoltageTime,MenuTime,FreeCarsTime,ImgDealFreTimer,StartRunTime,StartLineDetectTime;


  16. int main(void)
  17. {
  18.     test_motor=1500;
  19.         SysInitialization();                                   //系统初始化
  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. //系统初始化
  43. void SysInitialization(void)
  44. {
  45.         DisableInterrupts();                              //禁止全部中断
  46.         DelayInit();                                      //延时函数初始化,使用的是DWT
  47.         GPIO_LedBuzInit();                                //初始化LED和蜂鸣器引脚
  48.         FreeCars_Init();                                  //FreeCars上位机UART引脚配置
  49.         Motor_Init();                                         //电机初始化(包含单电机和双电机的,在Preprocessor Symbols中设置)
  50.         Servo_Init();                                         //舵机初始化   50Hz
  51.         //Voltage_Init();                                                  //电压检测初始化
  52.         DirPID_Init();                                                //方向PID参数初始化   
  53.     GPIO_InfraredInit();                 //红外接收器初始化
  54.     PIT_QuickInit(HW_PIT_CH0, 10000);    //CH0  10ms中断,用于舵机PID控制
  55.         ISR_Config();                                                  //所有中断的配置,该函数应放在所有初始化函数之后
  56. }
复制代码
0.png

所有资料51hei提供下载:
红外程序.rar (5.94 MB, 下载次数: 23)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表