作者:北华航天工业学院电子工程系 胡月 荔智强 杜永博
指导教师:崔瑞雪 王晓
作品简介
随着社会的不断发展,楼房越来越高,而电梯则成了高层楼房的必须设备。电梯从手柄开关操纵电梯、按钮控制电梯发展到了现在的群控电梯,为高层运输做出了不可磨灭的贡献。单片机在电梯升降控制上的应用主要体现在它的逻辑开关控制功能。由于单片机具有逻辑运算,计数和定时以及数据输入输出的功能,在电梯升降过程中,各种逻辑开关控制与单片机很好的结合,很好的实现了对升降的控制。
我们设计的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯电路模块、电动机驱动模块、报警模块等4部分组成。该系统采用单片机(STC15F2K60S2)作为控制核心,使用按键按下与否而引起的电平的改变,作为用户请求信息发送到单片机,单片机控制电动机转动,单片机根据楼层检测结果控制电机停在目标楼层。楼层检测使用光电传感器,电动机控制部分采用步进电动机。
软件部分使用C语言编程,利用中断方式来检测用户请求的按键信息,根据电梯运行到相应楼层时,光电传感器产生电平变化,送到单片机计数来确定楼层数,并送到数码管进行显示。报警模块分为两部分:楼内报警和远程报警。当人被困在电梯内时,首先可以按下报警器按钮,此时报警器会发出警报信号。另外,受困人也可以按下远程报警按钮,此时控制系统会向电梯管理员发送短信及拨通电梯管理员电话,使受困人第一时间得到救助。我们的硬件设计简单可靠,结合软件,基本实现了电梯运行的模拟。
下面是我们设计的电梯控制系统说明指导:
使用步骤如下:
(1)进入电梯后,按下电梯层数控制按钮,选择楼层;
(2)按下电梯启动按钮,电梯会带你到达指定的位置;
(3)如果你遇到被困电梯等紧急情况,那么长按楼内报警按钮,楼内的安检人员听到警报就会赶来救助。如果报警器没有响或者安检人员没有及时赶到,那么你可以长按远程报警按钮,此时控制系统会向电梯管理员发送短信及拨通电梯管理员电话,使您第一时间得到救助。
平台选型说明
单片机开发板(以STC15F2K61S2芯片为控制核心)
设计说明
一 原理图
二 设计方案
三 设计原理
1. 用单片机定时器中断控制数码管1,2动态扫描显示,数码管1显示用户选择的楼层数,数码管2显示当前的楼层数。
2. K1控制数码管1选择楼层的第一位(楼层的十位),当K1按下,使设定的初值为0的数自动加1。K2控制楼层的个位,原理同K1。
3.K3按下,数码管1要和数码管2作数值的比较(即减法运算,判断结果和0的大小)选择步进电机正转或者反转的子程序,步进电机启动,电梯上下移动。
4.步进电机转动时,RPR220传感器通过扇叶输出跳变脉冲,发送到单片机,执行中断。
5.正转时,数码管2数值(即当前的楼层数)随步进电机正转增加,直到数码管1显示的数值(即用户设定的楼层)。反转则相反。
6.当长按K4按键,单片机控制继电器,继电器常开触点闭合,控制音响,实现报警。
7.当长按K5按键,单片机通过max232将TTL电平转化为232电平,232电平进入gsm模块,再通过max232转化为TTL电平,TTL电平数据(即AT指令数据)传送给TC35模块。TC35模块接收AT指令,作出相应的动作(即先发送短信,延时一段时间后,向指定号码拨打电话。)
四 源程序
#include
#include
#define uint unsigned int
#define uchar unsigned char
/***********************************************************
gsm模块定义部分
***********************************************************/
#define MAXCHAR 81
uchar aa[MAXCHAR];
code uchar ATE0[]="ATE0\r\n";
code uchar CREG_CMD[]="AT+CREG?\r\n"; //检测手机的联网状态
code uchar SMS_send[]="AT+CMGS=25\r\n";
code uchar ATCN[]="AT+CNMI=2,1\r\n";
code uchar CMGF[]="AT+CMGF=0\r\n";
code uchar CMGR[12]="AT+CMGR=1\r\n";
code uchar CMGD[12]="AT+CMGD=1\r\n";
code uchar PHONE[]="ATD15903269939;\r\n";
uchar code Sms2_Pdu[]="0011000d91685109239639F90008a90a67094EBA56F0753568AF";
uchar a,j=0,flag=0;
/***********************************************************
数码显示和电机转动定义部分
***********************************************************/
uchar code DIS_SEG7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};/**********P0,段显示,0*************/
uchar code DIS_BIT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; /*********P3,位显
,0*****************/
uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0xf9}; /*********电机正转****************/
uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0xf1}; /*********电机反转****************/