51单片机模拟智能电梯系统代码及注释(共9页)

上传人:风*** 文档编号:61290367 上传时间:2022-03-11 格式:DOCX 页数:9 大小:17.52KB
返回 下载 相关 举报
51单片机模拟智能电梯系统代码及注释(共9页)_第1页
第1页 / 共9页
51单片机模拟智能电梯系统代码及注释(共9页)_第2页
第2页 / 共9页
51单片机模拟智能电梯系统代码及注释(共9页)_第3页
第3页 / 共9页
点击查看更多>>
资源描述
精选优质文档-倾情为你奉上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 KBScan();/延时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 = 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() uchar i;P0 = 0xff;P2 = 0x76; /数码管HEA = 1; /开启外部中断INT0 EX0 = 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,表示要进入电梯程序void Int0() interrupt 0flag = 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); /没到达一楼就显示该楼层数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,然后跳出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;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();/闪烁时判断有无楼层请求到达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_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;专心-专注-专业
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!