




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间的朋友课件
- 公司员工入职培训
- 中医优势病种培训
- 计算机培训汇报
- 钢琴启蒙素养课件
- 时装效果图技法课件
- 二零二五年度电子产品店长合作协议
- 二零二五年专业服务器电脑硬件维护及性能优化合同
- 2025版文化创意产业借款合同文本与格式要求
- 2025版低碳节能商品房预售合同书
- 2025年内河船员考试(主推进动力装置2103·一类三管轮)历年参考题库含答案详解(5套)
- 公司不交社保合作协议书
- 城市轨道交通工程监测技术
- 2025年海南省财金集团有限公司招聘笔试冲刺题(带答案解析)
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 硫酸氢钠(酸式硫酸钠)的理化性质及危险特性表
- 工程项目管理实施方案(5篇)
- 建筑施工应急处置明白卡
- 环境污染刑事案件司法解释学习课件
- 信息技术教学德育融合
- Peppa+Pig第1234季字幕整理
评论
0/150
提交评论