单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 121|回复: 0
打印 上一主题 下一主题
收起左侧

飞思卡尔三轮程序+实物图

[复制链接]
跳转到指定楼层
楼主
bgt 发表于 2019-11-26 22:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
给大家分享一个飞思卡尔三轮的程序自己大学亲自做的
车模可以选择飞思卡尔要求的车模
下边就靠自己 调PID了


单片机源程序如下:
  1. /*********************************************************************************************************************
  2. *
  3. * @file                       isr.c
  4. *                                  中断服务函数
  5. * @core                        S9KEA128
  6. * @date                       2018
  7. ********************************************************************************************************************/
  8. #include "includefile.h"


  9. /****************全局变量定义******************/
  10. uint8 Flag_Stop = OFF;                        //=OFF停车
  11. uint8 Flag_Speed = ON;                        //=ON增加速度控制
  12. uint8 Flag_Direction = ON;                //=ON增加方向控制
  13. uint8 Flag_Debuge = OFF;                //=ON进入调参界面
  14. uint8 Flag_Out = 2;                                //虚拟示波器显示标志


  15. void PIT_CH0_IRQHandler(void)
  16. {
  17.     PIT_FLAG_CLR(PIT0);
  18.    
  19.         //标志变量定义
  20.         static uint16 i = 0;
  21.         static uint16 j = 0;
  22.        
  23.         //0.5sLED闪烁
  24.         i++;
  25.         if(i >= 100)  
  26.     {   
  27.             i = 0;
  28.             gpio_turn(LED);
  29.         }
  30.         //20ms一次速度控制
  31.         j++;
  32.         if(j >= 4)  
  33.     {   
  34.             j = 0;
  35.                 SpeedControl();
  36.         }       
  37.         DirectionControl();        //方向控制
  38.         PWMOut();                        //最终PWM输出
  39.        
  40.         //以下为虚拟示波器部分
  41.         switch(Flag_Out)
  42.         {               
  43.                 case 0 :         OutData[0] = (int)g_fRealSpeed;                //真实速度
  44.                                           OutData[1] = (int)g_fSpeedError;        //速度偏差
  45.                                         OutData[2] = (int)g_fSpeedFilter;        //速度滤波
  46.                                         OutData[3] = (int)g_fExpectSpeed;        //期望速度
  47.                                         break;
  48.                                        
  49.                 case 1 :        OutData[0] = (int)g_ValueOfAD[0];        //水平左电感
  50.                                           OutData[1] = (int)g_ValueOfAD[1];        //水平右电感
  51.                                         OutData[2] = (int)(1000*g_fDirectionError[0]);                //方向偏差          (放大1000倍)
  52.                                         OutData[3] = (int)(1000*g_fDirectionError_dot[0]);        //方向偏差微分(放大1000倍)
  53.                                         break;
  54.                                        
  55.                 case 2 :        OutData[0] = (int)g_ValueOfAD[0];//水平左电感
  56.                                           OutData[1] = (int)g_ValueOfAD[1];//垂直右电感
  57.                                         OutData[2] = (int)g_ValueOfAD[2];//水平左电感
  58.                                         OutData[3] = (int)g_ValueOfAD[3];//垂直右电感
  59.                                         break;       
  60.                                        
  61.                 case 3 :        OutData[0] = (int)g_fSpeedControlOut;                //速度控制输出        (红)
  62.                                           OutData[1] = (int)g_fDirectionControlOut;        //方向输出                (黄)
  63.                                         OutData[2] = (int)g_PWMOut;                                        //总PWM                        (蓝)
  64.                                         OutData[3] = 0;
  65.                                         break;
  66.                 default :break;
  67.         }
  68.         OutPut_Data();
  69. }


  70. void PIT_CH1_IRQHandler(void)
  71. {
  72.     PIT_FLAG_CLR(PIT1);
  73.    
  74. }

  75. void IRQ_IRQHandler(void)
  76. {  
  77.     CLEAR_IRQ_FLAG;
  78.     gpio_set(BUZZ,1);                //蜂鸣器开
  79.     ir_decode();                        //红外解码和处理   
  80.     gpio_set(BUZZ,0);                 //蜂鸣器关
  81. }

  82. void KBI0_IRQHandler(void)
  83. {
  84.     CLEAN_KBI0_FLAG;

  85. }

  86. /*
  87. 记得进入中断后清除标志位
  88. FTMRE_IRQHandler      
  89. PMC_IRQHandler        
  90. IRQ_IRQHandler        
  91. I2C0_IRQHandler      
  92. I2C1_IRQHandler      
  93. SPI0_IRQHandler      
  94. SPI1_IRQHandler      
  95. UART0_IRQHandler
  96. UART1_IRQHandler
  97. UART2_IRQHandler
  98. ADC0_IRQHandler      
  99. ACMP0_IRQHandler      
  100. FTM0_IRQHandler      
  101. FTM1_IRQHandler      
  102. FTM2_IRQHandler      
  103. RTC_IRQHandler        
  104. ACMP1_IRQHandler      
  105. PIT_CH0_IRQHandler   
  106. PIT_CH1_IRQHandler   
  107. KBI0_IRQHandler      
  108. KBI1_IRQHandler      
  109. Reserved26_IRQHandler
  110. ICS_IRQHandler        
  111. WDG_IRQHandler        
  112. PWT_IRQHandler        
  113. MSCAN_Rx_IRQHandler   
  114. MSCAN_Tx_IRQHandler   
  115. */
复制代码
  1. /*********************************************************************************************************************
  2. *
  3. * @file                       main.c
  4. *                                  主函数
  5. * @core                        S9KEA128
  6. * @date                       2018
  7. ********************************************************************************************************************/

  8. #include "includefile.h"
  9.    
  10. int main(void)
  11. {
  12.     get_clk();              //获取时钟频率
  13.     DisableInterrupts;

  14.     car_init();
  15. //        param_in();             //读取参数
  16.     EnableInterrupts;
  17.     while(1)
  18.     {
  19.                 oled_print_16x8short(0 ,0,g_ValueOfAD[0]);//显示水平左电感
  20.                 oled_print_16x8short(80,0,g_ValueOfAD[1]);//显示水平右电感
  21.                
  22.                 oled_print_16x8short(10,3,g_ValueOfAD[2]);//显示垂直左电感
  23.                 oled_print_16x8short(70,3,g_ValueOfAD[3]);//显示垂直右电感
  24.     }
  25. }
复制代码

所有资料51hei提供下载:
第十三届电磁组程序 - 无调参系统版.7z (744.73 KB, 下载次数: 3)

评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享分享 分享淘帖 顶 踩
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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