模拟电梯控制系统-微机原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《微机应用系统设计》课程设计报告

题目:基于数码管的电梯显示系统

专业班级:电子信息科学与技术12101班

设计学生:

指导教师:

完成时间:2014年6 月23 日

物理与电子科学学院

设计思路1.键盘扫描程序

采用的是直接取值法,PB口有8个口,分别对应8个不同楼层,当有任一键按下,就可以取到对应的值,并保存到LDKEY1中。

2.LED灯显示程序

本程序用到了两个LED灯,分别是上升灯和下降灯,通过PC口高半部分进行输出控制,通过程序向其输出高电平即可发亮。

3.喇叭发声部分

先初始化8253,向其写入计数值,然后向PC6口输出高电平,经过非门后,控制三态门,使喇叭发声

4.电梯调度算法

在设计时将电梯一次从下到上视为一次运行(注意不一定从底层到顶层),同理,电梯一次从上到下也视为一次运行(注意不一定从顶层到底层)。当电梯向上运行时:通过LDKEY变量值自增调用显示子程序来演示电梯上升过程。当电梯向下运行时:通过LDKEY变量值自减调用显示子程序来演示电梯下降过程。

5.数码管显示

程序通过LDKEY的值取到数据段的值,向PA口输出相应的显示码(LDKEY的值

围为1—8)。

系统设计原理图

程序流程图

源程序:

DATA SEGMENT

SEGCOD DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH

LDKEY DW ? ;保存的楼层

LDKEY1 DW ? ;取到的楼层

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE

ORG 100H

START: MOV AX,DATA

MOV DS,AX

MOV AX,0

MOV LDKEY,AX ;将变量的值赋值为0

;初始化8255,

MOV DX,0206H ;8255控制口地址

MOV AL,83H ;A口作为输出,B口作为输入,C口低4位作为输入,高4

位作为输出

OUT DX,AL

;初始化8253

MOV DX,0406H ;初始化8253工作方式

MOV AL,36H ;计数器0,方式3

OUT DX,AL

MOV CX,0

MOV DX,0400H ;装入计数初值

MOV AL,7CH ;37500分频

OUT DX,AL

MOV AL,92H

OUT DX,AL

;楼层处理部分

XU: CALL KEY ;调用扫描按键

GO: MOV DX,0204h

IN AL,DX

TEST AL,1

JNZ GO ;等待按下OK键

MOV AX,LDKEY1

CMP AX,LDKEY

JB JIAN ;取到的楼层比目前楼层低

JMP JIA

;上升处理

JIA: CMP AX,LDKEY

JE XU ;按键与原来值相等,则继续扫描

MOV CX,10H

CALL DENG ;点亮上升灯

CALL DELAY

MOV AX,LDKEY1

JIAE: MOV CX,LDKEY ;LDKEY加1 ADD CX,1

MOV LDKEY,CX

CALL DISP

CALL DELAY

CMP AX,LDKEY

JNZ JIAE

CALL SPEAK

JMP XU

;下降处理

JIAN: MOV CX,20H

CALL DENG ;点亮下降灯

CALL DELAY

MOV AX,LDKEY1

JIANE: MOV CX,LDKEY ;LDKEY减1 SUB CX,1

MOV LDKEY,CX

CALL DISP

CALL DELAY

CMP AX,LDKEY

JNZ JIANE

CALL SPEAK

JMP XU

;发声子程序

SPEAK: MOV DX,0204H

MOV AL,40H

OUT DX,AL

CALL DELAY

MOV DX,0204H ;灯灭部分

MOV AL,0H

OUT DX,AL

RET

;灯显示

DENG: MOV DX,0204H ;PC口地址

MOV AX,CX

OUT DX,AL

RET

;数码管显示

DISP: MOV BX,OFFSET SEGCOD

ADD BX,LDKEY

MOV AL,[BX]

MOV DX,0200H ;向端口A输出,使数码管显示

OUT DX,AL

SUB BX,LDKEY ;将BX值变为原来值

MOV AX,LDKEY1

RET

;按键扫描

KEY: MOV DX,0202H

IN AL,DX

CMP AL,0FFH

JZ KEY ;等待按键按下

NOT AL ;将键值取反

MOV BL,1

MOV CX,8

JIXUY: SHR AL,1 ;判断按键值

JC FOUND

INC BL

JMP JIXUY

FOUND: MOV BH,0

MOV LDKEY1,BX

RET

;延迟子程序

DELAY: MOV CX,0FFFFH

DELAY1: NOP

相关文档
最新文档