|
mega128单片机是一款控制舵机很好的芯片,这里给51黑电子论坛的朋友们分享一个我做的舵机仿真,带程序源码.下面是仿真原理图:
程序源码:
- #include<avr/io.h>
- #include<util/delay.h>
- //实现舵机正转反转,proteus中舵机是按照高电平1ms到2ms控制位置,可修改
- void pwm_init()
- {
- DDRE|=(1<<PE5);
- TCCR3A=0X0A;//PE5输出pwm,快速14模式,匹配时清零,PE5输出
- TCCR3B=0x1a;//14模式,64分频
- OCR3C=6000;//
- ICR3=6000;
- }
- void xz( unsigned int r)//按从0到180角度位置输出,就是proteus电机里的-90到+90
- {
- OCR3C=2000+r*200/18;//2000是高电平1ms
- }
- int main()
- {
- pwm_init();
- unsigned char r=0;
- while(1)
- {
- xz(r);//改变角度
- r++;//角度增加
- _delay_ms(5);//实际应用应中考虑具体延时,5ms太快
- if(r==180)
- {
- _delay_ms(1000);
- while(r!=0)
- {
- xz(r);
- r--;
- _delay_ms(5);
- }
- _delay_ms(1000);
- }
- }
- return 0;
- }
复制代码
|
|