舵机控制程序设计(舵机控制程序)

导读 大家好,我是小典,我来为大家解答以上问题。舵机控制程序设计,舵机控制程序很多人还不知道,现在让我们一起来看看吧!1、以下是我51单前...

大家好,我是小典,我来为大家解答以上问题。舵机控制程序设计,舵机控制程序很多人还不知道,现在让我们一起来看看吧!

1、以下是我51单前写的程序,你写的跟我一样为12MHz,有非常详细的注释。

2、什么是与不明白的问题,问我。

3、 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /程序名称:车载跟踪程序。

4、 / /程序目的:跟着黑线走。

5、 / /时间:2013年10月 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / #包括 无符号整型int_time; / /使用溢出中的记录数。

6、 SBIT PWM = P0 ^ 0; / /伺服控制位。

7、 SBIT SS1 = P2 ^ 0; / /在光传感器前面的定义,I / O端口 SBIT SS2 = P2 ^ 1; SBIT SS3 = P2 ^ 2; SBIT SS4 = P2 ^ 3; SBIT SS5 = P2 ^ 4; SBIT M1_in1 = P1 ^ 0; / /马达定义的I / O端口M1左,右电机M2电机; SBIT M1_in2 = P1 ^ 1; SBIT M2_in1 = P1 ^ 2; SBIT M2_in2 = P1 ^ 3; / * 无效延迟(无符号整数N)/ /延时程序:实现延迟(16 * N +24)我们,在11.0592的条件。

8、 = 1000对应于20ms的 INT I;。

9、 就(i = 0;我TF0 = 0; / /清除TF0标志 TL0 = 236; / /设置定时器的初始 TH0 = 236,/ /设置定时器重载值 TR0 = 1; / /定时器0开始计时 int_time = 0; 无效占用(INT所有,整数部分)/ /占用的宽度,即调整PWM的高电平时间占领 { 的脉冲宽度,如果(int_time>;全部)/ /所有代表与int_time一个循环(一次中断时间)的数量, int_time = 0; 如果(int_time <=部分)/ /部分代表一个周期类当使用int_time的高频率。

10、 PWM = 1; PWM = 0; ; 的main() / /主函数 { 整数S1 = 0,S2 = 0,S3 = 0,S4 = 0,S5 = 0; 的init(); / /初始化中断| |(LED1 == 1 && LED2 == 1 && LED3 == 1 && LED4 == 1 && LED5 == 1 同时(1 ) { 如果(SS1 == 0 && SS2 == 0 && SS3 == 0 && SS4 == 0 && SS5 == 0)/ /如果未检测到的黑线,所述马达( M1 M2)停止工作 { M1_in1 = 0;。

11、 M1_in2 = 0; M2_in1 = 0; M2_in2 = 0; } 同时(SS1 == 1 | | SS2 == 1 | | SS3 == 1 | | SS4 == 1 | | SS5 == 1) { M1_in1 = 1; M1_in2 = 0; M2_in1 = 0; M2_in2 = 1; 同时(SS1 == 0 && SS2 == 1 && SS3 == 1 && SS4 == 1 && SS5 == 1)/ /当左转:SS1检测到黑线 {占据(1000,60);} ;而(SS1 == 0 && SS2 == 0 && SS3 == 1 && SS4 == 1 && SS5 == 1)/ /当左转:SS1和SS2检测到黑线 {占据(1000,85);} 而(SS1 = = 1 && SS2 == 0&&SS3 == 1 && SS4 == 1 && SS5 == 1)/ /当左转:。

12、SS2检测到黑线 {占据(1000,80);} 而(SS1 == 1 && SS2 == 0 && SS3 == 0 && SS4 == 1 &&; SS5 == 1)/ /当左转:SS2和SS3检测到黑线 。

13、 {占据(1000,77);} 同时(SS1 == 1 && SS2 == 1 && SS3 == 0 && SS4 == 1 && SS5 == 1)/ /当直截了当:SS3检测到黑色丝8888888888888 {占据(1000,75);} 而(SS1 == 1 && SS2 == 1 && SS3 == 0 && SS4 == 0 && SS5 == 1)/ /右转:SS3和SS4检测到黑线 {占据(1000,72);} 同时(SS1 == 1 && SS2 == 1 && SS3 == 1 && SS4 == 0。

14、 && SS5 == 1)/ /右转:SS4检测到黑线 {占据(1000,70);} 同时(SS1 == 0 && SS2 == 0 && SS3 == 1 && SS4 == 0 && SS5 == 0)/ /当左转:SS4和SS5检测到黑线 {占据(1000,65);} ;而(SS1 == 1 &&。

15、 SS2 == 1 && SS3 == 1 && SS4 == 1 && SS5 == 0)/ /右转:SS5检测到黑线 {占据(1000,90);} }; } } 无效农行(无效)中断1 / /进入中断时,将计算int_time数加1 int_time + +; } / / M2_in1 = 0; / / M2_in2 = 1; / /延时(1000) ; / / M2_in1 = 0; / / M2_in2 = 0; / /延时(1000);。

本文到此讲解完毕了,希望对大家有帮助。

最新文章