ATmega128单片机与舵机控制板通信
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单片机与舵机控制板通信相关推荐
- 学习 stm32(TTL)串口通信控制16路舵机控制板(维特智能)
学习STM32Core平台串口2连接维特智能串口Normal协议,然后通过串口1直接连接舵机控制板(TTL),接收进行通信:需要看产品文档的可以直接官网搜索文档. 16路舵机控制板官方产品网址 在查看 ...
- 基于STC8G2K64S4单片机使用幻尔舵机控制板
#前言 本文主要是讲解了如何使用STC8G2K64S4单片机二次开发使用幻尔舵机控制板 在官网给的资料里有使用方法,因为涉及到串口通讯,对于小白来说可能比较难懂 硬件方面 这块幻尔舵机控制板在淘宝店里 ...
- K210、Openmv与串行总线舵机通信(基于micropython)舵机驱动板和舵机控制板代码
最近博主在使用幻尔公司 串行总线舵机时,想使用k210控制,由于官方没有相关例程(树莓派的版本是python版本代码,用不了)特此分享一下控制代码 主要调用函数 a.to_bytes(x,'littl ...
- micropython esp32驱动舵机_PCA9685舵机控制板与MicroPython-ESP32-1Z实验室
概要 阿凯在本文中讲解了如何使用MicroPython-ESP32通过PCA9685模块控制舵机旋转角度.同时也涉及到了MicroPython-ESP32的I2C资源与API讲解. 出品:1Z实验室 ...
- micropython esp32驱动舵机_乐鑫ESP32-PCA9685舵机控制板与MicroPython-ESP32-电路城论坛 - 电子工程师学习交流园地...
本帖最后由 qiaoweiyiyi 于 2019-2-15 13:58 编辑 概要 阿凯在本文中讲解了如何使用MicroPython-ESP32通过PCA9685模块控制舵机旋转角度.同时也涉及到了M ...
- 最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器
51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...
- 单片机 多机通讯c语言,单片机多机串口通信.doc
单片机多机串口通信 摘要 本文详细介绍了基于RS-485总线的单片机与多台单片机间的串行通信原理.实现方法和相应的通信硬件.软件设计.该设计是由单片机与单片机组成的主从控制系统,其中单片 关键词: 单 ...
- 单片机红外通信c语言,基于C语言的计算机与多单片机红外无线串口通信的实现.doc...
基于C语言的计算机与多单片机红外无线串口通信的实现 基于C语言的计算机与多单片机红外无线 串口通信的实现 黄文亮 信息学院 电子信息工程专业 指导教师 刘传菊 摘要:计算机与一台或多台单片机的通信系统 ...
- 单片机与PC机一样都是计算机,51单片机与PC机通信资料
<51单片机与PC机通信资料>由会员分享,可在线阅读,更多相关<51单片机与PC机通信资料(14页珍藏版)>请在人人文库网上搜索. 1.专业综合实习报告专 业: 电子信息工程 ...
最新文章
- 独家 | ​采用BERT的无监督NER(附代码)
- 【开发环境】戴尔电脑系统重装 ( 下载 Dell OS Recovery Tool 工具 | 使用 Dell OS Recovery Tool 工具制作 U 盘系统 | 安装系统 )
- 利用scrollTop 制作图片无缝滚动
- PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边
- Vue 动态路由的实现以及 Springsecurity 按钮级别的权限控制
- 云炬60s看世界20211116
- Linux内核设计与实现---系统调用
- 如何将一个向量投影到一个平面上_CameraLidar投影:2D3D导航
- 机器学习 -- 用户画像
- 修改TFS2013服务账户或者密码
- vb6 怎么把一个数组的 0 值 去掉_解决逆向查找问题?VLOOKUP、CHOOSE、IF,索引数组,轻松解决...
- 服务器配置tomcat,使用浏览器访问服务器资源
- 链家重庆二手房爬取以及房价预测
- E/art﹕Failed sending reply to debugger: Broken pipe的解决方法
- Android 双RecyclerView嵌套实现购物车逻辑
- 嵌入式系统开发笔记88:认识51微控制器系统架构
- 【源码解析】Activity的启动模式
- 传统安防互联网化无插件直播分析及解决方案
- java 数字翻译成英文_AcWing 59. 把数字翻译成字符串--Java代码
- 基于Pytorch的猫狗分类