(完整)基于51单片机的三层电梯系统设计_第1页
(完整)基于51单片机的三层电梯系统设计_第2页
(完整)基于51单片机的三层电梯系统设计_第3页
(完整)基于51单片机的三层电梯系统设计_第4页
(完整)基于51单片机的三层电梯系统设计_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

(完整)基于51单片机的三层电梯系统设计(完整)基于51单片机的三层电梯系统设计(完整)基于51单片机的三层电梯系统设计基于51单片机的三层电梯系统设计专业班级:电子信息科学与技术1班姓名:李强指导教师:金国华老师信息科学技术学院附录2程序部分#include〈reg51.h〉#defineLCD1P1#defineLCD2P3voidZero();voidDelay_ms(unsignedintTime);voidDisplay(unsignedintn,unsignedchara);voidFlash(unsignedintTime);voidKBScan();voiddl_ms();voidDestination();voidUp();voidDown();//P2与查询式键盘硬件相连sbitP2_0=P2^0;sbitP2_1=P2^1;sbitP2_2=P2^2;sbitP2_3=P2^3;sbitP2_4=P2^4;sbitP2_5=P2^5;sbitP2_6=P2^6;unsignedintlift=1;/*电梯所在楼层*/unsignedintstatus=1;/*电梯上行为1,下行为0*/unsignedcharrequest[3]={0,0,0};/*1~3楼有无请求,有请求为1*/unsignedchardst=1;/*电梯的目的楼层*///清零程序voidZero(){LCD1=0x00;LCD2=0x00;}//延时程序,以毫秒为单位,用软件计时,输入的参数voidDelay_ms(unsignedintTime){unsignedinti=0,j=0;for(i=0;i〈Time;++i){KBScan();for(j=0;j〈125;++j);}}//显示某一楼层voidDisplay(unsignedintn,unsignedchara){unsignedcharb;if(a==0){b=0x5e;}elseif(a==1){b=0x73;}Zero();KBScan();LCD2=b;KBScan();switch(n){case3:{LCD1=0x4f;break;}case2:{LCD1=0x5b;break;}case1:{LCD1=0x06;break;}default:{break;}}}//闪烁显示到达楼层voidFlash(unsignedintTime){unsignedchari;for(i=0;i〈Time;i++){Zero();Delay_ms(1000);KBScan();Display(lift,status);Delay_ms(1000);KBScan();}Zero();Delay_ms(1000);KBScan();}//查询式键盘扫描voidKBScan(){if(P2!=0xff){dl_ms();if(P2!=0xff){switch(P2){case0xfe:{P0_0=1;request[0]=1;break;}/*电梯内请求1楼*/ case0xfd:{P0_1=1;request[1]=1;break;}/*电梯内请求2楼*/ case0xfb:{P0_2=1;request[2]=1;break;}/*电梯内请求3楼*/ case0xf7:{P0_3=1;request[0]=1;break;}/*电梯外1楼请求向上*/ case0xef:{P0_4=1;request[1]=1;break;}/*电梯外2楼请求向上*/ case0xdf:{P0_5=1;request[1]=1;break;}/*电梯外2楼请求向下*/ case0xbf:{P0_6=1;request[2]=1;break;}/*电梯内3楼请求向下*/default:{break;}/*错误请求*/}}}}//消抖延时voiddl_ms(){unsignedchari;for(i=0;i〈30;++i);}//获取目的楼层voidDestination(){unsignedcharj; //j循环控制变量KBScan();//有键按下if(status==1) //若电梯向上走则从高楼层到低楼层扫描{ //以此达到判断优先级的目的for(j=3;j>=1;—-j){if(request[j-1]==1){dst=j; //则将目的楼层设为该楼break; //并将其对应的request置1,然后跳出}}}elseif(status==0) //若电梯向下走则从低楼层到高楼层扫描{ //以此达到判断优先级的目的for(j=1;j〈=3;++j){if(request[j—1]==1){dst=j;break;}}}}//电梯向上走voidUp(){status=1; //置1表示电梯向上走for(;lift〈=dst;lift++) //电梯到达目的楼层之前往上走{Display(lift,1); //每到达一楼就显示该楼层数KBScan();Destination(); //读取点阵键盘if(request[lift—1]==1)//若请求到达的楼层在所在楼层和目的楼层之间则停下闪烁显示并将其对应的request清零{Delay_ms(3000);if(P0_5==1&&lift==2);else{request[lift—1]=0;}switch(lift){case1:{P0_0=0;P0_3=0;break;}case2:{P0_1=0;P0_4=0;break;}case3:{P0_2=0;P0_6=0;break;}default:{break;}}Flash(3);Delay_ms(800);}else{Delay_ms(3000);}}lift—-;}//电梯向下走voidDown(){status=0; //置1表示电梯向上走for(;lift>=dst;lift--) //电梯到达目的楼层之前往上走{Display(lift,0); //每到达一楼就显示该楼层数KBScan();Destination(); //读取点阵键盘if(request[lift-1]==1)//若请求到达的楼层在所在楼层和目的楼层之间则停下闪烁显示并将其对应的request清零{Delay_ms(3000);if(P0_4==1&&lift==2);else{request[lift—1]=0;}switch(lift){case1:{P0_0=0;P0_3=0;break;}case2:{P0_1=0;P0_5=0;break;}case3:{P0_2=0;P0_6=0;break;}default:{break;}}Flash(3);Delay_ms(800);}else{Delay_ms(3000);}}lift++;}voidmain(){P0=0;while(1) //电梯程序的循环{

温馨提示

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

评论

0/150

提交评论