智能小车舵机控制_第1页
智能小车舵机控制_第2页
智能小车舵机控制_第3页
智能小车舵机控制_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/只利用一个定时器T0,定时时间为,定义一个角度标识,数值为1、2、3、4、5,实现、1ms、2ms高电平的输出,再定义一个变量,数值最大为40,实现周期为20ms./每次进入定时中断,判断此时的角度标识,进行/相应的操作.比方此时为5,那么进入的前5次中断期间,信号输出为高电平,即为的/高电平.剩下的35次中断期间,信号输出为低电平,即为的低电平.这样总的时间/是20ms,为一个周期./用51板上si和s2按键/用P1输出PWM言号限制舵机#includeunsignedcharcount;/次数标识sbitpwm=P1A7;/PWMsbitjia=P3A0;/sbitjan=P3A1;/信

2、号输出角度增加按键检测IO口角度减少按键检测IO口sbitjianwei=P3A4;/按键位unsignedcharjd;/角度标识sbitdula=P2A6;sbitwela=P2A7;unsignedcharcodetable尸0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5evoiddelay(unsignedchari)/延时unsignedcharj,k;for(j=i;j0;j-)for(k=125;k0;k-);)voidTime0_Init()/TMOD=0 x0

3、1;/IE=0 x82;TH0=0 xfe;TL0=0 x33;/TR0=1;/)voidTime0_Int()interrupt1/TH0=0 xfe;/TL0=0 x33;if(countjd)/pwm=1;/elsepwm=0;/count=(count+1);/count=count%40;/定时器初始化定时器0工作在方式1晶振,定时器开始中断程序重新赋值判断次数是否小于角度标识确实小于,PWMt出高电平大于那么输出低电平次数加1次数始终保持为40即保持周期为20ms)voidkeyscan()/按键扫描(if(jia=0)/角度增加按键是否按卜(delay(10);/按卜延时,消抖i

4、f(jia=0)/确实按卜(jd+;/角度标识加1count=0;/按键按下那么20ms周期从新开始if(jd=6)jd=5;/已经是180度,那么保持while(jia=0);/等待按键放开)if(jan=0)/角度减小按键是否按卜,(delay(10);if(jan=0)(jd-;/角度标识减1count=0;if(jd=0)jd=1;/已经是0度,那么保持while(jan=0);)voiddisplay()/数码管显示函数(unsignedcharbai,shi,ge;switch(jd)/根据角度标识显示相应的数值(case1:/为1,角度为0,前3个数码管显示bai=0;shi=0

5、;ge=0;break;case2:bai=0;shi=4;ge=5;break;case3:bai=0;shi=9;ge=0;000break;case4:bai=1;shi=3;ge=5;break;case5:/bai=1;shi=8;ge=0;break;)dula=0;P0=tablebai;dula=1;dula=0;wela=0;P0=0 xfe;wela=1;wela=0;delay(5);P0=tableshi;dula=1;dula=0;P0=0 xfd;wela=1;wela=0;delay(5);P0=tablege;dula=1;dula=0;P0=0 xfb;wel

6、a=1;wela=0;delay(5);)voidmain()jd=1;jianwei=0;count=0;Time0_Init();while(1)keyscan();/display();)为5,角度为180,前3个数码管显示180按键扫描)2#include#defineuintunsignedint#defineucharunsignedcharuintcount;ucharjd;sbitle1=P1A0;/*光电传感器*/sbitPWM=P3A5;舵机pwm/init()(TMOD=0 x01;/设定定时器TH0=0 xFE;TL0=0 x0c;/设定定时初始值EA=1;ET0=1;

7、TR0=1;)voiddelay(uintz)/延时(uintx,y;for(x=z;x0;x-)for(y=125;y0;y-);)voidtimer0()interrupt1/产生pwm(言号限制舵机,周期(TH0=0 xFE;TL0=0 x0c;/设定定时初始值if(countjd)/判断次数是否小于角度标识(PWM=1;确定小于,pwm输出高电平/delay(180);/延时一会,可以减慢舵机转速)elsePWM=0;/大于那么输出低电平count=count+1;/次数力口1count=count%40;/次数始终保持为40即保持周期为20ms)voidxunji()/循迹函数,读取光电管状态(if(le1!=0)(delay(10);if(le1=0)(jd+;count=0;while(le1=0);)/分析光电管状态,看你的电路检测到黑线输出1或者是0else(count=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论