久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3417|回復: 1
打印 上一主題 下一主題
收起左側

STC12單片機做平衡車程序 mpu6050+L298N+直流減速電機

[復制鏈接]
跳轉到指定樓層
樓主
ID:580450 發表于 2019-7-31 16:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家參考參考。
mpu6050+L298N+直流減速電機

單片機源程序如下:
  1. #include <stc12c5a.h>
  2. #include <intrins.h>
  3. #include <stdio.h>
  4. #include <math.h>

  5. #include "kalman.h"
  6. #include "lcd1602.h"
  7. #include "mpu6050.h"
  8. #include "pid_own.h"
  9. #include "pwm_motor.h"
  10. #include "spe_pos.h"


  11. int INT_PWM;
  12. unsigned int Init_Time=0,Start_Flag=0;


  13. void main()
  14. {
  15.         lcd_init();
  16.         InitMPU6050();
  17.         PWM_Motor_Init();
  18.         INT_Init();
  19.        
  20.         P1M0=1;
  21.         P1M1=0;
  22.        

  23.         while(1)
  24.         {

  25.                 if(GYRO_X<0)
  26.                 {
  27.                         write_com(0x80);
  28.                         write_dat('-');
  29.                         write_dat('0'+(uchar)abs(GYRO_X)/100);
  30.                         write_dat('0'+(uchar)abs(GYRO_X)%100/10);
  31.                         write_dat('0'+(uchar)abs(GYRO_X)%10);
  32.                 }
  33.                 else
  34.                 {
  35.                         write_com(0x80);
  36.                         write_dat('+');
  37.                         write_dat('0'+(uchar)GYRO_X/100);
  38.                         write_dat('0'+(uchar)GYRO_X%100/10);
  39.                         write_dat('0'+(uchar)GYRO_X%10);
  40.                 }

  41.                 if(Angle_End<0)
  42.                 {
  43.                         write_com(0x80+0x40);
  44.                         write_dat('-');
  45.                         write_dat('0'+(uchar)abs(Angle_End)/100);
  46.                         write_dat('0'+(uchar)abs(Angle_End)%100/10);
  47.                         write_dat('0'+(uchar)abs(Angle_End)%10);
  48.                 }
  49.                 else
  50.                 {
  51.                         write_com(0x80+0x40);
  52.                         write_dat('+');
  53.                         write_dat('0'+(uchar)Angle_End/100);
  54.                         write_dat('0'+(uchar)Angle_End%100/10);
  55.                         write_dat('0'+(uchar)Angle_End%10);
  56.                 }
  57.                
  58.                 if(speed<0)
  59.                 {
  60.                         write_com(0x80+9);
  61.                         write_dat('-');
  62.                         write_dat('0'+(uchar)abs(speed)/100);
  63.                         write_dat('0'+(uchar)abs(speed)%100/10);
  64.                         write_dat('0'+(uchar)abs(speed)%10);
  65.                 }
  66.                 else
  67.                 {
  68.                         write_com(0x80+9);
  69.                         write_dat('+');
  70.                         write_dat('0'+(uchar)speed/100);
  71.                         write_dat('0'+(uchar)speed%100/10);
  72.                         write_dat('0'+(uchar)speed%10);
  73.                 }
  74.                
  75.                 if(position<0)
  76.                 {
  77.                         write_com(0x80+0x40+9);
  78.                         write_dat('-');
  79.                         write_dat('0'+(uint)abs(position)/10000);
  80.                         write_dat('0'+(uint)abs(position)%10000/1000);
  81.                         write_dat('0'+(uint)abs(position)%1000/100);
  82.                         write_dat('0'+(uint)abs(position)%100/10);
  83.                         write_dat('0'+(uint)abs(position)%10);
  84.                 }
  85.                 else
  86.                 {
  87.                         write_com(0x80+0x40+9);
  88.                         write_dat('+');
  89.                         write_dat('0'+(uint)abs(position)/10000);
  90.                         write_dat('0'+(uint)abs(position)%10000/1000);
  91.                         write_dat('0'+(uint)position%1000/100);
  92.                         write_dat('0'+(uint)position%100/10);
  93.                         write_dat('0'+(uint)position%10);
  94.                 }
  95.                
  96.                 if(Start_Flag)
  97.                 {
  98.                         INT_PWM = pid_proc(Angle_End,Gyro_End,speed,position);
  99.                        
  100.                         Motor_Con(-INT_PWM,-INT_PWM);
  101.                        
  102.                 }
  103.         }
  104.        
  105. }

  106. void timer1() interrupt 3
  107. {
  108.         TL1 = 0x00;                    //定時10MS
  109.         TH1 = 0xB8;
  110.        
  111.         if(!Start_Flag)                //啟動前的延時
  112.         {
  113.                 Init_Time++;
  114.                 if(Init_Time>=100) Start_Flag=1;
  115.         }
  116.        
  117.         if(Start_Flag)
  118.         {
  119.                 Get_Date();
  120.                 Kalman_Filter(Angel_accY,GYRO_X);
  121.                 Speed_Position_Get();
  122.                 speed_mr = speed_ml = 0;
  123.         }
  124. }
復制代碼

所有程序51hei提供下載:
小車平衡STC穩定.zip (196.23 KB, 下載次數: 114)


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

使用道具 舉報

沙發
ID:1 發表于 2019-7-31 22:52 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩手机在线视频 | 亚州无限乱码 | 国产精品九九 | 美女福利视频一区 | 奇米久久久 | 热99在线 | 午夜精品久久 | 日韩一区二区三区视频 | 欧美日韩国产三级 | 精品久久久久久亚洲精品 | 日韩三区在线 | 日韩成人专区 | 射久久 | 日日夜夜精品 | www日韩| 懂色中文一区二区三区在线视频 | 国产一区亚洲 | 久久99精品久久久久久 | 91精品国产色综合久久不卡98口 | 国产高清精品一区二区三区 | 欧美精品一区二区三区蜜桃视频 | 欧美特级黄色 | 久久人体视频 | 欧美中文字幕一区二区三区亚洲 | 五十女人一级毛片 | 欧美日韩中文字幕 | 综合久久国产 | 亚洲国产精品久久人人爱 | 综合精品 | 美女久久久 | 亚洲婷婷一区 | 亚洲免费视频网站 | 国产精品入口久久 | 二区在线观看 | 精品国产91乱码一区二区三区 | 一级高清| 久久伊人精品 | 黄网站涩免费蜜桃网站 | 国产精品极品美女在线观看免费 | 亚洲精品视频在线播放 | 午夜激情影院 |