资源简介
51单片机实现电梯调度
代码片段和文件信息
#include “reg52.h“
#include “absacc.h“
#define uint unsigned int
#define uchar unsigned char
#define COM XBYTE[0xFF20] //定义8155地址
#define PA XBYTE[0xFF21]
#define PB XBYTE[0xFF22]
#define PC XBYTE[0xFF23]
sbit lup1=P1^0; //L1 //定义led控制端口
sbit lup2=P1^1; //L2
sbit ldown2=P1^2; //L3
sbit lup3=P1^3; //L4
sbit ldown3=P1^4; //L5
sbit ldown4=P1^5; //L6
sbit lopen=P1^7; //L7
uchar state; //当前电梯状态
uchar statepre; //之前电梯状态
uchar flag; //电梯上下标志,0下,1上
bit flag1; //定时时间到标志
uchar counter; //计数器
bit in1=0 in2=0 in3=0 in4=0 up1=0 up2=0 up3=0 down2=0 down3=0 down4=0;op=0; //KEY
uchar code table[]={0xf9 0xa40xb00x99 0xa1 0xc1 0xff}; //楼层显示码表,一共是四层
void T0_time()interrupt 1
{
TH0=(65536-50000)/256; TL0=(65536-50000)%256; //重赋初值
counter++; //定时器中断次数加1
if(counter==60) //三秒钟执行一次
{
counter=0;
flag1=1; //三秒钟定时到标志
}
}void delay(uint xms) //简单延时0.1ms
{
uint oj;
for(o=xms;o>0;o--)
for(j=11;j>0;j--);
}
/***********************************************************/
void display(){
PB=0xff;
PA=0xfe;
PB=table[state-1];
delay(2);
PB=0xff;
PA=0xfd;
PB=table[flag+4];
delay(2);
}
void keyscan(){ //扫描键盘
uchar pctemp;
PB=0xff;
PA=~0x01; //PA0口输出低电平
pctemp=PC;
switch(pctemp&0x0f){ //PC高位置0
case(0x0e):
in1=1; //被按下后标记,亮灯,下同
break;
case(0x0d):
in2=1;
break;
case(0x0b):
in3=1;
break;
case(0x07):
in4=1;
break;
default: break;
}
PA=~0x02; //PA1口低电平扫描第二行
delay(1);
pctemp=PC;
switch(pctemp&0x0f){
case(0x0e):
up1=1;
lup1=0;
break;
case(0x0d):
up2=1;
lup2=0;
break;
case(0x0b):
up3=1;
lup3=0;
break;
case(0x07):
op=1;
break;
default: break;
}
PA=~0x04;
delay(1); //PA2口低电平扫描第三行
pctemp=PC;
switch(pctemp&0x0f){
case(0x0d):
down2=1;
ldown2=0;
break;
case(0x0b):
down3=1;
ldown3=0;
break;
case(0x07):
down4=1;
ldown4=0;
break;
default: break;}
}
void iniclock() //start clock
{
TH0=60; //TH0=(65536-50000)/256 TL0=(65536-50000)%256 50ms初值
TL0=176;
ET0=1; //开定时器
TR0=1; //启动定时器T0
}
void run(){
iniclock(); //开定时
while(~flag1){ //时间未到扫描键盘
keyscan();
display();
}
flag1=0; //时间到了,清标志位,关定时器
TR0=0;
ET0=0;
}
void main()
{
state=1;
statepre=1;
flag=1;
flag1=0;
COM=0x43; //intialize 8155
TMOD=0x01; //定义定时器0/1为定时器模式
//TH0=(65536-50000)/256;//50ms初值
//TL0=(65536-50000)%256;
//ET0=1; //开定时器
//TR0=1; //启动定时器T0
EA=1; //开中断
while(1){
switch(state){ //扫描电梯所在位置
ca
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 308146 2017-05-30 22:11 RTX51多任务操作系统中文使用指南-0902ce1755270722192ef70d.pdf
目录 0 2020-02-07 14:20 仿真\
文件 150929 2012-06-18 23:12 仿真\elevator.DSN
文件 5157 2012-06-18 22:45 仿真\elevator.hex
文件 22465 2017-03-31 08:55 仿真\elevator.pdsprj
文件 876 2017-03-31 08:55 仿真\elevator.pdsprj.DEEP-1701142221.Administrator.workspace
文件 2207 2019-06-27 16:50 仿真\elevator.pdsprj.DESKTOP-LLDXIAO.Shinelon.workspace
文件 742 2020-02-07 14:20 仿真\elevator.PWI
文件 154869 2017-05-30 18:03 仿真\Last Loaded elevator.DBK
文件 23497 2019-06-27 16:46 仿真\Last Loaded elevator.pdsbak
目录 0 2019-07-05 10:58 原理图\
文件 143692 2015-05-01 11:02 原理图\Backup of PCB1.PCB
文件 22218 2015-05-01 11:02 原理图\Backup of PCBLIB1.LIB
文件 2755 2015-05-01 10:48 原理图\Backup of Schlib1.Lib
文件 29153 2015-05-01 11:02 原理图\Backup of Sheet1.Sch
文件 399360 2017-03-30 19:10 原理图\bjdj.Bkp
文件 399360 2017-03-30 19:10 原理图\bjdj.ddb
文件 55928 2014-06-03 10:13 原理图\Previous Backup of PCB1.PCB
文件 2755 2015-05-01 10:34 原理图\Previous Backup of Schlib1.Lib
文件 27707 2015-05-01 10:48 原理图\Previous Backup of Sheet1.Sch
目录 0 2019-07-05 10:58 原理图_新\
文件 109415 2017-05-29 13:31 原理图_新\Sheet1.PDF
文件 288256 2017-05-29 13:29 原理图_新\Sheet1.SchDoc
目录 0 2019-07-05 10:58 参考论文\
文件 536461 2015-05-01 00:45 参考论文\基于51单片机的四层电梯控制设计2011毕业论文.doc
目录 0 2019-07-05 10:58 参考资料\
文件 1169408 2015-05-01 00:43 参考资料\00-110903-0054-基于51单片机电梯门控制器毕业论文.doc
文件 1273428 2015-05-01 00:43 参考资料\51单片机语音电梯控制系统--2012毕业论文.doc
文件 872448 2015-05-01 00:42 参考资料\51单片机语音电梯控制系统.doc
文件 609280 2015-05-01 00:45 参考资料\基于51单片机的电梯程序设计.doc
文件 291328 2015-05-01 00:41 参考资料\基于51单片机的电梯设计.doc
............此处省略135个文件信息
相关资源
- 基于51单片机的温控系统
- 51单片机protues文件(KST-51.DSN)
- VC++基于OpenGL模拟的一个3维空间模型
- 模拟笔记本电脑(C语言实现)
- c++ 模拟鼠标按键
- 51单片机交通灯设计
- 基于51单片机的简易计算器
- 基于51单片机多路超声波报警设计
- 51单片机红外智能小车
- 银行家算法分配资源的模拟实现(m
- qt上位机采集51单片机温湿度数据
- 基于51单片机射频RFID卡考勤上课上班
- C++模拟存储器的分配与回收算法实现
- 火车票模拟订票系统
- APPLEII模拟器1.18含编程、诊断、游戏盘
- C++编写ATM机模拟程序
- 基于51单片机的888光立方设计.rar
- lbm模拟液滴从壁面滑落
- 声波方程有限差分数值模拟程序C++
- C++编写的模拟流体运动
- 51单片机DS18B20温度计C语言程序附详解
- 郭天祥51单片机C语言教程配套光盘
- 新概念51单片机C语言教程第2版郭天祥
- C++ 程序设计 模拟银行储蓄系统
- 模拟进程管理c语言至少要有:创建新
- C语言实现51单片机和ADC0809芯片的AD模
- C语言实战——基于51单片机的RFID射频
- 哲学家进餐问题的c++模拟实现
- 基于51单片机的c语言程序 电机转速测
- 基于80C51单片机的20多个仿真实验
评论
共有 条评论