720.电梯顺序控制问题 硬件课程设计报告 包含电气原理图、流程图、模块分析、源代码设计背景完整报告等内容.doc

上传人:laozhun 文档编号:2387911 上传时间:2023-02-17 格式:DOC 页数:56 大小:302KB
返回 下载 相关 举报
720.电梯顺序控制问题 硬件课程设计报告 包含电气原理图、流程图、模块分析、源代码设计背景完整报告等内容.doc_第1页
第1页 / 共56页
720.电梯顺序控制问题 硬件课程设计报告 包含电气原理图、流程图、模块分析、源代码设计背景完整报告等内容.doc_第2页
第2页 / 共56页
720.电梯顺序控制问题 硬件课程设计报告 包含电气原理图、流程图、模块分析、源代码设计背景完整报告等内容.doc_第3页
第3页 / 共56页
720.电梯顺序控制问题 硬件课程设计报告 包含电气原理图、流程图、模块分析、源代码设计背景完整报告等内容.doc_第4页
第4页 / 共56页
720.电梯顺序控制问题 硬件课程设计报告 包含电气原理图、流程图、模块分析、源代码设计背景完整报告等内容.doc_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《720.电梯顺序控制问题 硬件课程设计报告 包含电气原理图、流程图、模块分析、源代码设计背景完整报告等内容.doc》由会员分享,可在线阅读,更多相关《720.电梯顺序控制问题 硬件课程设计报告 包含电气原理图、流程图、模块分析、源代码设计背景完整报告等内容.doc(56页珍藏版)》请在三一办公上搜索。

1、计算机科学与技术学院硬件课程设计报告专 业: 计算机科学与技术 班 级: 设计题目: 电梯顺序控制问题 组 长: 姓 名: 成 员: 学 号: 指导教师: 职 称: 教授 2008年 6月 题 目电梯顺序控制问题设计日期 2008 年 5 月 30 日至 2008 年 7 月 6日小组成员在本次设计中承担的任务文档成绩XXX主策划设计,编程及其调试,分析资料XX流程图绘制, 原理图绘制,查阅资料XXX硬件原理图连线,辅助编程,协调组织,,指导教师签字: 年 月 日目录一概述、4二设计任务、41、设计一个电梯控制系统实现目标、42、具体功能、43、小组成员分工、54、实验设备、55、设计思路、5

2、三、元件功能与电路设计、61 8255A的主要功能、62 8253的主要功能、93 七段LED显示器、124 键盘介绍、135LED跑马灯、15四、硬件原理图、151键盘控制数码管电路图、152跑马灯电路图、16五、软件主要模块流程图、161总体流程图、172键盘扫描流程图、183跑马灯流程图、18六、程序清单、19七问题分析与解决、29八设计体会、30九个人专题、32十参考资料、56一 概 述1.1 电梯控制系统属于顺序时间控制问题。电梯行进有明显的单向性和顺序性。具体方案如下: 电梯初始停于一层,目的楼层由键盘输入,键盘键号与电梯层数对应如下:0-一层,1-二层,2-三层,3-四层;键盘扫

3、描到目的楼层信号对应的键号后,查找七段数码管对应的代码,到后将目的楼层用七段数码管显示出来;电梯的运行状态由跑马灯来显示,规定电梯上行时,跑马灯顺序向左移动,电梯下行时跑马灯顺序向右移动,移动次数由目的楼层与当前电梯所处楼层的差值控制,到达目的楼层后跑马灯暂时终止,等待新的信号进入。 二 设计任务2.1设计一个电梯控制系统实现:模拟现实电梯行进情况(电梯向上运行用左移位的跑马灯演示,向下运行用右移的跑马灯演示,电梯所到楼层对应的灯熄灭显示当前位置)及乘客选层情况(通过键盘扫描进入8255后,通过一定的转换在七段数码管上显示出来)。2.2具体功能如下:2.2.1外呼信号的登记消除和显示环节2.2

4、.2电梯的开门环节2.2.3内选信号的登记消除和显示环节2.2.4电梯内部计数运行2.2.5电梯的关门环节2.2.6层楼信号的产生与清除环节2.2.7停层信号的产生与消除环节的设计2.2.8电梯的开门环节2.2.9电梯到达一楼或四楼时,改变电梯状态。2.3小组成员分工:组织协调(组长):XXX硬件设计:XXX程序设计:XX资料收集:XX论文编辑:X2.4实验设备计数器8253(一片)、8255(两片)LED(四个)、键盘、七段数码管(一个)2.5设计思路假设前提:电梯在运行过程中没有新的申请信号进入间段内(即电梯运行的时间段内不对键盘进行任何扫描),则电梯每一遍运行中都只有一个目的楼层申请信号

5、进入电梯控制系统,电梯执行完此次运行到达目的楼层后才会检测键盘上的新信号,再次对新信号做出回应,执行新的申请开始运行。2.5.1电梯处于初始楼层,即一楼时,扫描键盘第二行的前三个键是否有信号,有信号时转向2.5.3.2,若没有信号,等待有信号键入。2.5.2电梯处于第四楼层时,扫描键盘第三行的后三个键是否有信号,有信号时转向2.5.3.3,若没有信号,等待有信号键入。2.5.3电梯处于第二楼层或第三楼层时:2.5.3.1对键盘表示电梯上下运行的二三行进行扫描。2.5.3.2扫描到有上升运行信号时,确定是来自哪一层的信号,将该楼层层号与目前楼层层号的差值送入左移位跑马灯循环次数寄存器中和计数器计

6、数值寄存器中。选中左移位跑马灯子程序和计数子程序同时启动,电梯运行至发送运行方向信号的楼层,转向开门子程序,所有计数器清零。此时,扫描键盘第一行,读取目的楼层信息,将目的楼层层号与目前楼层层号的差值送入跑马灯循环次数寄存器中和计数器计数值寄存器中,转向关门子程序,启动跑马灯子程序和计数器子程序,运行到目的层,再扫描键盘,判断哪层是否还有申请信号。2.5.3.3扫描到有下行运行信号时,确定是来自哪一层的信号,将该楼层层号减一,值送入右移位跑马灯循环次数寄存器和计数器计数值寄存器中,选中右移位跑马灯子程序和计数子程序同时启动,电梯运行到发送运行方向信号的楼层,转向开门子程序,所有计数器清零。此时,

7、扫描键盘第一行,读取目的楼层信息,将目的楼层层号与目前楼层层号的差值送入跑马灯循环次数寄存器中和计数器计数值寄存器中,转向关门子程序,启动跑马灯子程序和计数器子程序,运行到目的层,再扫描键盘。三、元件功能与电路设计3.1元件功能介绍: 1 8255A的主要功能:可编程外设接口芯片可由程序改变其功能,通用性强、使用灵活。通过8255A,CPU可直接同外设相连接,其负责CPU和外设之间的数据传送。8255管脚图:1 40 2 39 3 38 4 37 5 36 6 35 7 34 8 33 9 32 10 8255A 31 11 30 12 29 13 28 14 27 15 26 16 25 1

8、7 24 18 23 19 22 20 21 2121 PA3PA4PA2PA3PA1PA2PA0PA1RDWRCS RESETGND D0 A1 D1A0 D2PC7 D3PC6 D4PC5 D5PC4 D6PC3 D7PC2 VCCPC1 PB7PC0 PB6PB0 PB5PB1PB4PB2 PB38255的内部结构如下图:8255通道介绍:8255A有3个8位数据通道A、B、C,这3个通道在功能上各有特点,都可编程设置为输入或输出。 通道A具有一个8位数据输入锁存器和一个8位数据输出锁存器/缓冲器用来传送数据。作输入端口或输出 端口时数据均受到锁存。 通道B具有一个8位数据输入缓冲器和一

9、个8 位数据输出锁存器/缓冲器,也用来传送数据。作输入端口时 不会对数据进行锁存,而用作输出端口时数据受到锁存。 通道C具有一个8位数据输入缓冲器和一个8位数据输出锁存器/缓冲器。一般作为控制或状态信息端口, 可分成两个4位端口(高位口和低位口),可按位控制,分别和A 通道B通道配合使用,用作输出控制信号和输入状 态信号。当CPU与外设连接不需要联络控制线时,C通道可以和A、B通道一样作为输入或输出的数据通道8255的工作方式介绍:8255有三种工作方式,在对8255进行初始化编程时,应向控制字寄存器写入方式选择控制字,用来规定8255A各端口的工作方式。这3种基本工作方式是:方式0基本输入输

10、出方式;方式1选通输入输出方式;方式2双向总线I/O方式。通过用输出指令对8255的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作。其中,端口A可工作于三种工作方式中的任一种;端口B只能工作于方式0或1,而不能工作于方式2;端口C常被分成两个4位的端口,除了用作输入输出端口外,还能用来配合A口和B口的工作,为这两个端口的输入输出操作提供联络信号。方式选择控制字的格式如图:本实验中只用到了方式0,现只对方式0进行简要介绍:方式0是一种基本输入或输出方式,该方式适合于通信双方不需要联络信号(应答信号)的简 单输入/输出场合,CPU可以随时用输入/输出指令对指定端口进行

11、读写操作。该方式的特点是:使8255A分成彼此独立的两8位端口(A口,B口)和两个4位端口(C口高4位和低4位),4个端口的输入 /输出可有16种不同的组态,可适用于各种不同的应用场合。方式0规定输出有无锁存能力,而输入数据不被锁存。方式0是单向的I/O,即一次初始化指定了输入或输出,则不能改变;若改变,则须重新初始化。不能 指定同一端口同时既作输入又作输出。这种方式下,无固定的I/O联络信号,联络信号线可由用户自行安排。这种方式只能用于无条件传送和 查询传送,不能实现中断传送。 在本实验中,用到两个8255。在键盘控制数码管子程序中,8255的地址为300303H。我们将8255的A口的三位

12、PA0-PA2输出口连接键盘三行,输出;B口8位输出连接数码管;C口低四位接键盘列线,输入;C口其他三个接口PC4-PC6接键盘行线;各数据口均工作于方式0,因此在初始化编程时,则初始化程序为:MOV AL,1001001BMOV DX,303HOUT DX,AL 在8255控制跑马灯子程序中,8255的地址为310313H。B口接4个LED灯,输出,表示电梯目前所到楼层。A口和C口不接。各数据口均工作于方式0,则初始化程序可为:MOV AL,10010000BMOV DX,313HOUT DX,AL2 8253的主要功能:可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,设定后与CP

13、U并行工作,不占用CPU的时间。8253管脚图:8253的内部结构如下图:8253计数器介绍:8253共有三个计数器,每个计数器是一个16位减1计数器,可接收计数值寄存器预置的初值,三个计数器的内部结构是相同的,它们的操作各自完全独立。每个计数器都可对其CLK输入端输入的脉冲按照二进制或二十进制从预置初值开始减1计数。当计数器减到 0时,从OUT输出端输出一个脉冲信号。当CLK端输入周期恒定的脉冲时,计数器就完成了定时功能。计数的开始和整个计数过程,计数器可以受GATE输入的门控信号控制。与外界相连的计数器输入输出以及门控信号之间的关系取决于该计数器的工作方式。计数器的初值必须在计数之前由CP

14、U用输出指令预置,在计数过程中,CPU能随时用输入指令读入计数器的当前计数值,而不影响计数器的计数。8253的6种工作方式介绍:方式0计数结束中断方式;方式1可编程单稳态输出方式;方式2比率发生器;方式3方波发生器;方式4软件触发选通;方式5硬件触发选通。 本实验中,我们使8253通道0工作于方式2,通道1工作在方式0。方式0的特点是:一次性计数。方式2的特点为:频率发生器。0端口的输入CLOCK0接1MHZ的脉冲。0端口的输出OUT0接到1端口的输入CLOCK1。0端口和1端口的GATE0和GATE1端口一直接高电平+5V。输出端口OUT1开始输出高电平,进入计数状态输出低电平,计数结束时又

15、输出高电平。CPU通过读取这一变化脉冲来判断计数结束。赋值8253的地址为308H30BH,电梯上升一层楼所需时间为2秒,则初始化程序为: MOV AL,00110001B MOV DX,30BH OUT DX,AL /0通道 MOV AL,00H MOV DX,308H OUT DX,AL MOV AL,10H OUT DX,AL MOV AL,01110001B /1通道 MOV DX,30BH OUT DX,AL MOV AL,00H MOV DX,309H OUT DX,AL MOV AL,20H OUT DX,AL 3 七段LED显示器:七段LED显示器由七个发光段构成,每段均是一个

16、LED二极管。这7个发光段分别称为a,b,c,d,e,f,和g。在静态显示方式下,每一位显示器的字段控制线是独立的。当显示一个数字时,该位的各字段线和字位线的电平不变,也就是各字段的亮灭状态不变。通过控制不同段的点亮和熄灭,可显示16进制数字09和A,B,C,D,E,F也能显示H, L,P,q等字符。 a DPg ff begd c阴极becadDP 共阴极LED 典型的七段LED本实验中,数码管表示由键盘选中的目的楼层。a,b,c,d,e,f,和g口分别接到8255的PB0PB6。DP口表示小数点位,接到PB7。我们选用第一个数码管,所以片选端口P1接到高电平+5V。由于不使用小数点,所以D

17、P端口一直接高电平。所用到的数字显示方式如下: 1: 10011111 ,由b、c管点亮表示; 2: 00100101 ,由a、b、g、e、d管点亮表示; 3: 00001101 ,由a 、b、g、c、d管点亮表示; 4: 10011001 ,由f、g、b、c管点亮表示4 键盘介绍:41按键操作存在的问题-键的抖动 键在电路中的连接如图4.1键盘控制数码管电路图。当操作键时,其一队触点闭合或断开,引起A点电压的变化。A点电压就用来向计算机输入键的通断状态。由于机械触点的弹性作用,触点在闭合和断开瞬间的电接触情况不稳定,造成了电压信号的抖动现象。去抖动的方法有硬件和软件两种。硬件去抖动和软件去抖

18、动。4.1.1硬件消除抖动4.1.2软件消除抖动采用软件去抖动的方法是在8255检测到有键按下的时候执行一个1020ms的延时程序后,再次检查该键电平是否仍保持闭合状态。如果保持闭合状态,否则从头检测。这样就能消除键的抖动影响。4.2扫描法检测键盘有键被按下时,读入行或者列值,则为0值的行列交叉点的键便是被按下的键。各键的对应关系如下:键1:00111110 键2:00111101键3:00111011键4:00110111键5:01011110键6:01011101键7:01011011键8:01010111键9:01101110键10:01101101键11:01101011键12:011

19、00111键盘格式:FEDCBA98765432104*4 键盘本实验只用到3*4 十二个键,选用0B三排。03表示所选的目的楼层14层,供进入电梯时选择所要到达的楼层。74分别表示无意义、三层上、二层上、一层上B8分别表示四层下、三层下、二层下、无意义 BA9876543210各键功能及意义: 键 号 8 9 A B 功 能 一楼上 二楼上 三楼上四楼上(无效) 键 号 4 5 6 7 功 能一楼下(无效) 二楼下 三楼下 四楼下 键 号 0 1 2 3 功 能 一楼 二楼 三楼 四楼5LED跑马灯 本实验用到四个共阳极发光二极管,分别连到8255的B端口:PB0PB3(小灯从右往左依次接到

20、PB0-PB3)。PB0PB3分别表示14层楼。跑马灯由右往左表示上搂,由左往右表示下楼。跑马灯间隔(即每上一层楼所需要的时间)为2秒,由8253工作于方式0一次性倒计时实现。四、硬件原理图4.1键盘控制数码管电路图:A765191011184.2跑马灯电路图PB0PB1PB2PB3 8255A高电平LED灯+5V1MHZGATE0GATE1CLK0OUT0CLK1OUT18253五、软件主要模块流程图51总体流程图初始楼层:1层扫描键盘第二行上行?扫描键盘第一行暂存目的楼层是否跑马灯子程序到达目的楼层保存当前跑马灯状态和当前楼层扫描键盘第二、三行,保存乘客所在楼层,决定跑马灯方向5.2键盘扫

21、描流程图:所有键松开?延迟是否所有键按下?延迟消抖动确认有键按下编码是是否否是否5.3跑马灯流程图:初始化CL=0FEH左移 ?左移一位右移一位CX=0 ?CX=0 ?停止(保持灯的状态) YN NYYN六、程序清单STACK SEGMENT DW 100 DUP(?)TOP_STACK LABEL WORDSTACK ENDSDATA SEGMENT; 1 2 3 4TABLE1 DB 7BH,7DH,7EH ,0B7H ;键盘扫描码表TABLE2 DB 06H,5BH,4FH,66H ;七段数码管码表DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAS

22、TART:MOV AX,STACK MOV SS,AX LEA SP,TOP_STACK MOV AX,DATA MOV DS,AX;初始化8255:A口输出,B口输出,C口输入MOV DX,303H ;指向控制口 MOV AL,89H ;控制字 OUT DX,AL;向所有行送低电平(即零) MOV DX,300H ;A口 MOV AL,00H OUT DX,AL ;向A口各行输零;读取列,即C口状态,看是否所有键已经松开 MOV DX,302H ;指向C口WAIT_OPEN:IN AL,DX ;键盘状态读入C口 AND AL,0FH ;查低四位(列值) CMP AL,0FH ;是否都为1(各

23、键松开)? JNE WAIT_OPEN ;否,继续查,等待松开;各键已经松开,再查列是否有0,即是否有键按下WAIT_PRES:IN AL,DX ;键盘状态读入C口 AND AL,0FH ;查低四位 CMP AL,0FH ;是否有键按下 JE WAIT_PRES ;无,等待;有键按下,延时20ms,消除抖动 MOV CX,16EAHDELAY:LOOP DELAY ;延时20ms;再查列,看键是否仍被压着 IN AL,DX AND AL,0FH CMP AL,0FH JE WAIT_PRES ;已松开,转出等待压键被压着;键仍被被压着MOV AL,0FEH ;使D1=0 ; 扫描二、三行,确定

24、方向信号MOV CL,AL ;CL=1111 1101B P1: MOV DX,300H ;A口 OUT DX,AL ;向第二行行输出低电平扫描到上信号 MOV DX,302H ;C口 IN AL,DX ;读C口状态 AND AL,0FH ;只截取列值 CMP AL,0FH ;是否为1? JNE ENCODE ;否,转去编码;向下一行输出低电平,扫描下一行,确定电梯运行方向 ROL CL,01 ;全为1,向第三行送低电平扫描到下信号 MOV AL,CL JMP P1 ;查看下一行D,:;向所有行送低电平(即零) MOV DX,300H ;A口 MOV AL,00H OUT DX,AL ;向A口

25、各行输零;读取列,即C口状态,看是否所有键已经松开 MOV DX,302H ;指向C口WAIT_OPEN1:IN AL,DX ;键盘状态读入C口 AND AL,0FH ;查低四位(列值) CMP AL,0FH ;是否都为1(各键松开)? JNE WAIT_OPEN1 ;否,继续查,等待松开;各键已经松开,再查列是否有0,即是否有键按下WAIT_PRES1:IN AL,DX ;键盘状态读入C口 AND AL,0FH ;查低四位 CMP AL,0FH ;是否有键按下 JE WAIT_PRES1 ;无,等待;有键按下,延时20ms,消除抖动 MOV CX,16EAHDELAY1:LOOP DELAY

26、1 ;延时20ms;再查列,看键是否仍被压着 IN AL,DX AND AL,0FH CMP AL,0FH JE WAIT_PRES1 ;已松开,转出等待压键被压着;键仍被被压着 MOV AL,0FEH ;先使D0=0 MOV CL,AL ;CL=1111 1110B MOV DX,300H ;A口 OUT DX,AL ;向第一行输出低电平 MOV DX,302H ;C口 IN AL,DX ;读C口状态 AND AL,0FH ;只截取列值 CMP AL,0FH ;是否为1? JNE ENCODE ;否,转去编码 MOV DI,OFFSET TABLE2 ;取数据段2的偏移地址放于DI T1:

27、CMP BX,DI ;比较键盘有效值地址偏移量和DI JNZ T2 ;不等,转向DELAY2 MOV AX,DI ;相等,将偏移地址DI对应的值放入AX MOV DX,301H ;指向B口OUT DX,AX ;将DI偏移地址的数据通过B口输出 T2:INC DI TEST DI,04H JZ START JMP T1 MOV DL,BX,SI,D,:;向所有行送低电平(即零) MOV DX,300H ;A口 MOV AL,00H OUT DX,AL ;向A口各行输零;读取列,即C口状态,看是否所有键已经松开 MOV DX,302H ;指向C口WAIT_OPEN2:IN AL,DX ;键盘状态读

28、入C口 AND AL,0FH ;查低四位(列值) CMP AL,0FH ;是否都为1(各键松开)? JNE WAIT_OPEN2 ;否,继续查,等待松开;各键已经松开,再查列是否有0,即是否有键按下WAIT_PRES2:IN AL,DX ;键盘状态读入C口 AND AL,0FH ;查低四位 CMP AL,0FH ;是否有键按下 JE WAIT_PRES2 ;无,等待;有键按下,延时20ms,消除抖动 MOV CX,16EAHDELAY2:LOOP DELAY2 ;延时20ms;再查列,看键是否仍被压着 IN AL,DX AND AL,0FH CMP AL,0FH JE WAIT_PRES2 ;

29、已松开,转出等待压键被压着;键仍被被压着MOV AL,0FEH ;使D1=0 ; 扫描二、三行,确定方向信号MOV CL,AL ;CL=1111 1101B P2: MOV DX,300H ;A口 OUT DX,AL ;向第二行行输出低电平扫描到上信号 MOV DX,302H ;C口 IN AL,DX ;读C口状态 AND AL,0FH ;只截取列值 CMP AL,0FH ;是否为1? JNE ENCODE ;否,转去编码;向下一行输出低电平,扫描下一行,确定电梯运行方向 ROL CL,01 ;全为1,向第三行送低电平扫描到下信号 MOV AL,CL JMP P2 ;查看下一行 MOV DL,

30、BX,SI,D,;向所有行送低电平(即零) MOV DX,300H ;A口 MOV AL,00H OUT DX,AL ;向A口各行输零;读取列,即C口状态,看是否所有键已经松开 MOV DX,302H ;指向C口WAIT_OPEN3:IN AL,DX ;键盘状态读入C口 AND AL,0FH ;查低四位(列值) CMP AL,0FH ;是否都为1(各键松开)? JNE WAIT_OPEN3 ;否,继续查,等待松开;各键已经松开,再查列是否有0,即是否有键按下WAIT_PRES3:IN AL,DX ;键盘状态读入C口 AND AL,0FH ;查低四位 CMP AL,0FH ;是否有键按下 JE

31、WAIT_PRES3 ;无,等待;有键按下,延时20ms,消除抖动 MOV CX,16EAHDELAY3:LOOP DELAY3 ;延时20ms;再查列,看键是否仍被压着 IN AL,DX AND AL,0FH CMP AL,0FH JE WAIT_PRES3 ;已松开,转出等待压键被压着;键仍被被压着MOV AL,0FEH ;先使D0=0 MOV CL,AL ;CL=1111 1110B MOV DX,300H ;A口 OUT DX,AL ;向第一行输出低电平 MOV DX,302H ;C口 IN AL,DX ;读C口状态 AND AL,0FH ;只截取列值 CMP AL,0FH ;是否为1? JNE ENCODE ;否,转去编码 MOV DI,OFFSET TABLE2 ;取数据段2的偏移地址放于DI T3: CMP BX,DI ;比较键盘有效值地址偏移量和DI JNZ T 4 ;不等,转向DELAY2 MOV AX,DI ;相等,将偏移地址DI对应的值放入AX MOV DX,301H ;指向B口OUT DX,AX ;将DI偏移地址的数据通过B口输出 T4 :INC DI TEST DI,04H JZ START JMP T3 MOV DL,BX ,D,D,:,SI,DSI,D,SI,:,D,D,:,SI,D,D,SI,:,D,D,:,;下降,右移,SI,DSI,D,SI,:

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号