资源简介
用LED组成的红色箭头显示电梯运动方向,数码管动态显示楼层数的变化,
两个电梯自动选择最近功能。
代码片段和文件信息
#include
#define uint unsigned int
#define uchar unsigned char
uchar K1K2K3K4K5K6K7K8K9
K11K12K13K14K15K16K17K18K19ffkkk;
uchar code table[]={
0x400x790x240x300x190x120x020x780x000x10}; //定义一位共阳极数码管值0-9
uchar numtemptpfloor1=4floor2=4;
sbit welaA=P2^7; //数码管位定义
sbit welaB=P2^6;
sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P2^0;
sbit E1=P2^1;
sbit F1=P2^2;
sbit D2=P2^3;
sbit E2=P2^4;
sbit F2=P2^5;
sbit shang1=P1^3;
sbit xia1=P1^4;
sbit shang2=P1^5;
sbit xia2=P1^6;
sbit feng=P1^7; //蜂鸣器定义
void delay(uint z) //延时函数
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar keyscan1();
uchar keyscan2();
void display1(uchar aa);
void display2(uchar aa);
void display3(); //各个子函数声明
void main()
{
while(1)
{
k=keyscan1();
if(k!=0)
{ if((floor1-k)*(floor1-k)>(floor2-k)*(floor2-k)) //判断哪个楼层离请求楼层较近
{display2(k);}
if((floor1-k)*(floor1-k)<=(floor2-k)*(floor2-k))
{display1(k); }}
kk=keyscan2(); //判断哪个电梯有按键按下
if(kk!=0)
{if(kk<9&&kk>0)
{display1(kk);}
if(kk>10&&kk<19)
{ kk=kk-10;
display2(kk);} }
ff=keyscan2();
if(ff==9||ff==19){feng=0; //紧急情况下按下9或19键蜂鸣器响
delay(50); ff=keyscan2();
if(ff==9||ff==19){feng=1;} } //再次按下蜂鸣器停止
display3();
}
}
void display1(uchar aa) //一号楼梯显示
{
if(aa>floor1) //上升显示
{for(num=floor1;num { welaB=0;
welaA=1;shang1=1; xia1=0;
P0=table[num]; delay(100);
welaB=1; P0=0XFF;
welaA=0;
P0=table[floor2];
ff=keyscan2();
if(ff==9||ff==19){feng=0; //紧急情况下按下9或19键蜂鸣器响
delay(50); ff=keyscan2();
if(ff==9||ff==19){feng=1;} } //再次按下蜂鸣器停止
delay(1000);shang1=0;}floor1=num;}
if(aa {for(num=floor1;num>aa;num--)
{ welaB=0;
welaA=1; xia1=1; shang1=0;
P0=table[num];delay(100);
welaB=1;P0=0XFF;
welaA=0;
P0=table[floor2];
ff=keyscan2();
if(ff==9||ff==19){feng=0; //紧急情况下按下9或19键蜂鸣器响
delay(50); ff=keyscan2();
if(ff==9||ff==19){feng=1;} } //再次按下蜂鸣器停止
delay(1000);xia1=0;}floor1=num;}
}
void display2(uchar aa) //二号楼梯显示
{
if(aa>floor2)
{for(num=floor2;num { welaB=1;
welaA=0;shang2=1; xia2=0;
P0=table[num];delay(100);
welaA=1;P0=0XFF;
welaB=0;
P0=table[floor1];
ff=keyscan2();
if(ff==9||ff==19){feng=0; //紧急情况下按下9或19键蜂鸣器响
delay(50); ff=keyscan2();
if(ff==9||ff==19){feng=1;} } //再次按下蜂鸣器停止
delay(1000);shang2=0;}floor2=num;}
if(aa {for(num=floor2;num>aa;num--)
{ welaB=1;
welaA=0; xia2=1; shang2=0;
P0=table[num]; delay(100);
welaA=1; P0=0XFF;
welaB=0;
P0=table
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15370 2013-03-31 02:39 电梯最终\keil程序文件\11
文件 4077 2013-03-31 02:39 电梯最终\keil程序文件\11.hex
文件 41 2013-03-31 02:39 电梯最终\keil程序文件\11.lnp
文件 18452 2013-03-31 02:39 电梯最终\keil程序文件\11.M51
文件 1740 2013-03-31 02:40 电梯最终\keil程序文件\11.Opt
文件 3339 2013-03-31 02:39 电梯最终\keil程序文件\11.plg
文件 2148 2013-03-28 15:22 电梯最终\keil程序文件\11.Uv2
文件 1741 2013-03-30 23:11 电梯最终\keil程序文件\11_Opt.Bak
文件 2148 2013-03-20 20:02 电梯最终\keil程序文件\11_Uv2.Bak
文件 6376 2005-03-22 15:22 电梯最终\keil程序文件\STARTUP.A51
文件 14048 2013-03-31 02:39 电梯最终\keil程序文件\STARTUP.LST
文件 749 2013-03-31 02:39 电梯最终\keil程序文件\STARTUP.OBJ
文件 6462 2013-03-31 02:39 电梯最终\keil程序文件\Text11.c
文件 15998 2013-03-31 02:39 电梯最终\keil程序文件\Text11.LST
文件 17420 2013-03-31 02:39 电梯最终\keil程序文件\Text11.OBJ
文件 31365 2013-03-30 23:21 电梯最终\protel图文件\QQ截图20130330232059.png
文件 368640 2013-03-31 00:28 电梯最终\protel图文件\电梯.ddb
文件 13020412 2013-03-31 02:43 电梯最终\实物图和原理介绍.doc
目录 0 2013-03-31 02:40 电梯最终\keil程序文件
目录 0 2013-03-31 00:29 电梯最终\protel图文件
目录 0 2013-03-31 02:46 电梯最终
----------- --------- ---------- ----- ----
13530526 21
相关资源
- 电子音乐门铃设计(内含源文件、原
- 单片机烧程序软件——SST、STC等等
- 用单片机实现的水温控制论文
- 基于51单片机的风光互补发电系统
- STC12C5A60S2例程
- 基于51单片机的温度火灾烟雾报警器
- 基于51单片机的智能安防报警系统
- PIC18Fxxx单片机程序设计及应用
- 普中科技51单片机基础实践例程合集
- STM32L151低功耗单片机例程
- 基于单片机的增量升级软件和移植代
- 蓝桥杯单片机 官方提供的数据包
- 完美51单片机交通灯附仿真,程序,原
- 匠人手记-完整版.zip
- 单片机原理及应用李建忠
- 单片机实验含有+电子琴演奏实+直流电
-
用于STM系列单片机调试的Jli
nk&串口 - 哈工大单片机课件十分经典
- 采用短信GSM模块控制单片机
- VSwin32命令控制台与单片机串口数据传
- VSwin32命令控制台与单片机串口数据传
- 单片机硬件电路设计(工程师多年经
- 单片机论文案例30篇
- 单片机编程魔法师之高级裸编程思想
- 单片机stc89c52rc编程普中开发板
- 单片机应用设计200例 张洪润
- IAR-C-FOR-SAM8-V221A带破解
- 锦锐触摸单片机CA51F351S6全套DEMO资料
- stc15单片机串口和模拟spi控制adf4360-
- 51单片机智能电子秤
评论
共有 条评论