ATmega128单片机通过舵机控制板,控制多路舵机动作。舵机控制板与单片机之间数据通信的方式,采用了常见的串行通信(USART)。舵机控制板具有自动识别波特率(9600,19200,38400,57600,115200,128000自动识别)的功能。

舵机移动指令:

指令格式:#<num>P<pwm>.... T<time>\r\n

<num>=舵机号,范围1-32(十进制数)

<pwm>=脉冲宽度(舵机位置),范围500–2500。单位us(微秒)

<time>=移动到指定位置使用的时间,对所有舵机有效(范围:100-9999)。

\r\n = 十六进制数0x0d,0x0a(回车符),指令结束符。

例如: #8P600T1000\r\n

移动8号舵机到脉宽600us,使用时间为1000毫秒

#11P2000#30P2500T1500\r\n

移动11号舵机到脉宽2000us,移动30号舵机到脉宽2500us,使用的时间为1500毫秒,舵机移动的速度依赖于前一时刻舵机的位置决定,11号舵机和30号舵机同时到达指定位置。

下面是代码:

/****************************************************----------------------------------------main.c-----------------------------------****************************************************/#include<iom128v.h>
#include<macros.h>
#include"128_USART0.h"/*******************************************
函数名称: void delay_nms(uint ms)
功    能: 延时指定毫秒(8M晶振)
参    数: ms--延时的毫秒数
返 回 值: 无
/********************************************/
void delay_nms(uint ms)
{uint i,j;for( i=0;i<ms;i++)for(j=0;j<1141;j++);//1141是在8MHz晶振下,仿真得到的数值
}/*******************************************
函数名称: main
功    能: 主函数
参    数: 无
返 回 值: 无
/********************************************/
void main(void)
{USART0_init();while(1){USAT0_send_string("#1P1056#2P2056T2500\r\n");delay_nms(3000);USAT0_send_string("#1P1722#2P1433T2500\r\n");delay_nms(3000);}
}/************************************************************************END*********************************************************************//***********************************************--------------------------------128_USART0.h-------------------------***********************************************/#ifndef _128_USART0_H_
#define _128_USART0_H_
/******************数据类型宏定义******************/
#define uchar  unsigned char
#define uint   unsigned int#define fosc   8000000  //系统晶振
#define baud   9600     //波特率
/******************串口函数**********************/
void USART0_init(void);
void USART0_send_byte(uchar data);
uchar USART0_receive_byte(void);
void USAT0_send_string(char *str);#endif/************************************************************************END*********************************************************************//***********************************************--------------------------------128_USART0.c-------------------------***********************************************/#include<iom128v.h>
#include"128_USART0.h"/*******************************************
函数名称: uart0_init
功    能: 串口0的初始化
参    数: com
返 回 值: 无
/********************************************/
void USART0_init(void)
{UCSR0B=0X00;UCSR0A=0X00;UCSR0C=(1<<UCSZ01) | (1<<UCSZ00);//字符长度为:8位UBRR0L=(fosc/16/(baud+1))%256;   //波特率寄存器设定UBRR0H=(fosc/16/(baud+1))/256;UCSR0B=(1<<RXEN0) | (1<<TXEN0);  //接收使能,发送使能
}/*******************************************
函数名称: USART0_send_byte
功    能: 串口0发送单字节
参    数: data--发送字符元素
返 回 值: 无
/********************************************/
void USART0_send_byte(uchar data)
{while(!(UCSR0A & (1<<UDRE0)));UDR0=data;
}/*******************************************
函数名称: USART0_receive_byte
功    能: 串口0接收单字节
参    数: 无
返 回 值: UDR0--接收字符元素
/********************************************/
uchar USART0_receive_byte(void)
{while(!(UCSR0A & (1<<RXC0)));return (UDR0);
}/*******************************************
函数名称: USAT0_send_string
功    能: 串口0发送字符串
参    数: str--字符串数据
返 回 值: 无
/********************************************/
void USAT0_send_string(char *str)
{while(*str){USART0_send_byte(*str);str++;}USART0_send_byte(0X0A);//换行USART0_send_byte(0X0D);//回车
}/************************************************************************END*********************************************************************/

ATmega128单片机与舵机控制板通信相关推荐

  1. 学习 stm32(TTL)串口通信控制16路舵机控制板(维特智能)

    学习STM32Core平台串口2连接维特智能串口Normal协议,然后通过串口1直接连接舵机控制板(TTL),接收进行通信:需要看产品文档的可以直接官网搜索文档. 16路舵机控制板官方产品网址 在查看 ...

  2. 基于STC8G2K64S4单片机使用幻尔舵机控制板

    #前言 本文主要是讲解了如何使用STC8G2K64S4单片机二次开发使用幻尔舵机控制板 在官网给的资料里有使用方法,因为涉及到串口通讯,对于小白来说可能比较难懂 硬件方面 这块幻尔舵机控制板在淘宝店里 ...

  3. K210、Openmv与串行总线舵机通信(基于micropython)舵机驱动板和舵机控制板代码

    最近博主在使用幻尔公司 串行总线舵机时,想使用k210控制,由于官方没有相关例程(树莓派的版本是python版本代码,用不了)特此分享一下控制代码 主要调用函数 a.to_bytes(x,'littl ...

  4. micropython esp32驱动舵机_PCA9685舵机控制板与MicroPython-ESP32-1Z实验室

    概要 阿凯在本文中讲解了如何使用MicroPython-ESP32通过PCA9685模块控制舵机旋转角度.同时也涉及到了MicroPython-ESP32的I2C资源与API讲解. 出品:1Z实验室 ...

  5. micropython esp32驱动舵机_乐鑫ESP32-PCA9685舵机控制板与MicroPython-ESP32-电路城论坛 - 电子工程师学习交流园地...

    本帖最后由 qiaoweiyiyi 于 2019-2-15 13:58 编辑 概要 阿凯在本文中讲解了如何使用MicroPython-ESP32通过PCA9685模块控制舵机旋转角度.同时也涉及到了M ...

  6. 最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  7. 单片机 多机通讯c语言,单片机多机串口通信.doc

    单片机多机串口通信 摘要 本文详细介绍了基于RS-485总线的单片机与多台单片机间的串行通信原理.实现方法和相应的通信硬件.软件设计.该设计是由单片机与单片机组成的主从控制系统,其中单片 关键词: 单 ...

  8. 单片机红外通信c语言,基于C语言的计算机与多单片机红外无线串口通信的实现.doc...

    基于C语言的计算机与多单片机红外无线串口通信的实现 基于C语言的计算机与多单片机红外无线 串口通信的实现 黄文亮 信息学院 电子信息工程专业 指导教师 刘传菊 摘要:计算机与一台或多台单片机的通信系统 ...

  9. 单片机与PC机一样都是计算机,51单片机与PC机通信资料

    <51单片机与PC机通信资料>由会员分享,可在线阅读,更多相关<51单片机与PC机通信资料(14页珍藏版)>请在人人文库网上搜索. 1.专业综合实习报告专 业: 电子信息工程 ...

最新文章

  1. 独家 | ​采用BERT的无监督NER(附代码)
  2. 【开发环境】戴尔电脑系统重装 ( 下载 Dell OS Recovery Tool 工具 | 使用 Dell OS Recovery Tool 工具制作 U 盘系统 | 安装系统 )
  3. 利用scrollTop 制作图片无缝滚动
  4. PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边
  5. Vue 动态路由的实现以及 Springsecurity 按钮级别的权限控制
  6. 云炬60s看世界20211116
  7. Linux内核设计与实现---系统调用
  8. 如何将一个向量投影到一个平面上_CameraLidar投影:2D3D导航
  9. 机器学习 -- 用户画像
  10. 修改TFS2013服务账户或者密码
  11. vb6 怎么把一个数组的 0 值 去掉_解决逆向查找问题?VLOOKUP、CHOOSE、IF,索引数组,轻松解决...
  12. 服务器配置tomcat,使用浏览器访问服务器资源
  13. 链家重庆二手房爬取以及房价预测
  14. E/art﹕Failed sending reply to debugger: Broken pipe的解决方法
  15. Android 双RecyclerView嵌套实现购物车逻辑
  16. 嵌入式系统开发笔记88:认识51微控制器系统架构
  17. 【源码解析】Activity的启动模式
  18. 传统安防互联网化无插件直播分析及解决方案
  19. java 数字翻译成英文_AcWing 59. 把数字翻译成字符串--Java代码
  20. 基于Pytorch的猫狗分类

热门文章

  1. CD4046和CD4518B 组成的 100倍倍频器
  2. iOS-plist: iOS Keys
  3. jquery1.0版本代码解读 each extend
  4. ECU 自动化生产测试系统【案例篇】
  5. c语言 链表 无头结点,C++ 单链表(无头结点)
  6. html5调用720全景,霸屏朋友圈的720°全景H5,你一样可以做
  7. Nuxt作为主应用集成qiankun,SKIP_BECAUSE_BROKEN报错
  8. form表单校验插件(含详细注解)
  9. 查看期刊在中科院的分区
  10. 图的分类--图论笔记