完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1 条评论
8个回答
|
|
回帖奖励 +10 分积分
51单片机除了几款加强版的带pwm,很多都不带,所以要用51控制伺服电机很多时候就要软件模拟pwm。看了些代码有的是通过延时来输出pwm波,有的也用了定时器但是那些代码要驱动多路伺服电路就显得比较麻烦。下面的代码是通过定时器0产生每0.5ms一次的提醒,程序在大循环中通过调用DJ()函数可以返还值给伺服电机信号引脚,DJ()函数可以定旋转的角度,但是因为定时器设置是0.5ms的中断这就决定了旋转呢角度只能是-45,-90,0,45,90。如果要提高精度就要通过设置定时器的初值,改变函数的num值来达成。
#include"reg52.h" unsigned int num=0; //舵机 ***it DJ1=P3^6; ***it DJ2=P3^7; /*引脚定义*/ int DJ(int a); //函数声明 timerinit() //定时器中断初始化 { TMOD=0x01; //设置定时器0为工作方式1 EA=1; //开总中断 ET0=1; //定时器0中断允许 TH0 = (65536-500)/256; //初值使得定时器0.5毫秒溢出 TL0 = (65536-500)%256; TR0=0; } main() { timerinit(); while(1) { } } timer() interrupt 0 //0.5ms发生一次中断,20ms后定时器置0重新计数 { num++; DJ1=DJ(3); DJ2=DJ(3); if(num>=40) { num=0; TH0 = (65536-500)/256; //初值使得定时器0.5毫秒溢出 TL0 = (65536-500)%256; return; } } int DJ(char a) //当a=3舵机所在的位置是0度a=2 a=1分别对应的位置是-45 -90度a=4 a=5对应位置为45 90度 { if(num>=a||num>=5) return 0; if(num>=1) return 1; }
最佳答案
|
|
|
|
跟着楼主学习一下
|
|
|
|
hobbye501 发表于 2017-3-10 16:19 谢谢大哥,不过我要的是stmf4的,不是51 |
|
|
|
|
|
|
|
|
|
|
|
51单片机除了几款加强版的带pwm,很多都不带,所以要用51控制伺服电机很多时候就要软件模拟pwm。看了些代码有的是通过延时来输出pwm波,有的也用了定时器但是那些代码要驱动多路伺服电路就显得比较麻烦。下面的代码是通过定时器0产生每0.5ms一次的提醒,程序在大循环中通过调用DJ()函数可以返还值给伺服电机信号引脚,DJ()函数可以定旋转的角度,但是因为定时器设置是0.5ms的中断这就决定了旋转呢角度只能是-45,-90,0,45,90。如果要提高精度就要通过设置定时器的初值,改变函数的num值来达成。
#include"reg52.h" unsigned int num=0; //舵机 ***it DJ1=P3^6; ***it DJ2=P3^7; /*引脚定义*/ int DJ(int a); //函数声明 timerinit() //定时器中断初始化 { TMOD=0x01; //设置定时器0为工作方式1 EA=1; //开总中断 ET0=1; //定时器0中断允许 TH0 = (65536-500)/256; //初值使得定时器0.5毫秒溢出 TL0 = (65536-500)%256; TR0=0; } main() { timerinit(); while(1) { } } timer() interrupt 0 //0.5ms发生一次中断,20ms后定时器置0重新计数 { num++; DJ1=DJ(3); DJ2=DJ(3); if(num>=40) { num=0; TH0 = (65536-500)/256; //初值使得定时器0.5毫秒溢出 TL0 = (65536-500)%256; return; } } int DJ(char a) //当a=3舵机所在的位置是0度a=2 a=1分别对应的位置是-45 -90度a=4 a=5对应位置为45 90度 { if(num>=a||num>=5) return 0; if(num>=1) return 1; } |
|
|
|
同问,一起学习STM32F4的程序
|
|
|
|
开玩笑,F4这是人家的核心程序,能给你
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
7 浏览 0 评论
26 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
13 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
644 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1000 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11770 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 04:04 , Processed in 0.667342 second(s), Total 92, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号