51单片机模拟智能电梯系统代码与注释.docx

上传人:b****6 文档编号:7114833 上传时间:2023-01-19 格式:DOCX 页数:12 大小:17.43KB
下载 相关 举报
51单片机模拟智能电梯系统代码与注释.docx_第1页
第1页 / 共12页
51单片机模拟智能电梯系统代码与注释.docx_第2页
第2页 / 共12页
51单片机模拟智能电梯系统代码与注释.docx_第3页
第3页 / 共12页
51单片机模拟智能电梯系统代码与注释.docx_第4页
第4页 / 共12页
51单片机模拟智能电梯系统代码与注释.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

51单片机模拟智能电梯系统代码与注释.docx

《51单片机模拟智能电梯系统代码与注释.docx》由会员分享,可在线阅读,更多相关《51单片机模拟智能电梯系统代码与注释.docx(12页珍藏版)》请在冰豆网上搜索。

51单片机模拟智能电梯系统代码与注释.docx

51单片机模拟智能电梯系统代码与注释单片机模拟智能电梯系统代码与注释SETTINGS.H#include#defineuintunsignedint#defineucharunsignedchar/延时程序,以毫秒为单位,用软件计时,输入的参数为毫秒数voidDelay_ms(uintTime);/电梯向上走voidUp();/电梯向下走voidDown();/报警函数voidWarnning();/获取目的楼层voidDestination();/显示某一楼层voidDisplay(ucharn,uchara);/闪烁显示到达的楼层voidFlash(uchara);/点阵键盘扫描ucharKBScan();/延时voiddl_ms();/解析出按键所代表的楼层ucharReprsent();SIMPLE.C#includesettings.hucharcodeTAB16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;sbitP0_0=P00;sbitP0_1=P01;sbitP0_2=P02;sbitP0_3=P03;sbitP0_4=P04;sbitP0_5=P05;sbitP0_6=P06;sbitP0_7=P07;sbitP1_0=P10;ucharlift=1;/电梯所在的楼层uchardestination1=1;/电梯的目的楼层ucharflag=0;/进入电梯程序的标志ucharkey;/按键的键码ucharrequest=0,0,0,0,0,0,0,0,0;/18楼有无请求,有请求为1ucharstatus=1;/电梯往上还是往下走,1为上,0为下/报警的响声的频率产生voidTimer1()interrupt3P1_0=P1_0;TH1=0xfc;TL1=0x0c;intmain()uchari;P0=0xff;P2=0x76;/数码管HEA=1;/开启外部中断INT0EX0=1;IT0=1;while

(1)/检查flag标志/flag初始化为0if(flag=1)/在中断中将其置1break;P1=0x01;/数码管跑马显示HDelay_ms(100);/flag置1后则进入电梯程序for(i=0;i5;+i)P1=P1=lift)/请求的楼层比要到达的楼层高Up();/电梯向上走elseDown();/否则电梯向下走return0;/中断请求,将flag置1,表示要进入电梯程序voidInt0()interrupt0flag=1;/延时程序,以毫秒为单位,用软件计时,输入的参数voidDelay_ms(uintTime)uinti=0,j=0;for(i=0;iTime;+i)for(j=0;j125;+j);/电梯向上走voidUp()ucharn,m;/n为所在楼层,m为存储查询有无楼层请求的变量uchari;/循环控制status=1;/置1表示电梯向上走for(n=lift;n=destination1;+n)/电梯到达目的楼层之前往上走Display(n,1);/没到达一楼就显示该楼层数lift=n;m=Represent();/读取点阵键盘if(m=9)/报警键按下则报警Warnning();else/有楼层请求到达/将对应的request置1requestm=1;for(i=1;i=destination1;-n)/电梯到达目的楼层之前往下走Display(n,0);/没到达一楼就显示该楼层数lift=n;m=Represent();/读取点阵键盘if(m=9)/报警键按下则报警Warnning();else/有楼层请求到达/将对应的request置1requestm=1;for(i=1;i=1;-j)if(requestj=1)requestj=0;/哪一层有请求destination1=j;/则将目的楼层设为该楼break;/并将其对应的request置1,然后跳出elseif(status=0)/若电梯向下走则从低楼层到高楼层扫描/以此达到判断优先级的目的for(j=1;j=8;+j)if(requestj=1)requestj=0;destination1=j;break;/显示某一楼层voidDisplay(ucharn,uchara)uchari,b;if(a=1)b=0x73;elseif(a=0)b=0x5E;for(i=0;i60;+i)P1=0x20;P2=b;Delay_ms(10);P1=0x02;P2=TABn;Delay_ms(10);/闪烁显示到达的楼层voidFlash(uchara)uchari,j,b;ucharm;if(a=1)/a=1表示向上b=0x73;/七段码Pelseif(a=0)/a=0表示向下b=0x5E;/七段码dfor(i=0;i5;+i)m=Represent();/闪烁时判断有无楼层请求到达requestm=1;for(j=0;j15;+j)/闪烁显示楼层和P或者dP1=0x20;/先显示P或者d以及楼层数P2=b;/再显示P或者d而不显示楼层数Delay_ms(10);/以此达到闪烁的目的P1=0x02;P2=TABlift;Delay_ms(10);for(j=0;j15;+j)P1=0x20;P2=b;Delay_ms(10);P1=0x02;P2=0x00;Delay_ms(10);OPERATIONS.C#includesettings.h/延时voiddl_ms()uchari;for(i=0;i200;+i);/点阵键盘扫描ucharKBScan()ucharsccode,recode;/sccode低位,recode高位uchari,a;/i循环控制,a读取P0口P0=0x0f;if(P0&0x0f)!

=0x0f)/有无键按下dl_ms();/消抖延时if(P0&0x0f)!

=0x0f)/有键按下则继续recode=0x7f;for(i=1;i1)|0x80;/若没有则扫描其上面一行return0;/解析出按键所代表的楼层ucharRepresent()ucharkey,n;key=KBScan();switch(key)case0xee:

n=1;break;case0xed:

n=2;break;case0xeb:

n=3;break;case0xe7:

n=4;break;case0xde:

n=5;break;case0xdd:

n=6;break;case0xdb:

n=7;break;case0xd7:

n=8;break;case0x77:

n=9;break;default:

n=0;break;returnn;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1