基于单片机的电梯仿真程序课程设计学位论文.docx

上传人:b****8 文档编号:12860413 上传时间:2023-06-08 格式:DOCX 页数:60 大小:373.19KB
下载 相关 举报
基于单片机的电梯仿真程序课程设计学位论文.docx_第1页
第1页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第2页
第2页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第3页
第3页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第4页
第4页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第5页
第5页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第6页
第6页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第7页
第7页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第8页
第8页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第9页
第9页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第10页
第10页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第11页
第11页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第12页
第12页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第13页
第13页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第14页
第14页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第15页
第15页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第16页
第16页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第17页
第17页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第18页
第18页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第19页
第19页 / 共60页
基于单片机的电梯仿真程序课程设计学位论文.docx_第20页
第20页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的电梯仿真程序课程设计学位论文.docx

《基于单片机的电梯仿真程序课程设计学位论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的电梯仿真程序课程设计学位论文.docx(60页珍藏版)》请在冰点文库上搜索。

基于单片机的电梯仿真程序课程设计学位论文.docx

基于单片机的电梯仿真程序课程设计学位论文

二○一四~二○一五学年第一学期

信息科学与工程学院

自动化系

课程设计报告书

 

姓名:

余义

学号:

201204134019

班级:

自动化1201班

课程名称:

微机原理与应用课程设计

指导教师:

程磊

 

(1)前言

........................................1

(2)现代电梯概述

......................................3

(3)硬件部分设计

.....................................6

(4)软件部分设计

.....................................12

(5)电梯运行界面

.......................................52

(6)设计总结与感悟

........................................................56

(7)参考文献

........................................................57

 

电梯仿真程序

一、前言:

本电梯仿真程序采用的是一个基于单片机及其相关外设,编程语言采用汇编与C语言结合的方式,通过矩阵键盘线反选法输入楼层,上、下行等控制信号,经I\O口读入,进行相关实时控制,软硬件结合的仿真系统,输出设备包括由CD4511驱动显示楼层的7段数码管,显示实时信息的显示屏LCD12864,由PWM控制显示电梯门开关的舵机,以及由I\O口间接控制的驱动电机正反转双桥驱动电路等几个部分组成。

可以实现真实电梯中,任意层呼叫,目的层到达按要求顺序到达,开关门,无输入自动回1层等一系列功能,并实时显示当前电梯运行状态,关于真实电梯门控光幕装置,电机自动抱闸平层等部分,由于知识不足,没有足一实现,但会在接下来的专业知识学习过程中不断完善,同时也希望得到程老师的指导。

 

二、现代电梯概述:

电梯是一种以电动机为动力的垂直升降机,装有箱状吊舱,用于多层建筑乘人或载运货物。

也有台阶式,踏步板装在履带上连续运行,俗称自动电梯。

服务于规定楼层的固定式升降设备。

它具有一个轿厢,运行在至少两列垂直的或倾斜角小于15°的刚性导轨之间。

轿厢尺寸与结构形式便于乘客出入或装卸货物,本次微机课程设计电梯仿真选用的是垂直升降梯。

2.1、电梯功能

现代电梯主要由曳引机(绞车)、导轨、对重装置、安全装置(如限速器、安全钳和缓冲器等)、信号操纵系统、轿厢与厅门等组成。

这些部分分别安装在建筑物的井道和机房中。

通常采用钢丝绳摩擦传动,钢丝绳绕过曳引轮,两端分别连接轿厢和平衡重,电动机驱动曳引轮使轿厢升降。

电梯要求安全可靠、输送效率高、平层准确和乘坐舒适等。

电梯的基本参数主要有额定载重量、可乘人数、额定速度、轿厢外廓尺寸和井道型式等。

简单使用方法(紧急情况下面有解决方法)载人电梯都是微机控制的智能化、自动化设备,不需要专门的人员来操作 电梯电梯结构图电梯内部结构图驾驶,普通乘客只要按下列程序乘坐和操作电梯即可。

 

2.2、运行过程:

1、在乘梯楼层电梯入口处,根据自己上行或下行的需要,按上方向或下方向箭头按钮,只要按钮上的灯亮,就说明你的呼叫已被记录,只要等待电梯到来即可。

2、电梯到达开门后,先让轿厢内人员走出电梯,然后呼梯者再进入电梯轿厢。

进入轿厢后,根据你需要到达的楼层,按下轿厢内操纵盘上相应的数字按钮。

同样,只要该按钮灯亮,则说明你的选层已被记录;此时不用进行其他任何操作,只要等电梯到达你的目的层停靠即可。

3、电梯行驶到你的目的层后会自动开门,此时按顺序走出电梯即结束了一个乘梯过程。

 

三、硬件部分设计

3.1、总电路图:

3.2、单片机最小系统:

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.

对51系列单片机来说,最小系统一般应该包括:

单片机、晶振电路、复位电路.

下面给出一个51单片机的最小系统电路图.

3.3、矩阵键盘:

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,

1.键盘的工作原理:

按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。

行线通过上拉电阻接到+5V电源上。

无按键按下时,行线处于高电平的状态,而当有按键按下时,行线电平与此行线相连的列线电平决定。

2.行列扫描法原理:

第一步,使行线为编程的输入线,列线是输出线,拉低所有的列线,判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则所有的行线都为高电平。

第二步,在第一步判断有键按下后,延时10ms消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下一步,否则返回第一步重新判断。

第三步,开始扫描按键位置,采用逐行扫描,每间隔1ms的时间,分别拉低第一列,第二列,第三列,第四列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置,分别把行值和列值储存在寄存器里。

3.4、CD4511当前楼层显示

CD4511是一片CMOSBCD-锁存/7段译码/驱动器,用于驱动共阴极LED(数码管)显示器的BCD码-七段码译码器。

它具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。

可直接驱动共阴LED数码管。

 

  以下是CD4511数码管驱动原理电路图。

是CD4511实现LED与单片机的并行接口方法。

3.5、LCD12864

不带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

3.6、电机双桥驱动系统

一、H桥驱动电路

  图4.12中所示为一个典型的直流电机控制电路。

电路得名于“H桥驱动电路”是因为它的形状酷似字母H。

4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:

图4.12及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。

如图所示,H桥式电机驱动电路包括4个三极管和一个电机。

要使电机运转,必须导通对角线上的一对三极管。

根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。

图4.12H桥驱动电路

  要使电机运转,必须使对角线上的一对三极管导通。

例如,如图4.13所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。

按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。

当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。

图4.13H桥电路驱动电机顺时针转动

图4.14所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。

当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机周围的箭头表示为逆时针方向)。

图4.14H桥驱动电机逆时针转动

二、使能控制和方向逻辑

  驱动电机时,保证H桥上两个同侧的三极管不会同时导通非常重要。

如果三极管Q1和Q2同时导通,那么电流就会从正极穿过两个三极管直接回到负极。

此时,电路中除了三极管外没有其他任何负载,因此电路上的电流就可能达到最大值(该电流仅受电源性能限制),甚至烧坏三极管。

基于上述原因,在实际驱动电路中通常要用硬件电路方便地控制三极管的开关。

  图4.155所示就是基于这种考虑的改进电路,它在基本H桥电路的基础上增加了4个与门和2个非门。

4个与门同一个“使能”导通信号相接,这样,用这一个信号就能控制整个电路的开关。

而2个非门通过提供一种方向输人,可以保证任何时候在H桥的同侧腿上都只有一个三极管能导通。

(与本节前面的示意图一样,图4.15所示也不是一个完整的电路图,特别是图中与门和三极管直接连接是不能正常工作的。

图4.15具有使能控制和方向逻辑的H桥电路

  采用以上方法,电机的运转就只需要用三个信号控制:

两个方向信号和一个使能信号。

如果DIR-L信号为0,DIR-R信号为1,并且使能信号是1,那么三极管Q1和Q4导通,电流从左至右流经电机(如图4.16所示);如果DIR-L信号变为1,而DIR-R信号变为0,那么Q2和Q3将导通,电流则反向流过电机。

 

四、软件部分设计:

4.1、程序框图

4.2、C51单片机汇编、C语言混编程序:

;电梯。

SRCgeneratedfrom:

电梯.c

;COMPILERINVOKEDBY:

;C:

\Keil\C51\BIN\C51.EXE电梯.cBROWSEDEBUGOBJECTEXTEND

$NOMOD51

NAME电梯

P0DATA080H

P1DATA090H

P2DATA0A0H

P3DATA0B0H

T0BIT0B0H.4

ACBIT0D0H.6

T1BIT0B0H.5

T2BIT090H.0

EABIT0A8H.7

IEDATA0A8H

clockBIT0B0H.0

EXF2BIT0C8H.6

RDBIT0B0H.7

ESBIT0A8H.4

IPDATA0B8H

RIBIT098H.0

INT0BIT0B0H.2

CYBIT0D0H.7

TIBIT098H.1

INT1BIT0B0H.3

RCAP2HDATA0CBH

PSBIT0B8H.4

SPDATA081H

T2EXBIT090H.1

OVBIT0D0H.2

RCAP2LDATA0CAH

C_T2BIT0C8H.1

WRBIT0B0H.6

RCLKBIT0C8H.5

TCLKBIT0C8H.4

SBUFDATA099H

PCONDATA087H

SCONDATA098H

TMODDATA089H

TCONDATA088H

IE0BIT088H.1

IE1BIT088H.3

BDATA0F0H

CP_RL2BIT0C8H.0

ACCDATA0E0H

servo_doorBIT0B0H.7

ET0BIT0A8H.1

ET1BIT0A8H.3

TF0BIT088H.5

ET2BIT0A8H.5

TF1BIT088H.7

TF2BIT0C8H.7

RB8BIT098H.2

TH0DATA08CH

EX0BIT0A8H.0

IT0BIT088H.0

TH1DATA08DH

TB8BIT098H.3

EX1BIT0A8H.2

IT1BIT088H.2

TH2DATA0CDH

PBIT0D0H.0

SM0BIT098H.7

TL0DATA08AH

SM1BIT098H.6

TL1DATA08BH

SM2BIT098H.5

TL2DATA0CCH

PT0BIT0B8H.1

PT1BIT0B8H.3

RS0BIT0D0H.3

PT2BIT0B8H.5

TR0BIT088H.4

RS1BIT0D0H.4

TR1BIT088H.6

TR2BIT0C8H.2

PX0BIT0B8H.0

PX1BIT0B8H.2

DPHDATA083H

DPLDATA082H

EXEN2BIT0C8H.3

RENBIT098H.4

T2CONDATA0C8H

RXDBIT0B0H.0

TXDBIT0B0H.1

F0BIT0D0H.5

PSWDATA0D0H

?

PR?

_delay?

SMARTCARSEGMENTCODE

?

PR?

_ABS?

SMARTCARSEGMENTCODE

?

PR?

keysort?

SMARTCARSEGMENTCODE

?

PR?

keycheck?

SMARTCARSEGMENTCODE

?

PR?

sys_init?

SMARTCARSEGMENTCODE

?

PR?

_BCD?

SMARTCARSEGMENTCODE

?

PR?

main?

SMARTCARSEGMENTCODE

?

PR?

TIME_BASE?

SMARTCARSEGMENTCODE

?

C_INITSEGSEGMENTCODE

?

BI?

SMARTCARSEGMENTBIT

?

DT?

SMARTCARSEGMENTDATA

EXTRNCODE(?

C_STARTUP)

PUBLICfloor_up_2

PUBLICfloor_up_1

PUBLICrankkey

PUBLICopendoor

PUBLICi

PUBLICup_flag

PUBLICrow

PUBLICfloor_down_5

PUBLICfloor_down_4

PUBLICfloor_down_3

PUBLICfloor_down_2

PUBLICpressflag

PUBLICkey

PUBLICkey_flag

PUBLICstop_flag

PUBLICtemp

PUBLICdown_flag

PUBLICfloor_flag_5

PUBLICfloor_flag_4

PUBLICfloor_flag_3

PUBLICfloor_flag_2

PUBLICfloor_flag_1

PUBLICstart

PUBLICclose_door

PUBLICrank

PUBLICcount

PUBLICrowkey

PUBLICfloor_up_4

PUBLICfloor_up_3

PUBLICTIME_BASE

PUBLICmain

PUBLIC_BCD

PUBLICsys_init

PUBLICkeycheck

PUBLICkeysort

PUBLIC_ABS

PUBLIC_delay

RSEG?

BI?

SMARTCAR

floor_up_3:

DBIT1

floor_up_4:

DBIT1

close_door:

DBIT1

start:

DBIT1

floor_flag_1:

DBIT1

floor_flag_2:

DBIT1

floor_flag_3:

DBIT1

floor_flag_4:

DBIT1

floor_flag_5:

DBIT1

down_flag:

DBIT1

stop_flag:

DBIT1

pressflag:

DBIT1

floor_down_2:

DBIT1

floor_down_3:

DBIT1

floor_down_4:

DBIT1

floor_down_5:

DBIT1

up_flag:

DBIT1

opendoor:

DBIT1

floor_up_1:

DBIT1

floor_up_2:

DBIT1

RSEG?

DT?

SMARTCAR

rowkey:

DS1

count:

DS2

rank:

DS1

temp:

DS1

key_flag:

DS16

key:

DS1

row:

DS1

i:

DS1

rankkey:

DS1

RSEG?

C_INITSEG

DB002H

DBcount

DW00000H

DB010H

DBkey_flag

DB000H

DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

DB000H,000H,000H,000H,000H

 

DB001H

DBkey

DB000H

DB001H

DBi

DB000H

DB0C1H,pressflag+000H;bit-init

DB0C1H,up_flag+000H;bit-init

DB0C1H,down_flag+000H;bit-init

DB0C1H,stop_flag+000H;bit-init

DB001H

DBrowkey

DB000H

DB001H

DBrankkey

DB000H

DB001H

DBtemp

DB000H

DB001H

DBrow

DB000H

DB001H

DBrank

DB000H

DB0C1H,floor_flag_1+000H;bit-init

DB0C1H,floor_flag_2+000H;bit-init

DB0C1H,floor_flag_3+000H;bit-init

DB0C1H,floor_flag_4+000H;bit-init

DB0C1H,floor_flag_5+000H;bit-init

DB0C1H,floor_down_5+000H;bit-init

DB0C1H,floor_up_4+000H;bit-init

DB0C1H,floor_down_4+000H;bit-init

DB0C1H,floor_up_3+000H;bit-init

DB0C1H,floor_down_3+000H;bit-init

DB0C1H,floor_up_2+000H;bit-init

DB0C1H,floor_down_2+000H;bit-init

DB0C1H,floor_up_1+000H;bit-init

DB0C1H,opendoor+000H;bit-init

DB0C1H,close_door+000H;bit-init

DB0C1H,start+000H;bit-init

;//晶振12MHz6T模式,总线频率2MHz指令0.5us

;#pragmasrc

;#include//89C52的头文件

;

;#defineT0_HIGH0xff//T0计时器寄存器初值

;#defineT0_LOW0x9b//溢出计数80个,定时周期80*0.25us=20us

;//为了保证主程序正常运行,定时器计数最好不要小于80个

;

;#definekeynumber1616个按键标志

;#defineKEYIOP24*4键盘输入

;#defineoutputP1lcd12864数据D0~D7

;#definenobcdP0BCD端口输出

;

;sbitclock=P3^0;lcd12864时钟输出端

;sbitservo_door=P3^7;舵机控制门输出端口

;intcount=0;

;

;charkey_flag[keynumber]={0};按键标志位

;

;charkey=0;

;chari=0;

;

;bitpressflag=0;

;bitup_flag=0;

;bitdown_flag=0;控制信号标志位

;bitstop_flag=0;

;

;

;

;

;

;charrowkey=0;键盘反选变量设置

;charrankkey=0;

;chartemp=0;

;charrow=0;

;charrank=0;

;

;bitfloor_flag_1=0;、、各楼层标志位

;bitfloor_flag_2=0;

;bitfloor_flag_3=0;

;bitfloor_flag_4=0;

;bitfloor_flag_5=0;

;bitfloor_down_5=0;

;bitfloor_up_4=0;

;bitfloor_down_4=0;

;bitfloor_up_3=0;

;bitfloor_down_3=0;

;bitfloor_up_2=0;

;bitfloor_down_2=0;

;bitfloor_up_1=0;

;bitopendoor=0;

;bitclose_door=0;

;bitstart=0;

;

;//-----------------------------------------------------------------------

;voiddelay(unsignedinti)//延时函数

_delay:

USING0

;SOURCELINE#56

;----Variable'i?

040'assignedtoRegister'R6/R7'----

;{

;SOURCELINE#57

;unsignedcharj;

;for(;i>0;i--)

;SOURCELINE#59

?

C0001:

SETBC

MOVA,R7

SUBBA,#00H

MOVA,R6

SUBBA,#00H

JC?

C0007

;for(j=0;j<250;j++);

;SOURCELINE#60

;----Variable'j?

041'assignedtoRegister'R5'----

CLRA

MOVR5,A

?

C0004:

INCR5

CJNER5,#0FAH,?

C0004

?

C0003:

MOVA,R7

DECR7

JNZ?

C0001

DECR6

?

C0113:

SJM

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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