电梯控制论文.doc_第1页
电梯控制论文.doc_第2页
电梯控制论文.doc_第3页
电梯控制论文.doc_第4页
电梯控制论文.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题 目:基于AT89S52单片机的模拟电梯设计学 院:物理与电气工程学院专 业:电子信息科学与技术班 级:电信1001班小组成员:张小勇 董瑶 胡欢 马蕊 曹龙梅完成日期: 2012/11/26 摘要单片机即单片微型计算机(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。其中52单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域.电梯是集机械原理应用、电气控制技术、微处理器技术、系统工程学等多学科和技术分支于一体的机电设备,它是建筑中的永久垂直交通工具。本设计是使用AT89S52加外围器件作控制单元,用数码管显示,制作的经济实惠的电梯模拟系统。其设计了一个八层电梯系统,使用单片机C语言进行编程,实现运送乘客到任意楼层,并且显示电梯的楼层和上下行。利用单片机控制电梯有成本低,通用性强,灵活性大及易于实现复杂控制等优点。 关键词:AT89S52单片机 模拟电梯 数码管目录一、设计任务41.1设计内容与要求4二、硬件系统实现52.1 AT89S52芯片简介52.2功能模块图102.3显示模块112.4复位开关模块122.5 振荡电路模块132.6程序下载模块142.7设计电路及连线14三、软件设计153.1 软件功能描述153.2 流程图设计15 3.3 单片机C语言程序16四、系统的调试444.1 硬件的调试444.2 软件的调试44五、设计心得45六、参考文献46一设计任务随着现代高科技的发展,住房和办公用楼都已经逐渐向高层发展。电梯是高层宾馆、商店、住宅、多层仓库等高层建筑不可缺少的垂直方向的交通运输工具。1889年美国奥梯斯升降机公司推出的世界上第一部以电动机为动力的升降机,同年在纽约市马累特大厦安装成功。随着建筑物规模越来越大,楼层也越来越高,对电梯的调速精度、调速范围等静态和动态特性都提出了更高的要求。由于传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。 电梯控制系统是比较复杂的一个大型系统,在计算机诞生的几十年里,继电器控制系统为电梯控制的发展做了巨大的贡献,但在性能上和单片机控制还是有本质上的差距。在科技的不断发展下,单片机控制系统很快可以解决抗扰性,成为方便有效的电梯控制系统。此单片机模拟电梯用绿色发光二极管组成的箭头来指示电梯当前是处于上升状态还是下降状态,用数码管显示当前是处于哪一层,用按键对应的二极管指示电梯走到哪一层会停.电源接通后,若没有人按下停止按键,它就以每层2秒的速度一直上下运行,若有人按下某一层的停止按键,它就会在相应的那一层停止4秒钟,并伴有开门和关门的声音提示。二 硬件系统实现2.1.AT89S52芯片AT89S52低功耗高性能CMOS 8位单片机,片内8k Bytes ISP(In-system programmable)的可反复擦写1000次的FLASH只读程序存储器,器件采用ATMEL公司之高密度、非易失性存储技术制造,兼容标准 C51指令系统及80C51引脚结构,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。单芯片上,拥有8 位CPU及在系统可编程FLASH,使AT89S52为众多嵌入式控制应用系统提供高灵活、超有效之解决方案。图2.1 AT89S52管脚图:AT89S52之特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。AT89S52功能:8k字节FLASH,256字节RAM,32位I/O口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一6向量2级中断结构,全双工串行口,片内晶振及时钟电路。AT89S52可降至0Hz静态逻辑操作,支持2种软件可选节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。P0口8位漏极开路之双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。访问外部程序和数据存储器时,P0口亦被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在FLASH编程时,P0口亦用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需外部上拉电阻。P1口有内部上拉电阻的8位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可作输入口用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可作输入口用。作输入用时,被外部拉低的引脚因内部电阻,将输出电流(IIL)。此外,P1.0及P1.2分别作定时器/计数器2之外部计数输入(P1.0/T2)及时器/计数器2之触发输入(P1.1/T2EX),详见表1所示。在flash编程及校验时,P1口接收低8位地址字节。 表2.1.1引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2口有内部上拉电阻的8 位双向I/O口,P2输出缓冲器能驱动4个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可作输入口。作输入用时,被外部拉低的引脚因内部电阻,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器,P2口送出高八位地址。在这种应用中,P2口用很强的内部上拉发送1。在用8位地址访问外部数据存储器时,P2口输出P2锁存器之内容。在FLASH编程及校验时,P2口亦接收高8位地址字节及一些控制信号。 P3口有内部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个TTL 逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可用作输入口。作输入用时,被外部拉低的引脚因内部电阻之原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)用,如表2所示。在FLASH编程及校验时,P3口亦接收些控制信号。此外,P3口亦接收些用于FLASH闪存编程及程序校验的控制信号。 表2.1.2端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外中断0)P3.3INT1(外中断1)P3.4TO(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)RST复位输入。振荡器工作时,RST引脚有两个机器周期以上高电平将是单片机复位。 ALE/PROG访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般,ALE仍以时钟振荡频率的1/6输出固定之脉冲信号,故它可对外输出时钟或用于定时目的。需注意:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚亦用于输入编程脉冲(PROG)。若必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX及MOVC指令方能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN)输出是外部程序存储器之读选通信号,AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP外部访问允许,要CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端须保持低电平(接地)。需注意:若加密位LB1被编程,复位时内部会锁存EA端状态。若EA端为高电平(接Vcc端),CPU则执行内部程序存储器之指令。 FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这须是该器件是使用12V编程电压Vpp。XTAL1振荡器反相放大器及内部时钟发生电路之输入端。XTAL2振荡器反相放大器之输出端。单片机最小系统1、 单片机电源: AT89S51单片机的工作电压范围:4.0V5.5V, 所以通常给单片机外接5V直流电源。连接方式为VCC(40脚):接电源+5V端VSS(20脚):接电源地端2、时钟电路:单片机工作的时间基准,决定单片机工作速度。时钟电路就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。AT89S51单片机时钟频率范围:0 33MHz。 3、复位电路:确定单片机工作的起始状态,完成单片机的启动过程。单片机接通电源时产生复位信号,完成单片机启动,确定单片机起始工作状态。手动按键产生复位信号,完成单片机启动,确定单片机的初始状态。 通常在单片机工作出现混乱或“死机”时,使用手动复位可实现单片机“重启”。2.2.功能模块图在本设计中需用到AT89S52芯片,1个数码管,一个蜂鸣器,复位电路,9个按键,24个发光二极管。复位键 输入时钟电路 AT89S52单片机 输出显示 图2.2功能模块2.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”。 图2.3 LED数码管图2.4 复位开关 2.4 复位开关模块AT80S52单片机的复位是靠外部电路实现的。AT80S52单片机工作之后,只要在它的RST引线上加载10ms以上的高电平,单片机就能有效地复位。AT80S52单片机通常采用上电自动复位和按键复位两种方式。最简单的复位电路如上图。2.5 振荡器电路模块AT80S52单片机内部的振荡电路是一个增益反相放大器,引线 XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。单片机内部虽然有振荡电路,但要形成时钟,外部还需要附加电路。石英晶体振荡和陶瓷振荡均可采用。输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。52单片机的时钟产生方式有两种,分别为:内部时钟方式和外部时钟方式。利用其内部的振荡电路XTAL1和XTAL2引线上外接定时元件,内部振荡电路便产生自激振荡,用示波器可以观察到XTAL2输出的时钟信号。在AT80S52单片机一般常用内部时钟方式,也就是在XTAL1和XTAL2之间连接晶体振荡器与电容构成稳定的自激振荡器,晶体和电容决定了单片机的工作时间精度为1微秒。2.6程序下载模块 该模块完成的功能是把源程序代码下载到AT89S52芯片中,它需要和微机上的ISP下载器软件配合使用来完成这样的功能。ISP为在线编程接口,J2为标准10P JTAG下载接口。ISP在线编程接口为AT89S52单片机提供了方便的在线编程方法。使用时将ISP下载线一端与PC并口相连接,一端与ISP接口相连,使用ISP下载软件即可实现MCU在线编程。2.7 设计电路及连线 三软件设计3.1 软件功能描述此单片机模拟电梯用绿色发光二极管组成的箭头来指示电梯当前是处于上升状态还是下降状态,用数码管显示当前是处于哪一层,用按键配合二极管指示电梯走到哪一层会停.电源接通后,若没有人按下停止按键,它就以每层2秒的速度一直上下运行,若有人按下某一层的停止按键,它就会在相应的那一层停止4秒钟,并伴有开门和关门的声音提示。初始化按键查询1层按键按下2层按键按下5层按键按下6层按键按下3层按键按下7层按键按下4层按键按下8层按键按下对应中断程序3.2 流程图设计3.3 单片机C语言程序模拟电梯程序#include#includeint p1_temp=0;int p2_temp=0;int tcount=0;int ceng_shu=0;int shang_xia_state=0;int open_one_door_up=0;int up_time_1to2=0;int open_two_door_up=0;int up_time_2to3=0;int open_three_door_up=0;int up_time_3to4=0;int open_four_door_up=0;int up_time_4to5=0;int open_five_door_up=0;int up_time_5to6=0;int open_six_door_up=0;int up_time_6to7=0;int open_seven_door_up=0;int up_time_7to8=0;int open_eight_door_up=0;int down_falg_seven=0;int down_time_8to7=0;int open_seven_door_down=0;int down_time_7to6=0;int open_six_door_down=0;int down_falg_six=0;int down_time_6to5=0;int down_falg_five=0;int open_five_door_down=0;int down_falg_four=0;int open_four_door_down=0;int down_falg_three=0;int down_falg_two=0;int open_two_door_down=0;int down_time_1to0=0;int down_time_3to2=0;int down_time_5to4=0;int open_three_door_down=0;int up_time_8to9=0;int down_time_2to1=0;sbit led0=P20;sbit led1=P21;sbit led2=P22;sbit led3=P23;sbit led4=P24;sbit led5=P25;sbit led6=P26;sbit led7=P27;sbit beep=P34;void initial(void) TMOD=0X01; TH0=0X3C; TL0=0XB0; IE=0X82; TR0=1; tcount=4; shang_xia_state=0; P0=0X06; P3=0xf8;void delay(int x,int y) int m,n,i,j; m=x; n=y; for(i=0;i+;i=m) for(j=0;j+;jn) _nop_();void main_loop(void) if(P1!=0XFF) delay(100,50);if(P1!=0xff) p1_temp=P1; switch(p1_temp) case 0xfe: led0=0;break; case 0xfd: led1=0;break; case 0xfb: led2=0;break; case 0xf7: led3=0;break; case 0xef: led4=0;break; case 0xdf: led5=0;break; case 0xbf: led6=0;break; case 0x7f: led7=0;break;default: break; void timer0(void) interrupt 1 using 3 /void timer0_int() /;interrupt 2 TH0=0X3C; TL0=0XB0; TR0=0; tcount+; if(tcount=5) /每50ms*5=250ms 检测一次电梯的 位置和 状态 tcount=0; if(shang_xia_state=0) /上升 P3=0XF8; if(ceng_shu=0) P0=0x06; p2_temp=P2; if(p2_temp&0x01)=0) open_one_door_up+; if(open_one_door_up=1) beep=0; if(open_one_door_up=2) beep=1; if(open_one_door_up=16) beep=0; if(open_one_door_up=17) beep=1; open_one_door_up=0; led0=1; else up_time_1to2+; if(up_time_1to2=9) up_time_1to2=0; ceng_shu+; else if(ceng_shu=1) P0=0x5b; p2_temp=P2; if(p2_temp&0x02)=0) open_two_door_up+; if(open_two_door_up=1) beep=0; if(open_two_door_up=2) beep=1; if(open_two_door_up=16) beep=0; if(open_two_door_up=17) beep=1; open_two_door_up=0; led1=1; else up_time_2to3+; if(up_time_2to3=9) up_time_2to3=0; ceng_shu+; else if(ceng_shu=2) P0=0x4f; p2_temp=P2; if(p2_temp&0x04)=0) open_three_door_up+; if(open_three_door_up=1) beep=0; if(open_three_door_up=2) beep=1; if(open_three_door_up=16) beep=0; if(open_three_door_up=17) beep=1; open_three_door_up=0; led2=1; else up_time_3to4+; if(up_time_3to4=9) up_time_3to4=0; ceng_shu+; else if(ceng_shu=3) P0=0x66; p2_temp=P2; if(p2_temp&0x08)=0) open_four_door_up+; if(open_four_door_up=1) beep=0; if(open_four_door_up=2) beep=1; if(open_four_door_up=16) beep=0; if(open_four_door_up=17) beep=1; open_four_door_up=0; led3=1; else up_time_4to5+; if(up_time_4to5=9) up_time_4to5=0; ceng_shu+; else if(ceng_shu=4) P0=0x6d; p2_temp=P2; if(p2_temp&0x10)=0) open_five_door_up+; if(open_five_door_up=1) beep=0; if(open_five_door_up=2) beep=1; if(open_five_door_up=16) beep=0; if(open_five_door_up=17) beep=1; open_five_door_up=0; led4=1; else up_time_5to6+; if(up_time_5to6=9) up_time_5to6=0; ceng_shu+; else if(ceng_shu=5) P0=0x7d; p2_temp=P2; if(p2_temp&0x20)=0) open_six_door_up+; if(open_six_door_up=1) beep=0; if(open_six_door_up=2) beep=1; if(open_six_door_up=16) beep=0; if(open_six_door_up=17) beep=1; open_six_door_up=0; led5=1; else up_time_6to7+; if(up_time_6to7=9) up_time_6to7=0; ceng_shu+; else if(ceng_shu=6) P0=0x07; p2_temp=P2; if(p2_temp&0x40)=0) open_seven_door_up+; if(open_seven_door_up=1) beep=0; if(open_seven_door_up=2) beep=1; if(open_seven_door_up=16) beep=0; if(open_seven_door_up=17) beep=1; open_seven_door_up=0; led6=1; else up_time_7to8+; if(up_time_7to8=9) up_time_7to8=0; ceng_shu+; else if(ceng_shu=7) P0=0x7f; p2_temp=P2; if(p2_temp&0x80)=0) open_eight_door_up+; if(open_eight_door_up=1) beep=0; if(open_eight_door_up=2) beep=1; if(open_eight_door_up=16) beep=0; if(open_eight_door_up=17) beep=1; open_eight_door_up=0; led7=1; else up_time_8to9+; if(up_time_8to9=9) up_time_8to9=0; /ceng_shu+;shang_xia_state=1; else /下降 /1 P3=0X75; if(ceng_shu=7) /2 /open_eight_door_down if(down_falg_seven=0) /3 P0=0x07; down_time_8to7+; if(down_time_8to7=9) down_time_8to7=0; p2_temp=P2; down_falg_seven=1; /3 else /4 p2_temp=P2; if(p2_temp&0x40)=0) /5 down_falg_seven=1; open_seven_door_down+; if(open_seven_door_down=1) beep=0; if(open_seven_door_down=2) beep=1; if(open_seven_door_down=16) beep=0; if(open_seven_door_down=17) /6 open_seven_door_down=0; down_falg_seven=0; led6=1; beep=1; /6 /5 else /7 ceng_shu-; down_falg_seven=0; /7 /4 /2 else if(ceng_shu=6) /2 /open_eight_door_down if(down_falg_six=0) /3 P0=0x7d; down_time_7to6+; if(down_time_7to6=9) down_time_7to6=0; down_falg_six=1; /3 /3 else /4 p2_temp=P2; if(p2_temp&0x20)=0) /5 down_falg_six=1; open_six_door_down+; if(open_six_door_down=1) beep=0; if(open_six_door_down=2) beep=1; if(open_six_door_down=16) beep=0; if(open_six_door_down=17) /6 open_six_door_down=0; down_falg_six=0; led5=1; beep=1; /6 /5 else /7 ceng_shu-; down_falg_six=0; /7 /4 /2 else if(ceng_shu=5) /2 if(down_falg_five=0) /3 P0=0x6d; down_time_6to5+; if(down_time_6to5=9) down_time_6to5=0; down_falg_five=1; /3 /3 else /4 p2_temp=P2; if(p2_temp&0x10)=0) /5 down_falg_five=1; open_five_door_down+; if(open_five_door_down=1) beep=0; if(open_five_door_down=2) beep=1; if(open_five_door_down=16) beep=0; if(open_five_door_down=17) /6 open_five_door_down=0; down_falg_five=0; led4=1; beep=1; /6 /5 else /7 ceng_shu-; down_falg_five=0; /7 /4 /2 else if(ceng_shu=4) /2 if(down_falg_four=0) /3 P0=0x66; down_time_5to4+; if(down_time_5to4=9) down_time_5to4=0; down_falg_four=1; /3 /3 else p2_temp=P2; if(p2_temp&0x08)=0) /5 down_falg_four=1; open_four_door_down+; if(open_four_door_down=1) beep=0; if(open_four_door_down=2) beep=1; if(open_four_door_down=16) beep=0; if(open_four_door_down=17) /6 open_four_door_down=0; down_falg_four=0; led3=1; beep=1; /6 /5 else /7 ceng_shu-; down_falg_four=0; /7 /4 else if(ceng_shu=3) /2 if(down_falg_three=0) /3 P0=0x4f; down_time_3to2+; if(down_time_3to2=9)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论