请教一下,如何使用AT89S52编写这样一个程序。
要求,单片机控制舵机,让舵机到中间位置后,左转15度,延迟2ms,右转15度。(度数不要求精确)。舵机为0.5~2.5ms。是舵机正反转 ,要C的,不要汇编 ,一定是应用定时器来控制脉冲的。
多少脉冲舵机转动1度?0.5ms到2.5ms是180度。0.5是起始值,0度,2.5是180度,也就是说1.5是90度
从你的题目中,也说了 0.5ms到2.5ms是180度。0.5是起始值,0度,2.5是180度,也就是说1.5是90度
这样,不管什么多少度,首先要有0.5ms初始脉冲时间,实现转180度只用了2ms,也就是说转1度只用2/180ms,那15度就是15*2/180=0.167ms,这样加上初始值,转15度不就是0.667ms吗?
由于要求清度不是太高,你可以采用一个定时器0.010ms中断一次,这样可以保证误差不超过1度,由于你是周期动作。动作时间约为0.670ms,停留时间为2ms,那周期不就是5.35,
这样问题就清楚了
定义一个计数器、一个动作状态,一个正反状态。并可实现了
当在动作状态时,计数器计到200时根据正反状态启动舵机,并初始计数器,变化正反状态和动作状态
当在非动作状态时,计数器计到67时停止舵机,变化动作状态,并初始计数器,
温馨提示:答案为网友推荐,仅供参考