精选优质文档-----倾情为你奉上单片机控制舵机左右转接线说明:P1.0与P1.1输出相反的PWM波;设置4个按键用来控制转动角度程序代码:#include #include #define uchar unsigned char#define uint unsigned intsbit PWM_1=P1^0; //舵机端口定义sbit PWM_2=P1^1;sbit key_1=P3^5; //按键定义sbit key_2=P3^4;sbit key_3=P3^3;sbit key_4=P3^2;sbit Bee = P3^6; //蜂鸣器引脚uchar tt=50; //PWM波总周期void delay_100ms() //12M晶振{ uchar k=49,u=185; while(k--) while(u--);}/*void delay_20us() //12M晶振{ _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();}*/void delay_PWM(uchar t) //{ for(;t>0;t--) { _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); }}void PWM_ch1(uchar t) //t=1时,延时30us; t每增加1,延时增加20us{ PWM_1=1; PWM_2=0; delay_PWM(t); PWM_1=0; PWM_2=1; delay_PWM(tt-t);}void Beep(){ Bee=1; delay_100ms(); delay_100ms(); delay_100ms(); delay_100ms(); Bee=0;}void main(void){ uchar i,s=25,ss=10; while(1) { if(key_1==0) { while(key_1==0); //等待按键释放 delay_100ms(); s++; if(s>=tt-1) { s=tt-2; Beep(); } } if(key_2==0) { while(key_2==0); //等待按键释放 delay_100ms(); s--; if(s<2) { s=2; Beep(); } } if(key_4==0) { while(key_2==0); //等待按键释放 delay_100ms(); ss+=5; if(ss>80) { ss=2; Beep(); } } if(key_3==0) { while(key_3==0); //等待按键释放 delay_100ms(); for(i=0;i