51单片机模拟智能电梯系统代码及注释_第1页
51单片机模拟智能电梯系统代码及注释_第2页
51单片机模拟智能电梯系统代码及注释_第3页
51单片机模拟智能电梯系统代码及注释_第4页
51单片机模拟智能电梯系统代码及注释_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

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

温馨提示

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

评论

0/150

提交评论