首页 舵机的程序

舵机的程序

举报
开通vip

舵机的程序舵机的程序 unsigned char count; //0.5ms次数标识 sbit pwm =P1^7 ; //PWM信号输出 sbit jia =P3^6; //角度增加按键检测IO 口 sbit jan =P3^7; //角度减少按键检测IO口 unsigned char jd; //角度标识 unsigned char flag; sbit dula=P2^6; sbit wela=P2^7; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,...

舵机的程序
舵机的程序 unsigned char count; //0.5ms次数标识 sbit pwm =P1^7 ; //PWM信号输出 sbit jia =P3^6; //角度增加按键检测IO 口 sbit jan =P3^7; //角度减少按键检测IO口 unsigned char jd; //角度标识 unsigned char flag; sbit dula=P2^6; sbit wela=P2^7; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(unsigned char i)//延时 { unsigned char j,k; for(j=i;j>0;j--) for(k=125;k>0;k--); } void Time0_Init() //定时器初始化 { TMOD = 0x01; //定时器0工作在方式1 IE = 0x82; TH0 = 0xfe; TL0 = 0x33; //11.0592MZ晶振,0.5ms TR0=1; //定时器开始 } void Time0_Int() interrupt 1 //中断程序 { TH0 = 0xfe; //重新赋值 TL0 = 0x33; if(flag!=29||jd!=1) //这个判断是为了在0度时让信号线只输出 30个周期的PWM信号,然后就让信号线为低电平 { if(count<jd) //判断0.5ms次数是否小于角度标识 ——————————————————————————————————————————————— pwm=1; //确实小于,PWM输出高电平 else pwm=0; } count=(count+1); //0.5ms次数加1 if(count==39) //次数始终保持为40 即保持周期为20ms { count=0; if(jd==1) if(flag!=29) flag=flag+1; //如果30个周期已经到了,则保持这个flag为29,使在前面的判断中不在输出PWM信号 } } void keyscan() //按键扫描 { if(jia==0) //角度增加按键是否按下 { delay(10); //按下延时,消抖 if(jia==0) //确实按下 { flag=0; //有键按下就让flag为0,这样当再次要使电机为0度时可以再次 jd++; count=0; if(jd==6) jd=5; while(jia==0); ——————————————————————————————————————————————— } } if(jan==0) { delay(10); if(jan==0) {flag=0; // 以再次输 jd--; count=0; if(jd==0) jd=1; while(jan==0); } } } void display() { unsigned switch(jd) { case 1: ——————————————————————————————————————————————— bai=0; shi=0; ge=0; break; case bai=0; shi=4; 输出30个周期的PWM信号 //角度标识加 1 //按键按下 则20ms周期从新开始 //已经 是180度,则保持 //等待按键放开 //角度减小 按键是否按下 有键按下就让flag为0,这样当再次要使电机为0度 时可出30个周期的PWM信号 //角度标识减1 //已经是0度,则保持 //数码管显示函数 char bai,shi,ge; //根据角度标识显示相应的数值 //为1,角度为0,前3个 数码管显示000 2: ge=5; break; case bai=0; shi=9; ge=0; break; case bai=1; shi=3; ge=5; break; case 5: bai=1; shi=8; ge=0; break; } dula=0; P0=table[bai]; dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(5); P0=table[shi]; dula=1; dula=0; P0=0xfd; wela=1; ——————————————————————————————————————————————— wela=0; delay(5); P0=table[ge]; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); } void { 3: 4: //为5,角度为180,前3个数码管显示180 main() jd=1; flag=0; count=0; pwm=0; Time0_Init(); while(1) { keyscan(); display(); } } //按键扫描 ———————————————————————————————————————————————
本文档为【舵机的程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_266065
暂无简介~
格式:doc
大小:16KB
软件:Word
页数:5
分类:
上传时间:2017-11-17
浏览量:17