基于51单片机的红外遥控控制电机转速设计毕业设计_第1页
基于51单片机的红外遥控控制电机转速设计毕业设计_第2页
基于51单片机的红外遥控控制电机转速设计毕业设计_第3页
基于51单片机的红外遥控控制电机转速设计毕业设计_第4页
基于51单片机的红外遥控控制电机转速设计毕业设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

摘要郑州/****/大学毕业设计.※※※※※致谢通过本次毕业设计,在一定程度上提高了我学习的能力,让我学到了用多种不同思维去解决和分析问题的方法。让我认识到正确并且科学的方法是解决问题的良好途径,同时在学习的过程中要端正自己的态度,严谨的科学态度在是必不可少的,也是我们成功的基础。这次无线遥控控制电机转速设计,使我懂得了理论联系实际重要性。仅仅只有理论知识很难全面的了解产品的特点和功能,必须在真正接触之后去了解它每一个模块的使用功能和工作原理。同时在这期间解决了各种各样的问题,虽然有的很简单,但依然花费了不少时间。这让我对所学知识有深刻的认识。对掌握不牢靠和理解不到位的地方重新进行了温习,加深了定义和理论的理解。设计完成后,经过焊接电路板,在硬件上实验测试通过。按键操作时间电机正反转,并分成1,2,3,4挡。指示灯也根据档位的不同分别显示。最后在这期间中多亏有老师的耐心、辛勤的指导,才得以顺利地完成了这次的毕业设计。在此由衷的感谢贾老师给我的指导和帮助。参考文献[1] 程琤单片机原理与应用开发国防工业出版社2010[2] 郭天祥新概念51单片机C语言教程电子工业出版社2009[3] 谭浩强C语言程序设计北京清华大学出版社2009[4] 王鉴光电动机控制系统[M]北京机械工业出版社1994[5] 窦振中单片机原理和程序设计北京航天大学出版社2000[6] 苏长赞使用遥控技术手册人民邮电出版社2002[7] 李朝青单片机原理及接口技术北京航天航空大学出版社2005[8] 王小明电动机的单片机控制[M]北京航空航天大学出版社2002.[9] 何立民单片机应用技术选编北京航空航天大学出版社1997[10]李发海/朱东启电机学北京科学出版社2007附录软件源程序:/******************************************************************程序功能:红外遥控控制电机正转,反转,加速转。同时,使用PWM调制把速度分为四档,并分别用LED灯指示按键功能:1键—键启动(电机不转启动指示灯亮只有开启键之后才能进行后续操作)2键—停止键(电机不转所有LED指示灯灭其它操作无效)3键—电机正转(默认一档启动指示灯和正转灯亮只有先选择正反转之后才能后续操作)4键—电机反转(电机反转启动指示灯亮和反转灯亮只有先选择正反转之后才能后续操作)5键—电机二档加速(启动指示灯亮二档指示灯亮相应的正转或反转指示灯灯亮)6键—电机三档加速(启动指示灯亮三档指示灯亮相应的正转或反转指示灯灯亮)7键—电机四档加速(启动指示灯亮四档指示灯亮相应的正转或反转指示灯灯亮)在按键的同时,会进行按键检测,蜂鸣器发声,表明按键按下班级:1*06972**姓名:钱多多专业:电气工程及其自动化本程序在KeiluVision3中编写…**********************************************************************/#include<reg52.h>#include<intrins.h> //我叫钱多多#defineucharunsignedchar //叫我高富帅#defineuintunsignedintsbitbeep=P2^5;//蜂鸣器端口定义ucharnum; //全部变量//ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,// 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//ucharcodetable1[]={0x7e,0x7d,0x7b,0x77,0x6f,0x5f};sbitir=P3^2; //红外端口定义ucharirtime; //定时器计数次数ucharirdata[33];//引导码客户吗12操作码12ucharbitnum;//标志位ucharstartflag;//红外接收头识别客户码开始标志位uchark_flag; //按键顺序标志位ucharir_ok; //红外识别标志位ucharircode[4]; //数组储存接收数值ucharir_pros_ok; //红外处理完成标志位//uchardisnum[5];sbitP10=P1^0;//定义发光二极管LED端口 做指示灯sbitP11=P1^1;sbitP12=P1^2;sbitP13=P1^3;sbitP14=P1^4; sbitP15=P1^5;sbitP16=P1^6;sbitP17=P1^7;#defineM_EN1M_ENA=1;M_IN1=0;M_IN2=1 //电机控制正转定义#defineM_EN2M_ENA=1;M_IN1=1;M_IN2=0 //电机控制反转定义#defineM_DISM_ENA=0; //电机控制停止定义bitStart_flag=0; //电机转动标志位bitStop_flag=0; //电机停止标志位bitdirflag=0; //方向标志位sbitM_ENA=P2^4;//电机端口定义sbitM_IN1=P2^3;sbitM_IN2=P2^2;ucharPWM_ON; //全局变量uchartimer_num=0; //全局变量voidtimer0init() //定时器0初始化{ //256*12*(1/12)=0.256ms每中断一次需要的时间 TMOD=0x12; //定时器初始化 TH0=0x00; //定时器1工作方式1 TL0=0x00; //定时器0工作方式2 EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; TH1=(65536-1000)/256;//设置处置 TL1=(65536-1000)%256; ET1=1; //开定时器1中断 TR1=1; }voiddelay(uintx) //延迟函数{ uintz,i; for(z=x;z>0;z--) { for(i=120;i>0;i--); } }voidir_process()//0.56*2/256=4.37 红外处理解码储存{ ucharnum_1,z,k,i; //局部变量定义 z=1; for(i=0;i<4;i++) { for(k=0;k<8;k++) { num_1=num_1>>1; //0.56+1.685=2.245/0.256=8.760.56+0.56=1.12/0.256=4.375 if(irdata[z]>6) { num_1=num_1|0x80; } z++; } ircode[i]=num_1; } ir_pros_ok=1;}voiddidi() //蜂鸣器{ beep=0; delay(150); beep=1;}voidir_display(void) //执行处理部分 { if((ircode[2]==0x0c)&&(Start_flag==0)&&(Stop_flag==0)) //取操作码作数字开关 开启电机 { didi(); //按键检测 Start_flag=1; PWM_ON=0; Stop_flag=0; P10=0; P11=1; P12=1; P13=1; P14=1; P15=1; } elseif((ircode[2]==0x18)&&Start_flag) //关闭电机 { didi(); Start_flag=0; Stop_flag=0; k_flag=0; P10=1; P11=1; P12=1; P13=1; P14=1; P15=1; } elseif((ircode[2]==0x5e)&&Start_flag) //电机正转默认一档调速 { didi(); dirflag=0; Stop_flag=1; k_flag=1; PWM_ON=1; P10=0; P11=0; P12=1; P13=1; P14=1; P15=1; } elseif((ircode[2]==0x08)&&Start_flag) //电机反转 默认一档调速 { didi(); dirflag=1; k_flag=1; Stop_flag=1; PWM_ON=1; P10=0; P11=1; P12=0; P13=1; P14=1; P15=1; } elseif((ircode[2]==0x1c)&&Start_flag&&k_flag&&(Stop_flag==1)) //2档调速 { didi(); PWM_ON=2; P10=0; P13=0; P14=1; P15=1; } elseif((ircode[2]==0x5a)&&Start_flag&&k_flag&&(Stop_flag==1)) //3档调速 { didi(); PWM_ON=4; P10=0; P13=1; P14=0; P15=1; } elseif((ircode[2]==0x42)&&Start_flag&&k_flag&&(Stop_flag==1)) //4档调速 { didi(); PWM_ON=8; P10=0; P13=1; P14=1; P15=0; }}voidint0init()//中断初始化{ EA=1; EX0=1;//打开外部中断 IT0=1;//下降沿触发}voidmain() //主函数{ timer0init(); int0init();// beep=0; while(1) {//if(ir==0) //按键检测修改放到irwork中提高实时性// { // beep=0;// delay(100);// beep=1;// } if(ir_ok==1) { ir_process(); ir_ok=0; } if(ir_pros_ok==1) { ir_display(); ir_pros_ok=0; } }}voidint0()interrupt0// //外部中断响应函数{ if(startflag) //13.5ms/0.256=52.7 { if(irtime>32&&irtime<63)//8-16ms认定引导码 { bitnum=0; //标志位清零 } irdata[bitnum]=irtime; irtime=0; bitnum++; if(bitnum==33) //最多储存33数 { bitnum=0; //清零 ir_ok=1;//此帧数据接受完成 } } else { irtime=0; //计数次数清零 startflag=1; }}voidtimer0()interrupt1//定时器中断次数中断次数*0.256=时间{ irtime++; //计数次数自加}voidtimer1()interrupt3 //定时器中断函数{ TH1=(65536-1000)/256; // 定时器设处置 TL1=(65536-1000)%256; timer_num++; if(Start_flag&&Stop_flag) { if(timer_num>10) //设定计数周期为10 { timer_num=0; //大于10清零 if(dirflag==0) //方向标志位为0时 { M_EN1; //电机

温馨提示

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

评论

0/150

提交评论