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

上传人:罗晋 文档编号:11034687 上传时间:2021-06-19 格式:DOCX 页数:10 大小:25.10KB
返回 下载 相关 举报
51单片机模拟智能电梯系统代码及注释.docx_第1页
第1页 / 共10页
51单片机模拟智能电梯系统代码及注释.docx_第2页
第2页 / 共10页
51单片机模拟智能电梯系统代码及注释.docx_第3页
第3页 / 共10页
51单片机模拟智能电梯系统代码及注释.docx_第4页
第4页 / 共10页
51单片机模拟智能电梯系统代码及注释.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

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

1、.SETTINGS.H#include#define uint unsigned int#define uchar unsigned char/ 延时程序,以毫秒为单位,用软件计时,输入的参数为毫秒数void Delay_ms( uint Time);/ 电梯向上走void Up();/ 电梯向下走void Down();/ 报警函数void Warnning();/ 获取目的楼层void Destination();/ 显示某一楼层void Display( uchar n, uchar a);/ 闪烁显示到达的楼层void Flash( uchar a);/ 点阵键盘扫描uchar KBS

2、can();/ 延时void dl_ms();/ 解析出按键所代表的楼层uchar Reprsent();.SIMPLE.C#include settings.huchar code TAB16 =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;sbit P0_0 = P00;sbit P0_1 = P01;sbit P0_2 = P02;sbit P0_3 = P03;sbit P0_4 = P04;sbit P0_5 = P05;sbit P0_6 = P06;sbit P0_7

3、 = P07;sbit P1_0 = P10;uchar lift = 1;/ 电梯所在的楼层uchar destination1 = 1;/ 电梯的目的楼层uchar flag = 0;/ 进入电梯程序的标志uchar key;/ 按键的键码uchar request = 0, 0, 0, 0, 0, 0, 0, 0, 0;/18楼有无请求,有请求为1uchar status = 1;/ 电梯往上还是往下走,1 为上, 0 为下/ 报警的响声的频率产生void Timer1() interrupt 3P1_0 = P1_0;TH1 = 0xfc;TL1 = 0x0c;int main()uc

4、har i;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; i 5; +i)P1 = P1 = lift)/ 请求的楼层比要到达的楼层高Up();/ 电梯向上走elseDown();/ 否则电梯向下走return 0;/ 中断请求,将 flag 置 1,表示要进入电梯程序voi

5、d Int0() interrupt 0;.flag = 1;/ 延时程序,以毫秒为单位,用软件计时,输入的参数void Delay_ms( uint Time)uint i = 0, j = 0;for(i = 0; i Time; +i)for(j = 0; j 125; +j);/ 电梯向上走void Up()uchar n, m;/n 为所在楼层,m 为存储查询有无楼层请求的变量uchar i;/ 循环控制status = 1;/ 置 1 表示电梯向上走for( n = lift; n = destination1; +n)/ 电梯到达目的楼层之前往上走Display( n, 1);/

6、 没到达一楼就显示该楼层数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 =

7、 1;for(i = 1; i = 1; -j)if( requestj = 1);.requestj = 0;/ 哪一层有请求destination1 = j;/ 则将目的楼层设为该楼break;/ 并将其对应的request 置 1,然后跳出else if( status = 0)/ 若电梯向下走则从低楼层到高楼层扫描/ 以此达到判断优先级的目的for(j = 1; j = 8; +j)if( requestj = 1)requestj = 0;destination1 = j;break;/ 显示某一楼层void Display( uchar n, uchar a)uchar i, b;

8、if(a = 1)b = 0x73;else if(a = 0)b = 0x5E;for(i = 0; i 60; +i)P1 = 0x20;P2 = b;Delay_ms( 10);P1 = 0x02;P2 = TABn;Delay_ms( 10);./ 闪烁显示到达的楼层void Flash( uchar a)uchar i, j, b;uchar m;if(a = 1)/a=1 表示向上b = 0x73; / 七段码 Pelse if(a = 0)/a=0 表示向下b = 0x5E; / 七段码 dfor(i = 0; i 5; +i)m = Represent();/ 闪烁时判断有无楼

9、层请求到达requestm = 1;for(j = 0; j 15; +j) / 闪烁显示楼层和P 或者 dP1 = 0x20;/ 先显示 P 或者 d 以及楼层数P2 = b;/ 再显示 P 或者 d 而不显示楼层数Delay_ms( 10);/ 以此达到闪烁的目的P1 = 0x02;P2 = TABlift;Delay_ms( 10);for(j = 0; j 15; +j)P1 = 0x20;P2 = b;Delay_ms( 10);P1 = 0x02;P2 = 0x00;Delay_ms( 10);.OPERATIONS.C#include settings.h/ 延时void dl_

10、ms()uchar i;for(i = 0; i 200; +i);/ 点阵键盘扫描uchar KBScan()uchar sccode, recode;/sccode 低位, recode 高位uchar i, a;/i 循环控制, a 读取 P0 口P0 = 0x0f;if( (P0 & 0x0f) != 0x0f)/ 有无键按下dl_ms();/ 消抖延时if( (P0 & 0x0f) != 0x0f)/ 有键按下则继续recode = 0x7f;for(i = 1; i 1) | 0x80; / 若没有则扫描其上面一行return 0;./ 解析出按键所代表的楼层uchar Represent()uchar key, n;key = KBScan();switch( key)case 0xee: n = 1; break;case 0xed: n = 2; break;case 0xeb: n = 3; break;case 0xe7: n = 4; break;case 0xde: n = 5; break;case 0xdd: n = 6; break;case 0xdb: n = 7; break;case 0xd7: n = 8; break;case 0x77: n = 9; break;default: n = 0; break;return n;.

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1