当前位置: 首页 > news >正文

基于51单片机的舞蹈机器人四路步进电机控制仿真

资料编号:091  下面是相关功能视频演示:

91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)

功能介绍:通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:程序采用C语言,并且有中文注释,新手容易看懂,仿真采用Proteus,编程工具采用keil5

 下面是部分程序展示:

void InitTimer(void) //初始化计数器
{
  TH0 = 0xFA;  //设置触发周期:1000次
  TL0 = 0x24;
  TMOD = TMOD |0x01;  //select mode 1
  TR0 = 1; //start timer0
  ET0 = 1; //enable timer 0 interrupt
  EA =1; //global interrupt enable
}

void SetAllSpeeds(void)  //设置各电机的速度,并让它运动起来
{
  char delta;  //旋转方向 1:正 -1:反  0:停
  for(i=0;i<8;i++)
  {
    P2=pin[i]; //发送锁存信号
    speed_tickers[i] += speeds[i]; //计数值增加 speed[i]越高,增加得越多
    if(speed_tickers[i] >= MAX_SPEED_TICKER) //如果计数值超过预定最大值,就发送脉冲
    {
      speed_tickers[i] = 0;
      delta = 1;
    }
    else if(speed_tickers[i] <= -MAX_SPEED_TICKER) //同上,反响旋转
    {
      speed_tickers[i] = 0;
      delta = -1;
    }
    else delta = 0;
    cur_step[i] += delta;
    cur_step[i] &= 0x07; //计算当前应发脉冲
    P0 = steps[cur_step[i]];
    P2 = 0;
  }
}

void OnTimer(void) interrupt 1 using 2
{
  unsigned char j;
  SetAllSpeeds();
  InitTimer();
  time_t++;
  if(time_t==200) //每200次触发读取一次新舞步数据
  {
    for(j=0;j<8;j++)
      speeds[j] = dancedata[data_pointer+j];
    data_pointer += 8;
    time_t = 0;
  }
}

下面是该资料的分享下载链接:

https://pan.baidu.com/s/12GXiNAanLcw5hcnR2XlMfQ?pwd=m7h6 icon-default.png?t=M85Bhttps://pan.baidu.com/s/12GXiNAanLcw5hcnR2XlMfQ?pwd=m7h6  

相关文章:

  • 8、如何使用FactoryBean向Spring容器中注册bean?
  • 知识蒸馏 | YOLOv7知识蒸馏实战篇 | 2/2*
  • MySQL纯代码复习(上)
  • [附源码]Python计算机毕业设计白果园网上水果超市
  • 【JVM】java的jvm类加载器和类加载子系统
  • 正则表达式(常用最新版)
  • NX二次开发-调内部函数SEL_set_type_filter_index_by_label设置类型过滤器例子剖析怎么查找内部函数调用内部函数
  • 李峋同款爱心代码
  • VMware 网络模式
  • 缓存穿透、缓存击穿、缓存雪崩区别和解决方案
  • SpringBoot--获取路径中的参数(x-www-form-urlencoded)--方法/实例
  • call()、apply()、bind() 区别、使用场景、实现方式
  • python3 爬虫(初试牛刀)
  • excel的frequency函数的用法和实例
  • 程序员这个身份,比你想象的还值钱!
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • Invalidate和postInvalidate的区别
  • java小心机(3)| 浅析finalize()
  • LeetCode算法系列_0891_子序列宽度之和
  • mockjs让前端开发独立于后端
  • Node项目之评分系统(二)- 数据库设计
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • TCP拥塞控制
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 订阅Forge Viewer所有的事件
  • 前端面试题总结
  • 探索 JS 中的模块化
  • 用jquery写贪吃蛇
  • 中文输入法与React文本输入框的问题与解决方案
  • Mac 上flink的安装与启动
  • 如何用纯 CSS 创作一个货车 loader
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #HarmonyOS:基础语法
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (windows2012共享文件夹和防火墙设置
  • (二十三)Flask之高频面试点
  • (蓝桥杯每日一题)love
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转) Face-Resources
  • (转) ns2/nam与nam实现相关的文件
  • ./configure,make,make install的作用(转)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 4.0中的泛型协变和反变
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET关于 跳过SSL中遇到的问题
  • .NET项目中存在多个web.config文件时的加载顺序
  • .Net中的设计模式——Factory Method模式