完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
接线 接线方法: 红 色 VCC 棕色 GND 橙色 信号线 原理 调整信号线的PWM,实现各个角度转动 高电平t占整个周期T(20ms)的时间 舵机旋转的角度 0.5ms ---------> 0度 1ms ---------> 45度 1.5ms ---------> 90度 2ms ---------> 135度 2.5ms ---------> 180度 参考代码 #include /* 自定义变量类型 */ typedef unsigned char uchar; //0~255 typedef unsigned int uint; //0~65535 uchar Turn_angle; ***it PWM = P3^5; //信号线 uchar kk = 0; //延迟1ms void delay_ms(uint c) //误差 0us { uint a,b; for(;c>0;c--) for(b=102;b>0;b--) for(a=3;a>0;a--); } void Time0_Init() //定时器初始化 { TMOD = 0x01; //定时器0工作在方式1 EA = 1; ET0 = 1; TH0 = 0xfe; TL0 = 0x33; //11.0592MZ晶振,0.5ms TR0=1; //定时器开始 } void main() { Time0_Init(); //PWM = 0; while (1) { kk = 0; Turn_angle = 1; //归零 1--0 2--45 3--90 4--135 5--180 delay_ms(1000); kk = 0; Turn_angle = 5; //旋转 delay_ms(1000); } } void timer0() interrupt 1 { TR0 = 0; //关闭计时 TH0 = 0xfe; TL0 = 0x33; //11.0592MZ晶振,0.5ms if(kk<=Turn_angle) //1---0度 2---45度 3---90 4--- 135度 5---180度 { PWM = 1; } else { PWM = 0; } if(kk==40) //一个周期20ms { kk = 0; } kk ++; TR0 = 1; //开启计时 } 问题总结 1.注意我这里用是11.0592MHZ的晶振,定时器的初值要和自己的板子相对应 2.测试程序时要测试每一个角度,可能会出现错误 3.错误一般出现在定时器上,PWM的占空比出错 |
|
|
|
只有小组成员才能发言,加入小组>>
2545 浏览 0 评论
1142浏览 2评论
742浏览 1评论
495浏览 0评论
256浏览 0评论
418浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 15:44 , Processed in 1.344558 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号