首页 舵机控制C程序

舵机控制C程序

举报
开通vip

舵机控制C程序舵机控制C程序 #include <reg51.h> #define uchar unsigned char #define uint unsigned int /* 变量定义 */ ucharkey_stime_counter,hight_votage=15,timeT_counter; bit key_stime_ok; /* 引脚定义 */ sbitcontrol_signal=P0^0; sbitturn_left=P3^4; sbitturn_right=P3^5;...

舵机控制C程序
舵机控制C程序 #include <reg51.h> #define uchar unsigned char #define uint unsigned int /* 变量定义 */ ucharkey_stime_counter,hight_votage=15,timeT_counter; bit key_stime_ok; /* 引脚定义 */ sbitcontrol_signal=P0^0; sbitturn_left=P3^4; sbitturn_right=P3^5; /***************************************************************** 名称:定时器0初始化 功能:20ms定时,11.0592M晶振 初值=65536-11059200*0.02/12=65536-18432=47104=0xB800 20ms 初值=65536-11059200*0.0001/12=65536-92.16=64430=0xFFA3 ——————————————————————————————————————————————— 0.1ms *********************************************************** ******/ voidTimerInit() { control_signal=0; TMOD=0x01; //设置定时器0 为工作方式1 EA=1; //开总中 断 ET0=1; //定时器0中断 允许 TH0 = 0xFF; //定时器装初值 TL0 = 0xA3; TR0=1; //启动定时器 0 } /********************************************** 定时器0中断服务函数 ***********************************************/ void timer0(void) interrupt 1 using 0 { TH0=0xFF; TL0=0xA3; //定时器0重新装入数值 if (++key_stime_counter>=200) ——————————————————————————————————————————————— { key_stime_counter=0; control_signal=1; key_stime_ok = 1; // 20ms到 timeT_counter=0; } if (key_stime_ok&&(++timeT_counter>=hight_votage)) { key_stime_ok=0; timeT_counter=0; control_signal=0; // hight_votage*0.1ms到 } } /********************************************* 名称:键盘扫描 功能:在按键稳定期内判断键值,并返回键值 **********************************************/ ucharkeyscan(void) { static char key_state = 0; static char key_value = 0; ucharkey_press, key_return = 0; ——————————————————————————————————————————————— key_press=turn_left&turn_right; //读按键I/O电平 switch (key_state) { case 0 : // 按键初始态 if (key_press==0) key_state = 1; // 键被按下,但需要确认是否是干扰 break; case 1 : // 按键确认态 if (key_press==0)//如有键按下则不是干扰,判断键值 { if(turn_left==0) //判断是哪一个按键被按下 key_value=1; //按键较多时可采用switch选择结构 else if(turn_right==0) key_value=2; else key_value=0; key_state = 2; // 状态转换到键释放态 } else key_state = 0; // 按键已抬起,属于干扰,转换到按键初始态 break; case 2 : if (key_press==1) ——————————————————————————————————————————————— { key_return=key_value;//按键释放后再输出键值,如果按下键就输出则可省略key_value key_value=0; key_state = 0; //如果按键释放,转换到按键初始态 } break; } return key_return; //返回键值 } /********************************************* 名称:按键处理 功能: **********************************************/ voidkey_operation(void) { switch (keyscan()) //根据键值不同,执行不同的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 { case 1: hight_votage-=1; if(hight_votage<5) hight_votage=5; break; ——————————————————————————————————————————————— case 2: hight_votage+=1; if(hight_votage>25) hight_votage=25; break; default : break; } } //LED显示函数 voiddiplay() { if(hight_votage>=5&&hight_votage<=7) P1=0xFD; //1灯亮,舵机接近或到达右转极限位置 if(hight_votage>7&&hight_votage<=10) P1=0xFB; //2灯亮 if(hight_votage>10&&hight_votage<=13) P1=0xF7; //3灯亮 if(hight_votage>13&&hight_votage<=16) P1=0xEF; //4灯亮,舵机到达中间位置 if(hight_votage>16&&hight_votage<=19) P1=0xDF; //5灯亮 ——————————————————————————————————————————————— if(hight_votage>19&&hight_votage<=22) P1=0xBF; //6灯亮 if(hight_votage>22&&hight_votage<=25) P1=0x7F; //7灯亮,舵机接近或到达左转极限位置 } /*主程序*/ void main(void) { TimerInit(); while(1) { key_operation(); diplay(); } } ———————————————————————————————————————————————
本文档为【舵机控制C程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601191
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:7
分类:
上传时间:2017-11-17
浏览量:35