基于单片机的电梯控制模型设计 精品.docx

上传人:b****4 文档编号:4655828 上传时间:2023-05-07 格式:DOCX 页数:21 大小:888.07KB
下载 相关 举报
基于单片机的电梯控制模型设计 精品.docx_第1页
第1页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第2页
第2页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第3页
第3页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第4页
第4页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第5页
第5页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第6页
第6页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第7页
第7页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第8页
第8页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第9页
第9页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第10页
第10页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第11页
第11页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第12页
第12页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第13页
第13页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第14页
第14页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第15页
第15页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第16页
第16页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第17页
第17页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第18页
第18页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第19页
第19页 / 共21页
基于单片机的电梯控制模型设计 精品.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的电梯控制模型设计 精品.docx

《基于单片机的电梯控制模型设计 精品.docx》由会员分享,可在线阅读,更多相关《基于单片机的电梯控制模型设计 精品.docx(21页珍藏版)》请在冰点文库上搜索。

基于单片机的电梯控制模型设计 精品.docx

基于单片机的电梯控制模型设计精品

一、前言

单片机技术是现代电子工程领域一门迅速发展的技术,它的应用已经渗透到各种嵌入式系统中。

可以毫不夸张地说:

掌握单片机技术是电子信息类专业学生就业的一个重要条件。

同时单片机技术又是一门实践性很强的学科,课程设计教学环节的设计和实施,在很大程度上决定了学生对单片机技术的掌握程度。

为了更好地完成课程设计这一重要教学环节,我们采用Proteus软件与Keil软件整合构建单片机虚拟实验平台。

学生首先在PC上利用Proteus软件自己搭建硬件电路,并利用系统提供的功能完成电路分析、系统调试和输出显示的硬件设计部分;同时在Keil软件中编制程序,进行相应的编译和仿真,完成系统的软件设计部分。

当系统的设计工作完成后,学生可以在PC上看到最终的运行效果。

最后再通过proteus设计PCB,再完成真正硬件的调试。

采用Proteus软件与Keil软件整合构建单片机虚拟实验平台,有利于促进课程和教学改革,更有利于人才的培养;从经济性、可移植性、可推广性角度讲,建立这样的课程设计平台是非常有意义的;利用仿真系统,可以节约开发时间和开发成本;利用仿真系统,具有很大的灵活性和可扩展性。

 

二、设计简介

1、设计方案介绍

在工业上,多采用可编程控制器或微型计算机实现电梯逻辑控制,可编程控制器抗干扰性强,但针对性强、价格较贵,为实现电梯控制的模拟,本设计采用单片机为控制中心,针对所在的不同楼层分别进行合理的调度。

设计中按键用于给用户发出服务请求,LED电路用于显示请求状态及电梯运行状态、数码管显示电路来显示实时楼层,而电梯上升或下降的过程则通过定时来模拟。

2、设计任务及要求

三层电梯控制模型的设计。

2.1设计要求

●利用51单片机设计三层电梯的控制模型

●利用按键和数码管实现对电梯的控制和运行模拟

●可实时显示电梯所在楼层;

●按键按下后,相应的LED灯亮;

●可对发出的服务请求进行合理的分析调度并作出正确的响应;

●用户请求得到服务后,可更新状态。

2.2设计思路

本次设计的基本思路是以AT89S51单片机作为核心,利用其I/O接口与外围电路配合进行控制,通过扫描键盘点亮相应的指示灯,采用数码管来实时显示楼层,单片机通过扫描按键指示灯来读取请求,根据所在楼层的不同,进行不同的分析、调度,然后做出正确的响应,更新状态并在指示灯和数码管上显示出来。

系统模拟框图如图所示

三、硬件电路设计

3.1总体电路模块

硬件部分主要由单片机最小系统、系统显示电路、步进电梯驱动模块和按键输入模块等几部分组成。

总体电路原理图如下图所示:

 

3.2单片机最小系统部分:

单片机最小系统部分由图中的

(1)振荡电路

(2)复位电路(3)AT89C51构成。

 

3.2.1振荡电路

单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。

在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。

高级的精度更高。

有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。

晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

单片机晶振的作用是为系统提供基本的时钟信号。

通常一个系统共用一个晶振,便于各部分保持同步。

有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。

如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。

AT89C51使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。

3.2.2复位电路

单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。

当复位电平持续两个机器周期以上时复位有效。

复位电平的持续时间必须大于单片机的两个机器周期。

具体数值可以由RC电路计算出时间常数。

复位电路由按键复位和上电复位两部分组成。

(1)上电复位:

通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。

(2)按键复位:

按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。

3.2.3单片机AT89C51

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图所示。

主要特性:

(1)与MCS-51兼容

(2)4K字节可编程FLASH存储器

(3)寿命:

1000写/擦循环(4)数据保留时间:

10年

(5)全静态工作:

0Hz-24MHz(6)三级程序存储器锁定

(7)128×8位内部RAM(8)32可编程I/O线

(9)两个16位定时器/计数器(10)5个中断源

(11)可编程串行通道(12)低功耗的闲置和掉电模式

特性概述:

AT89C51提供以下标准功能:

4k 字节Flash 闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

3.3系统显示电路

3.3.1数码管显示电路

显示电路使用了七段数码管7SEG-MPX1-CC,它是共阴极的,由高电平点亮

3.3.2LED指示电路

 

 

3.4按键输入模块

在单片机应用系统中能实现向单片机输入数据,传送命令等功能,是人工干预单片机的主要手段。

本系统采用独立式按键,独立式按键的各按键相互独立,每个按键都有一个输入线,各按键的状态互不影响,CPU需对按键状态分别检测,只适用于按键数量较少的场合。

独立按键与单片机接口电路如图所示。

 

3.4.1键盘输入的特点

键盘实质上是一级按键开关的集合。

通常,键盘开关利用了机械触点的合、断作用。

3.4.2按键的确认

键的闭合与否,反映在行线输出电压上就呈现高电平或低电平,如果高电平表示键断开,低电平则表示键闭合,通过对行线电平高低状态的检测,便可确认按键按下与否。

为了确保CPU对一次按键动作只确认一次按键有效,必须消除抖动的影响。

3.4.3如何消除按键的抖动

采用软件来消除按键抖动的基本思想是:

在一次检测到有键按下时,该键所对应的行线为低电平,执行一段延时10MS的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认为该行确实有键按下。

当按键松开时,行线的低电平变为高电平,执行一段延时10MS的子程序后,检测该行线为高电平,说明按键确实已经松开。

3.4.4与非门的作用

这次的电路加上了7个与门,在有一个按键按下之后,与门的一个输入变为低,最后与门的输出就为低,接在外部中断INT0,该引脚有高变低,下降有触发,触发外部中断。

 

3.5步进电梯驱动模块

本系统的步进电梯模块由ULN2003A驱动步进电梯构成。

该电路模块如图所示:

本设计是使用ULN2003A芯片来驱动电机,使用步进电机必须由环形脉冲,功率放大等组成的控制系统。

●脉冲信号的产生

步进电机的驱动电路根据控制信号工作,由于控制并不复杂,故直接用单片机模拟出时序信号。

●控制换相顺序

通电换相这一过程称为脉冲分配。

感应子式步进电机以二、四相电机为主,本机采用四相八拍为AB-B-BC-C-CD-D-AB,(步距角为0.9度)。

●控制步进电机的转向

如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。

●控制步进电机的速度

如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。

两个脉冲的间隔越短,步进电机就转得越快。

调整单片机发出的脉冲频率,就可以对步进电机进行调速。

单片机留出来4个口线来与ULN2003A连接,以达到用单片机来驱动步进电动机的运行,上行、以及下行和停止等,具体功能的实现将由软件编程来完成。

其中ULN2003A是高耐压、大电流,内部由7个硅NPN达林顿管组成的驱动芯片在电路中可用于伺服电机、步进电机驱动等电路中。

ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。

它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTLCOMS,由达林顿管组成驱动电路。

ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE约1V左右,耐压BVCEO约为36V。

用户输出口的外接负载可根据以上参数估算。

采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。

通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。

ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。

四、系统程序的设计

4.1系统主程序的设计

程序流程框图如图所示:

 

4.2中断程序的设计

程序流程框图如图所示:

 

 

 

五.仿真调试情况

5.1测试结果显示

 

5.2调试时出现的问题及分析

●电梯在一楼时若同时按下2、3数字键,电梯总是上到2楼不停,到3楼后才回到2楼,推测在到2楼时的判断分析程序有错。

反复检查、修改无改善后,发觉原先把判断分析电梯怎么动作的程序都写在中断服务程序内,故只有电梯到了新的楼层才会得到下一步怎么走的命令,且在中断服务程序中无按键扫描,故刚好到达某一楼层时按下的键无法扫描到,电梯除初始态外,静止在其他楼层时若有按键按下未必能进行合理的分析和处理。

总结以上不足后,把判断电梯该如何动作的分析调度程序改写到主程序中,各个楼层均有一个对应的分析程序,改分析程序内已包含键盘扫描程序,只要电梯未到达新的楼层就始终执行该分析程序。

在分析过程中,发现要让电梯上升或下降时就开中断,在等待中断次数够20次(定时2s)的过程中仍未到达新的楼层,故期间一直在执行该分析程序。

按照以上思路改进后,上述问题得到解决,故障得以排除。

●在进行程序整体联调时发现,多个按键按下时,有时能扫描到所有按下的键,有时不能,且响应了一个请求之后,即使仍有请求灯在亮着,也不再做任何响应,按键也没反应,就像“死机”了一样。

推测可能按键扫描的频率不够高,或者逻辑上不全面,程序进入到一个死循环,故在程序中检查并完善了条件判断语句,几处添加按键检测,只要有键按下就进行行扫描,如此,按键几乎都能扫描到。

 

六.设计心得体会

通过本次论文设计,使我加深了对单片机的认识,并且熟悉了单片机系统的设计流程,收获丰硕。

功能上基本达标:

时钟与闹钟的显示,调时间和闹钟功能以及闹钟鸣叫功能。

时钟与闹钟显示功能,精确度完全可以满足日常生活显示时间的需要;调时间与闹钟功能,方便快捷。

硬件设施基本合乎要求,软件设计可以配合硬件实现其功能。

技术在不断进步,机械式时钟已经被淘汰,取而代之的是具有高度准确性和直观性且无机械装置,具有更长的使用寿命等优点的电子时钟。

电子时钟更具人性化,更能提高人们的生活质量,更受人们欢迎。

机械时代已经远去,电子时代已经到来。

做为新时代的我们,更应该提高自身能力,适应新时代的发展。

知识来自实践,多从生活中探寻所需要的。

从这次的论文设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把我们所学的理论知识运用到实际生活当中,要用知识改变一切。

 

7、主程序

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

ucharcodetable[]={0x3f,0x06,0x5b,0x4f};

sbitS0=P1^0;

sbitS1=P1^1;

sbitS2=P1^2;

sbitS3=P1^3;

sbitS4=P1^4;

sbitS5=P1^5;

sbitS6=P1^6;

sbitS7=P1^7;

uintflag=0;

uinti=0;

sbitA1=P2^0;//定义步进电机连接端口

sbitB1=P2^1;

sbitC1=P2^2;

sbitD1=P2^3;

sbitashow1=P2^4;

sbitashow2=P2^5;

sbitashow3=P2^6;

sbitashow4=P2^7;

 

#defineCoil_A1{A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电

#defineCoil_B1{A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电

#defineCoil_C1{A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电

#defineCoil_D1{A1=1;B1=0;C1=0;D1=1;}//DA相通电,其他相断电

#defineCoil_OFF{A1=0;B1=0;C1=0;D1=0;}//全部断电

voiddelay(uintz);

voiddisplay(ucharnow);

voidbumotor();

voidbumotort();

ucharnow=1;

voidmain()

{

EA=1;

ET0=1;

IT0=1;//外部中断0为边沿触发

EX0=1;

ashow1=0;

ashow2=0;

ashow3=0;

ashow4=0;

while

(1)

{

if(flag==0)

{

delay(400);

display(now);

delay(400);

}

elseif(flag==1)

{

for(i=0;i<2;i++)

{

now++;

if(now>=3)

{

now=3;

}

display(now);

delay(800);

}

}

elseif(flag==2)

{

for(i=0;i<2;i++)

{

now--;

if(now<=1)

{

now=1;

}

display(now);

delay(800);

}

}

if(now==1)

{

ashow1=1;

ashow2=0;

ashow3=0;

ashow4=0;

}

elseif(now==2)

{

ashow1=0;

ashow2=1;

ashow3=1;

ashow4=0;

}

elseif(now==3)

{

ashow1=0;

ashow2=0;

ashow3=0;

ashow4=1;

}

}

}

voidout()interrupt0

{

uchari=0;

if(now==1)

{

if(S1==0)

{

now=now;

//delay();

}

if(S2==0||S5==0||S6==0)

{

now=now+1;

bumotor();

}

if(S3==0||S7==0)

{

flag=1;

}

}

if(now==2)

{

if(S1==0)

{

now=now-1;

bumotort();

}

if(S3==0||S7==0)

{

now=now+1;

bumotor();

}

}

if(now==3)

{

if(S2==0||S5==0||S6==0)

{

now--;

}

if(S1==0||S4==0)

{

flag=2;

}

}

}

/****************************************************

数码管显示函数

****************************************************/

voiddisplay(ucharnow)

{

P0=table[now];

delay(15);

}

/***************************************************

延时函数

****************************************************/

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=222;y>0;y--);

}

voidbumotor()

{

Coil_OFF;

delay(400);

Coil_A1;

delay(400);

Coil_B1;

}

voidbumotort()

{

Coil_OFF;

delay(400);

Coil_B1;

delay(400);

Coil_A1;

//delay(800);

}

 

八、主要参考文献

●何立民.单片机应用系统设计.北京:

北京航空航天大学出版社,1990

●王晓明.电动机的单片机控制.北京:

北京航空航天大学出版社,2002

●朱善君,孙新亚.单片机接口技术与应用.北京:

清华大学出版社,2005

●吴红星.电机驱动与控制专用集成电路及应用.北京:

中国电力出版社,2006

●王兆安,黄俊.电力电子技术.北京:

机械工业出版社,2000

●李光弟等.单片机基础.北京:

北京航空航天大学出版社,2001

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2