基于单片机AT89S51八层电梯控制系统设计.docx
《基于单片机AT89S51八层电梯控制系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机AT89S51八层电梯控制系统设计.docx(18页珍藏版)》请在冰点文库上搜索。
![基于单片机AT89S51八层电梯控制系统设计.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/1fb2975d-ef55-408c-81e5-7ac366c996d8/1fb2975d-ef55-408c-81e5-7ac366c996d81.gif)
基于单片机AT89S51八层电梯控制系统设计
摘要
单片机即单片微型计算机,是集CPU、RAM、ROM、定时、计数和多种接口于一体的微控制器。
其中51单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域.电梯是集机械原理应用、电气控制技术、微处理器技术、系统工程学等多学科和技术分支于一体的机电设备,它是建筑中的永久垂直交通工具。
本论文选择AT89S51为核心控制元件,设计了一个八层电梯系统,使用单片机汇编语言进行编程,实现运送乘客到任意楼层,并且显示电梯的楼层和上下行。
利用单片机控制电梯有成本低,通用性强,灵活性大及易于实现复杂控制等优点。
关键词:
单片机、电梯、控制
目录
第一章硬件系统实现1
第1节功能模块图1
第2节AT89S51芯片1
第3节显示模块设计4
第4节复位开关模块4
第5节振荡器电路模块4
第6节程序下载模块5
第7节设计电路及连线6
第二章软件设计7
第1节软件功能描述7
第2节流程图设计7
第3节程序设计9
第三章系统调试13
第1节硬件调试13
第2节软件调试13
结论15
心得体会16
参考文献17
第一章硬件系统实现
第1节功能模块图
在本设计中需用到AT89S51芯片,1个数码管,一个蜂鸣器,复位电路,8个按键,24个发光二极管。
图1-1功能模块
第2节AT89S51芯片
本设计主要采用AT89S51芯片。
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作。
掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
表1-1AT89S51芯片的主要功能
·兼容MCS-51指令系统
·4k可反复擦写(>1000次)ISPFlashROM
·32个双向I/O口
·4.5-5.5V工作电压
·2个16位可编程定时/计数器
·时钟频率0-33MHz
·全双工UART串行中断口线
·128x8bit内部RAM
·2个外部中断源
·低功耗空闲和省电模式
·中断唤醒省电模式
·3级加密位
·看门狗(WDT)电路
·软件设置空闲和省电功能
·灵活的ISP字节和分页编程
·双数据寄存器指针
引脚功能说明
VCC:
电源电压。
GND:
地。
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线同时转换成地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
Flash编程和程序校验期间,P1接收低8位地址。
表1-2P1端口引脚的第二功能
端口引脚
第二功能
P1.5
MOSI(用于ISP编程)
P1.6
MISO(用于ISP编程)
P1.7
SCK(用于ISP编程)
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@Ri指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用作上拉电阻输出电流。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。
表1-3P3端口引脚的第二功能
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外中断0)
P3.3
/INT1(外中断1)
P3.4
T0(定时/计数器0)
P3.5
T1(定时/计数器1)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
ALE/(/PROG):
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。
此外,该引脚会被拉高,单片机执行外部程序时,应设置ALE无效。
/PSEN:
程序存储允许(/PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的/PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
第3节显示模块
显示电路采用了1个LED数码管,单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路。
7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的。
因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以本设计共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。
而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
第4节复位开关模块
MCS-51单片机的复位是靠外部电路实现的。
MCS-51单片机工作之后,只要在它的RST引线上加载10ms以上的高电平,单片机就能有效地复位。
MCS-51单片机通常采用上电自动复位和按键复位两种方式。
第5节振荡器电路模块
MCS--51单片机内部的振荡电路是一个增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。
单片机内部虽然有振荡电路,但要形成时钟,外部还需要附加电路。
石英晶体振荡和陶瓷振荡均可采用。
输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
51单片机的时钟产生方式有两种,分别为:
内部时钟方式和外部时钟方式。
利用其内部的振荡电路XTAL1和XTAL2引线上外接定时元件,内部振荡电路便产生自激振荡,用示波器可以观察到XTAL2输出的时钟信号。
在MCS-51单片机一般常用内部时钟方式,也就是在XTAL1和XTAL2之间连接晶体振荡器与电容构成稳定的自激振荡器,晶体和电容决定了单片机的工作时间精度为1微秒。
晶体可在1.2-12MHz之间选择。
MCS-51单片机在通常应用情况下,使用振荡频率为6MHZ的石英晶体,而12MHZ频率的晶体主要是在高速串行通信情况下才使用,在这里我用的是12MHZ石英晶体。
对电容无严格要求,但它的取值对振荡频率输出的稳定性、大小及振荡电路起振荡速度有一点影响。
C1和C2可在20-100PF之间取值,一般情况取30PF。
外部时钟方式是把外部振荡信号源直接接入XTAL1或XTAL2。
由于XTAL2逻辑电平不是TTL的,所以还要接一个上拉电阻。
第6节程序下载模块
该模块完成的功能是把源程序代码下载到AT89S51芯片中,它需要和微机上的ISP下载器软件配合使用来完成这样的功能。
ISP为在线编程接口,J2为标准10PJTAG下载接口。
ISP在线编程接口为89S51单片机提供了方便的在线编程方法。
使用时将ISP下载线一端与PC并口相连接,一端与ISP接口相连,使用ISP下载软件即可实现MCU在线编程。
下载线插接说明:
两排十针下载口,1号引脚的边上有一个小方框;下载线的凸口为正方向,凸口的右侧边的第一个插孔为1号引脚,这一点一定要切记,不然的话程序下载不进去。
第7节设计电路及连线
图1-2电路连接图
第二章软件设计
第1节软件功能描述
此单片机模拟电梯用绿色发光二极管组成的箭头来指示电梯当前是处于上升状态还是下降状态,用数码管显示当前是处于哪一层,用红色发光二极管指示电梯走到哪一层会停.电源接通后,若没有人按下停止按键,它就以每层2秒的速度一直上下运行,若有人按下某一层的停止按键,它就会在相应的那一层停止4秒钟,并伴有开门和关门的声音提示。
第2节流程图设计
图2-1主程序流
该图为电梯上升时的流程,任意按键按下时则进入相应的中断程序,否则一直进行1到8层按键的循环检测。
电梯下降时则进行8到1层按键的循环检测。
第3节程序设计
一、程序初始化
TCOUNTEQU4CH
CENGEQU4DH
ORG0000H
LJMPSTART
ORG000BH
LJMPINT0X
ORG0030H
;;;;;;;;;;;;初始化;;;;;;;;;;;;;;;;;
START:
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H;50MS
MOVIE,#82H
SETBTR0
MOVTCOUNT,#4
CLRF0
MOV20H,#0
MOVR0,#30H
MOVR1,#30
QING:
MOV@R0,#00H
INCR0
DJNZR1,QING;把30H到4DH这30个单元清0
MOVP0,#06H
MOVP3,#0F8H
二、主程序调用
XUN:
JBP1.0,ONE
LCALLYS10MS
JBP1.0,ONE;判断一层的停止按键是否按下
CLRP2.0;若按下则把对应的红色发光二极管点亮
ONE:
JBP1.1,TWO
LCALLYS10MS
JBP1.1,TWO;判断二层的停止按键是否按下
CLRP2.1;若按下则把对应的红色发光二极管点亮
TWO:
JBP1.2,THR
LCALLYS10MS
JBP1.2,THR
CLRP2.2
THR:
JBP1.3,FOU
LCALLYS10MS
JBP1.3,FOU
CLRP2.3
FOU:
JBP1.4,FIV
LCALLYS10MS
JBP1.4,FIV
CLRP2.4
FIV:
JBP1.5,SIX
LCALLYS10MS
JBP1.5,SIX
CLRP2.5
SIX:
JBP1.6,SEV
LCALLYS10MS
JBP1.6,SEV
CLRP2.6
SEV:
JBP1.7,XUN
LCALLYS10MS
JBP1.7,XUN
CLRP2.7
LJMPXUN
三、中断程序调用
INT0X:
MOVTH0,#3CH
MOVTL0,#0B0H
INCTCOUNT
MOVA,TCOUNT
CJNEA,#5,ZHUAN2;50MS*5=250MS
MOVTCOUNT,#00H
JBF0,ZHUAN
LJMPZHUAN1
ZHUAN:
LJMPXIAJIANG
ZHUAN1:
MOVP3,#0F8H;上升的箭头
MOVA,CENG
CJNEA,#00H,SS2
MOVP0,#06H;显示
JBP2.0,SS1_1
INC30H
MOVA,30H
CJNEA,#1,SSX1_1
CLRP3.4;一层门开的声音开
SSX1_1:
CJNEA,#2,SSX1_2
SETBP3.4;一层门开的声音关
SSX1_2:
CJNEA,#16,SSX1_3
CLRP3.4;一层门关的声音开
SSX1_3:
CJNEA,#17,ZHUAN2;16*250MS=4S(总共次,但实际在这里停止的时间只有次MS)
MOV30H,#0
SETBP3.4;一层门关的声音关
SETBP2.0;熄灭对应的红色发光二极管
SS1_1:
INC31H
MOVA,31H
CJNEA,#9,ZHUAN2;8*250MS=2S(总共次,但实际上升一层只用次MS)
MOV31H,#0
INCCENG
SS2:
MOVA,CENG
CJNEA,#01H,SS3
MOVP0,#5BH;显示
JBP2.1,SS2_1
INC32H
MOVA,32H
CJNEA,#1,SSX2_1
CLRP3.4;二层门开的声音开
SSX2_1:
CJNEA,#2,SSX2_2
SETBP3.4;二层门开的声音关
SSX2_2:
CJNEA,#16,SSX2_3
CLRP3.4;二层门关的声音开
SSX2_3:
CJNEA,#17,ZHUAN2;16*250MS=4S(总共次,但实际在这里停止的时间只有次MS)
MOV32H,#0
SETBP3.4;二层门关的声音关
SETBP2.1;熄灭对应的红色发光二极管
SS2_1:
INC33H
MOVA,33H
CJNEA,#9,ZHUAN2;8*250MS=2S(总共次,但实际上升一层只用次MS?
MOV33H,#0
LJMPZHUAN3
第三章系统调试
第1节硬件调试
硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行。
静态调试
静态调试是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步:
万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:
加电检测。
给板加电,检测所有的插座或是器件的电源端是否符合要求的值。
第四步:
联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
动态调试
动态调试是在用户系统工作的情况下,发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的一般方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块。
当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,再对各块电路功能及各电路间可能存在的相互联系进行调试,由分到合的调试就可完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
第2节软件调试
软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
(1)实验平台软件调试在KEIL编译器下进行,运行在WindowsXP操作系统下。
源程序编译及仿真调试应分段或以子程序为单位一个一个进行,最后可结合硬件实时调试。
(2)实验步骤
1)按照系统硬件连线图连好。
2)把编写好的程序进行汇编并输入单片机AT89S51仿真器和对其进行初始化。
3)先按下开启键,观察LED能否正常显示,再观察发光二极管形成的上升下降信号和LED显示的数字增大减小是否一致,当这些都符合指标后,再按下任意按键,看其是否达到预想的目的。
接着试验复位开关,检验能否完成清零的功能,并作出相应调整。
结论
本系统就是充分利用了AT89S51芯片的各引脚。
系统采用MSC-51系列单片机AT89S51为中心器件来设计实现模拟简单电梯控制系统,系统设计简便、实用性强、操作简单,完成了模拟电梯的基本功能。
单片机在接口性能和计算速度等方面均有资源不足的问题,仍然不能适应较复杂的控制算法和故障诊断等要求,但单片机控制电梯有成本低,通用性强,灵活性大及易于实现复杂控制等优点。
总体来说,该单片机系统设计很好的完成了简单电梯控制系统,但是不论是在硬件还是软件,都可以通过后续的努力加以改进,主要为以下几个方面:
1.在硬件上,通过设计更为复杂的外围电路来实现电梯控制的智能化处理,考虑加入控制器来完成电梯的多信息采集处理功能。
2.在软件上,目前软件运行的效率不是很高,可以考虑通过对算法的分析,简化程序,提高单片机调试的速度。
3.在总体设计上,考虑到更为智能的电梯系统,可以通过调研了解电梯的智能化发展方向,提出更为全面复杂的电梯控制方案及多电梯协同运行策略分析等功能。
心得体会
通过对这个基于单片机AT89S51控制系统的设计,综合运用单片机AT89S51的功能特点进行工程设计,提高了我的设计报告撰写的水平,同时提高了独立对系统的分析和编程能力和文献的检索能力。
通过这几天对本系统的设计,不仅对本学期的单片机课程中的AT89S51芯片进行了充分的运用,同时还对芯片MCS51有了一定的了解,相信对以后的学习和工作有很重要的帮助,另外,通过对本系统的设计对以后的毕业设计会有一个很好的帮助。
参考文献
1、林志琦.基于Proteus的单片机可视化软硬件[M].北京:
北京航空航天大学出版社,2006.9
2、周润景,张丽娜.基于PROTEUS的电路及单片机系统设计[M].北京:
北京航空航天大学出版社,2006.5
3、谢维成单片机原理与应用及C51程序设计[M].北京:
清华大学出版社
4、谭浩强C语言程序设计[M]清华大学出版社