这个程序的频率是多少?是不是看根据定时的时间计算的??要改成10k频率怎么改?谢谢!
- <div class="blockcode"><blockquote>
- bit Right_moto_stop=1;
- bit Left_moto_stop =1;
- unsigned char pwm_val_left =0;//变量定义
- unsigned char push_val_left =0;// 左电机占空比N/20
- unsigned char pwm_val_right =0;
- unsigned char push_val_right=0;// 右电机占空比N/20
- unsigned int timer=0;
- /************************************************************************/
- /* PWM调制电机转速 */
- /************************************************************************/
- /* 左电机调速 */
- /*调节push_val_left的值改变电机转速,占空比 */
- void pwm_out_left_moto(void)
- {
- if(Left_moto_stop)
- {
- if(pwm_val_left<=push_val_left)
- {
- Left_moto_pwm=1;
- }
- else
- {
- Left_moto_pwm=0;
- }
- if(pwm_val_left>=20)
- pwm_val_left=0;
- }
- else
- {
- Left_moto_pwm=0;
- }
- }
- /******************************************************************/
- /* 右电机调速 */
- void pwm_out_right_moto(void)
- {
- if(Right_moto_stop)
- {
- if(pwm_val_right<=push_val_right)
- {
- Right_moto_pwm=1;
- }
- else
- {
- Right_moto_pwm=0;
- }
- if(pwm_val_right>=20)
- pwm_val_right=0;
- }
- else
- {
- Right_moto_pwm=0;
- }
- }
- /***************************************************/
- ///*TIMER1中断服务子函数产生PWM信号*/
- void timer1()interrupt 3
- {
- TH1=(65536-1000)/256; //1ms定时
- TL1=(65536-1000)%256;
- timer++;
- pwm_val_left++;
- pwm_val_right++;
- pwm_out_left_moto();
- pwm_out_right_moto();
- }
复制代码
但我想问一下,你会单片机PID温度控制类似的程序吗?也是用PID控制后产生PWM波控制的
一周热门 更多>