资源描述
课 程 设 计 报 告
课程设计名称:微机系统综合课程设计
课程设计题目:模拟饮料装配线
院(系):计算机学院
专 业:计算机科学与技术
班 级:
学 号:
姓 名:
指导教师:
课程设计报告
目 录
第1章 总体设计方案 1
1.1设计需求 1
1.2设计原理 1
1.2.1 提出方案 1
1.2.2 方案论证 2
1.3 设计环境 3
第2章 详细设计方案 4
2.1硬件设计 4
2.2软件设计 4
2.2.1饮料装配线主程序 5
2.2.2软件延时程序 6
2.2.3满瓶数量改变程序 7
2.2.3 空瓶数量改变程序 7
2.2.4装配过程显示程序 8
第3章 结果测试及分析 9
3.1 结果测试 9
3.2 结果分析 10
参考文献 11
附 录(程序清单) 12
-11-
第1章 总体设计方案
第1章 总体设计方案
1.1设计需求
根据流水线作业原理,模拟饮料装配过程。具体内容如下:
1. 涉及饮料容积的显示方式,有500ml,1L,用键盘设置装配的容量和数量,并设计如何用数码管表示空状态和满状态;
2. 在数码管上用循环(从左到右或相反方向均可)表示流水作业,每次装满一个,使其右侧的圆点变量来标示,同时累计装配数量加1;
3. 用十进制显示装配总数,要完整演示整个过程。
1.2设计原理
应用可编程键盘/显示接口芯片8279与可编程并行接口芯片8255A。通过使用8279,在数码管上显示预设置的容量,在键盘上输入要求的饮料瓶数量,当点击完后,程序开始运行。1L的和500ml的容量瓶可以输入不同的装瓶数量。在装瓶的过程中,数码管显示位开始从1加到8,同步进行的是通过使用8255A的8个发光二极管依次变亮,当装满后,发光二极管全亮,数码管右侧的圆点变亮,相应调用延时程序。
容量分别为1L和500ml的饮料瓶顺序进行装瓶,首先进行是1L的,全部装完后,在从键盘上输入500ml的装瓶数量,最后显示的是空瓶和满瓶的数量。
再将数码管及发光二极管初始化,循环进行装配工作,最终达到工作需求。
1.2.1 提出方案
可编程键盘/显示接口芯片8279控制数码管的亮灭,数码管的低四位用于表示容量为1L的装配过程,低四位中的最高位数码管代表容量,标示为1;第二位代表容量1L的空瓶数量,初始化标示为5瓶;第三位代表满瓶的数量,初始化为0瓶,需要操作者在键盘上输入要求输入的装瓶数量,此时还没开始进行装配。
最低位代表的是每一瓶饮料的装瓶过程,首先初始化为灭,当开始装配时,数码管从1开始依次变化到8。通过使用可编程并行接口芯片8255A的PC口输出,接到发光二极管上。在每次变化的过程中,都需要发光二极管依次置亮。当装满一瓶时,进行提示装满,效果是发光二极管都置亮,数码管演示装瓶过程位的右侧圆点亮,证明装满一瓶;
在装完一瓶后,要将发光二极管都置灭,同时数码管装瓶过程位右侧的圆点置灭,这是为下一瓶饮料的装配做准备。
每次装完一瓶,满瓶数量要进行加1操作,空瓶数量要减1操作,同时检查是否装完,没装完则继续进行装配过程,装完则停止。
1.2.2 方案论证
程序并结合芯片进行论证。
程序开始部分,首先是对芯片的初始化,输入命令控制字。简单介绍可编程键盘/显示接口芯片8279;8279是可编程键盘/显示接口芯片。它的功能主要包括键盘输入和显示控制。它的功能主要包括键盘输入和显示控制部分,其中键盘部分提供扫描功能。显示部分则是提供扫描方式的显示接口,可与八段数码管连接构成。
初始化代码:其中Z8279是控制端口
MOV DX,Z8279
MOV AL,00 ;左边输入,八位显示外部译码八位显示
OUT DX,AL
MOV AL,38H ;扫描频率
OUT DX,AL
这里简单介绍可编程并行接口芯片8255A:8255A是可编程并行输入输出接口芯片,具有三个8位并行端口,用于输出给定信号。
初始化命令字:
MOV DX,Z8255
MOV AL,80H
OUT DX,AL ;初始化8255
其中Z8255是控制端口,80H是命令字,PA、PB、PC口都是输出,这里我们只用PC口作为输出,连接8个发光二极管。
然后调用数码管的子程序BEGIN_,初始化容量为1L的空瓶数量为5瓶,满瓶数量为0瓶(需要键盘动态输入),容量标示为1L。初始化容量为500ml的空瓶数量为5瓶,满瓶数量为0瓶(需要键盘动态输入),容量标示为500ml。用寄存器AH来存储当前的满瓶数量,寄存器CX来存储当前的空瓶数量。
在装配过程中,装配显示位数码管从1变化到8,相应的发光二极管从第一个依次单独亮到第8个,但装满一瓶后,发光二极管全亮,数码管装配位右侧的圆点置亮,证明已经装完一瓶。
此时改变空瓶和满瓶的数量,满瓶数量加1,调用ADD_子程序;空瓶数量减1,调用DEC_子程序。判断装配是否完成,如果没有完成,则继续装配,否则装配结束。
在数码管和发光二极管显示时,都需要调用延时子程序DELAY。
经过认真仔细论证,证明所提出的方案切实可行。
1.3 设计环境
硬件环境:AEDK实验箱
软件环境:LCT88EA应用软件、Win2000、PC机
沈阳航空工业学院课程设计报告 第2章 详细设计方案
第2章 详细设计方案
2.1硬件设计
本设计中用到的硬件有AEDK实验箱, 8279芯片、8255A芯片、小键盘、8个八段数码管和8个发光二极管。
8279芯片的片选CS79连至译码处210-217H。
8279芯片的控制端口接到译码处212H处,数据端口接到译码处210H。
8255A芯片的片选CS55连至译码处200-207H,控制端口接到译码处203H,因为这里没有用到PA口和PB口,所以不需要连接。8255A的PC口接到译码处202H,用于连接发光二极管。
如图2.1所示。
图2..1 模拟饮料装配线连线图
2.2软件设计
首先对芯片进行初始化,对8279和8255A的命令字和端口译码处进行初始化。然后将8279的FIFO寄存器置零,判断是否按键,此时键入的是满瓶的数量,则程序开始运行。
2.2.1饮料装配线主程序
主程序首先对8279和8255A进行初始化。调用数码管初始化子程序BEGIN_,置空FIFO寄存器。循环检测键盘是否有键入,空则等待,表示装配工作未启动。键入容量为1L的装瓶数量,工作开始。开始装瓶,调用装配过程子程序LED8255,装满一瓶后,满瓶位加1,调用子程序ADD_,空瓶位减1,调用子程序DEC_,然后判断装配工作是否结束,没有则继续装配,否则工作结束。
在装配过程中,数码管和发光二极管要相应的变亮,此时要调用延时子程序DELAY,使能更好演示装瓶过程。
当1L的装完后,在键入容量为500ml的装瓶数量,同上述效果运行程序。
饮料装配线主程序如图2.2:
。
图2.2 饮料装配线主程序流程图
2.2.2软件延时程序
用寄存器CX来存储用来循环的值(十六进制)0FFFFH,因为在此之前,在寄存器CX中已经送入了用来存储当前饮料瓶的空瓶数量,所以需要对此加以存储保护,即将寄存器CX压入栈中。
执行DEC CX语句,然后判断CX是否为0,如果不为0,则继续减,直到为0。因为在运行的过程中发现延时的时间比较短,不方便检查,达不到好的效果,所以在执行上述的语句后,接着执行几条NOP空指令语句,起到了延时的作用。
完成延时以后,要把栈中存储的当前空瓶数量值释放出来,执行POP CX语句。
软件延时程序流程图如图2.3所示。
图2.3 软件延时程序流程图
2.2.3满瓶数量改变程序
当装完一瓶饮料后,要将当前满瓶的数量加1。
满瓶数量改变程序流程图如图2.4所示。
图2.4 满瓶数量改变程序流程图
2.2.3 空瓶数量改变程序
当装完一瓶饮料后,要将当前空瓶的数量减1。
空瓶数量改变程序流程图如图2.5所示。
图2.5 空瓶数量改变程序流程图
2.2.4装配过程显示程序
在装瓶的过程中,数码管从1依次显示到8,相依的发光二极管在数码管每变化一次后置亮,当变化完后,发光二极管全部置亮,数码管右侧的圆点置亮,证明已经装完一瓶
显示程序如下:
LED8255: ;装瓶过程
MOV DX,D8279
MOV AL,1
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,0FEH
OUT DX,AL
以上只是演示数码管显示1,发光二极管第一个灯亮。
CALL DELAY
当到8时,发光二极管全为亮,程序如下:
MOV DX,C8255
MOV AL,00H
OUT DX,AL
CALL DELAY
RET
沈阳航空工业学院课程设计报告 第3章 结果测试及分析
第3章 结果测试及分析
3.1 结果测试
程序编译连接完成之后,对课程设计要求的各项内容进行测试,按饮料瓶装配线连线图连接好电路以后,把程序下载到机器中运行。
测试过程如下:
操作
显示装瓶过程
备注
数码管初始化
标示容量和满瓶数量
按键输入
数码管显示输入的值
此值标示要求装瓶数量
数码管显示“1”,发光二极管第二个灯亮
数码管显示“2”,发光二极管第三个灯亮
数码管显示“3”,发光二极管第四个灯亮
数码管显示“4”,发光二极管第五个灯亮
数码管显示“5”,发光二极管第六个灯亮
数码管显示“6”,发光二极管第七个灯亮
数码管显示“7”,发光二极管第八个灯亮
数码管显示“8”,发光二极管第八个灯亮
发光二极管8个灯全亮
数码管右侧圆点置亮
此时装完一瓶
数码管满瓶位显示加1
满瓶数量加1
数码管空瓶位显示减1
空瓶数量减1
发光二极管全都置灭
数码管当前亮的圆点置灭
进行下一瓶的装配
3.2 结果分析
按照课程设计的要求,装配线的各项功能基本得以实现。本设计中软件设计起到了主导作用,逻辑的清晰与否决定了设计的成败。硬件设计部分,8279A可编程键盘/显示器接口芯片尤为重要。
沈阳航空工业学院课程设计报告 参考文献
参考文献
[1] 龚尚福.微机原理与接口技术[M]. 西安:西安电子科技大学出版社,2003
[2] 王忠民.微型计算机原理[M]. 西安:西安电子科技大学出版社,2003
[3] 沈美明,温冬婵. IBM-PC汇编语言程序设计[M]. 北京:清华大学出版社,2001
[4] 郑初华.汇编语言、微机原理及接口技术[M].北京:电子工业出版社,2006
[5] 陆鑫.微机原理及接口技术[M].北京:机械工业出版社,2005
[6] 王晓军等. 微机原理与接口技术[M].北京:北京邮电大学出版社,2001
附 录(程序清单)
Z8279 EQU 212H ;8279控制端口
D8279 EQU 210H ;8279数据端口
Z8255 EQU 203H ;8255控制端口
C8255 EQU 202H ;8255 C数据端口
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
START:
MOV AX,CS
MOV DS,AX
MOV DX,Z8279
MOV AL,00h ;左边输入,八位显示外部译码八位显示
OUT DX,AL
MOV AL,38H ;扫描频率
OUT DX,AL
MOV DX,Z8255
MOV AL,80H
OUT DX,AL ;初始化8255
CALL BEGIN_ ;调用初始化子程序
;以上为初始化550,150
NOP
MOV DX,Z8279 ;置空FIFO寄存器
MOV AL,0C2H
OUT DX,AL
WAIIT:
NOP
MOV AX,0
IN AL,DX
MOV BL,AL
AND AL,80H
CMP AL,80H
JE WAIIT ;FIFO正在清除期间则跳转等待
MOV AL,BL
AND AL,0FH
CMP AL,00H
JE WAIIT ;无键按下则等待
MOV DX,Z8279
MOV AL,82H ;置 读FIFO RAM命令字
OUT DX,AL
MOV DX,D8279 ;读入FIFO RAM内容
IN AL,DX
MOV CL,AL
CMP CL,0
JZ T1
LEA BX,LED
XLAT
OUT DX,AL
MOV AH,0
MOV DX,Z8279
MOV AL,0C2H
OUT DX,AL
T2:
NOP
MOV DX,Z8279
MOV AL,80H
OUT DX,AL
CALL LED8255 ;调入发光二极管显示过程
MOV DX,D8279
MOV AL,80H
OUT DX,AL ;将圆点变亮
CALL DELAY
MOV DX,C8255
MOV AL,0FFH
OUT DX,AL ;发光二极管重新置灭
MOV DX,D8279
MOV AL,00H
OUT DX,AL ;圆点灭
MOV DX,Z8279
MOV AL,81H
OUT DX,AL
CALL ADD_ ;调用子程序,改变满瓶位
MOV DX,Z8279
MOV AL,82H
OUT DX,AL
CALL DEC_ ;调用子程序,改变空瓶位
CALL DELAY
MOV AL,CL
CMP AL,0 ;判断是否装完
JNZ T2
T1:
NOP
MOV DX,Z8279 ;置空FIFO寄存器
MOV AL,0C2H
OUT DX,AL
WAIITT:
NOP
MOV AX,0
IN AL,DX
MOV BL,AL
AND AL,80H
CMP AL,80H
JE WAIITT ;FIFO正在清除期间则跳转等待
MOV AL,BL
AND AL,0FH
CMP AL,00H
JE WAIITT ;无键按下则等待
MOV DX,Z8279
MOV AL,86H ;置 读FIFO RAM命令字
OUT DX,AL
MOV DX,D8279 ;读入FIFO RAM内容
IN AL,DX
MOV CL,AL
CMP CL,0
JZ T4
LEA BX,LED
XLAT
OUT DX,AL
MOV AH,0
MOV DX,Z8279
MOV AL,0C2H
OUT DX,AL
T3:
NOP
MOV DX,Z8279
MOV AL,84H
OUT DX,AL
CALL LED8255
MOV DX,D8279
MOV AL,80H
OUT DX,AL ;圆点亮
CALL DELAY
MOV DX,C8255
MOV AL,0FFH
OUT DX,AL ;重新将发光二极管置灭
MOV DX,D8279
MOV AL,00H
OUT DX,AL ;圆点灭,等待下一瓶的装入
MOV DX,Z8279
MOV AL,85H
OUT DX,AL ;写入控制位,满瓶加1
CALL ADD_
MOV DX,Z8279 ;写入控制位,空瓶减1
MOV AL,86H
OUT DX,AL
CALL DEC_
CALL DELAY
MOV AL,CL
CMP AL,0 ;判断是否装完
JNZ T3
T4:
CALL DELAY
MOV DX,Z8279
MOV AL,81H
OUT DX,AL
MOV DX,D8279
MOV AL,3FH
OUT DX,AL
MOV DX,Z8279
MOV AL,82H
OUT DX,AL
MOV DX,D8279
MOV AL,00H
OUT DX,AL
MOV DX,Z8279
MOV AL,85H
OUT DX,AL
MOV DX,D8279
MOV AL,3FH
OUT DX,AL
MOV DX,Z8279
MOV AL,86H
OUT DX,AL
MOV DX,D8279
MOV AL,00H
OUT DX,AL
MOV DX,Z8279
MOV AL,0C2H
OUT DX,AL
JMP WAIIT
HLT
BEGIN_:
MOV DX,D8279
MOV AL,00H
OUT DX,AL ;显示1L装瓶位,初始化为灭
MOV DX,D8279
MOV AL,3FH
OUT DX,AL
MOV DX,D8279
MOV AL,00H
OUT DX,AL
MOV DX,D8279
MOV AL,06H
OUT DX,AL
MOV DX,D8279
MOV AL,00H
OUT DX,AL ;显示500ml装瓶位,初始化为灭
MOV DX,D8279
MOV AL,3FH
OUT DX,AL ;500ml满瓶位,初始化为0个
MOV DX,D8279
MOV AL,00H
OUT DX,AL ;500ml空瓶数量位,初始化为5个
MOV DX,D8279
MOV AL,6DH
OUT DX,AL ;容量标示500ml
RET
ADD_: ;满瓶加1子程序
INC AH
MOV AL,AH
LEA BX,LED
XLAT
MOV DX,D8279
OUT DX,AL
RET
DEC_: ;空瓶减1子程序
DEC CL
MOV AL,CL
LEA BX,LED
XLAT
MOV DX,D8279
OUT DX,AL
RET
LED8255: ;装瓶过程
MOV DX,D8279
MOV AL,1
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,0FEH
OUT DX,AL
CALL DELAY
MOV DX,D8279
MOV AL,2
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,0FDH
OUT DX,AL
CALL DELAY
MOV DX,D8279
MOV AL,3
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,0FBH
OUT DX,AL
CALL DELAY
MOV DX,D8279
MOV AL,4
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,0F7H
OUT DX,AL
CALL DELAY
MOV DX,D8279
MOV AL,5
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,0EFH
OUT DX,AL
CALL DELAY
MOV DX,D8279
MOV AL,6
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,0DFH
OUT DX,AL
CALL DELAY
MOV DX,D8279
MOV AL,7
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,0BFH
OUT DX,AL
CALL DELAY
MOV DX,D8279
MOV AL,8
LEA BX,LED
XLAT
OUT DX,AL
MOV DX,C8255
MOV AL,7FH
OUT DX,AL
CALL DELAY
MOV DX,C8255
MOV AL,00H
OUT DX,AL
CALL DELAY
RET
DELAY: ;软件延时程序
PUSH CX
MOV CX,0FFFFH
BACK2:
DEC CX
JNZ BACK2
BACK1:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
LOOP BACK1
POP CX
RET
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H
DB 5EH,79H,71H
CODE ENDS
END START
课程设计总结:
通过本次的课程设计使我学到很多的知识与道理。本次课程设计是微机综合课程设计,所用到的是汇编语言,在开始之初,由于所学知识太少,对可设不知道如何下手,但是通过向老师、同学虚心请教,慢慢的去学习,去查找参考资料。最终开始独立的去学习。
在这段时间里,使我深切体会到,只有靠自己的努力,独立的完成所需要完成的学习任务才是最为重要的。要学会独立的去学习以前没有学到的知识,就是要培养那种自学的能力。
对于课程设计,以及以后的毕业设计,首先不要害怕他,要对自己充满信心,要有去完成它的毅力,而不是盲目的下载网上的资源,那样对自己没有什么提高,虽然自己写的不怎么好,但是那是自己努力完成的。
身为即将跨入大学四年级的我们,更应该感受到学习与工作的压力,但最为重要的是我们的动手能力与自学能力,我们从现在开始必须注重自己的这些方面,不断努力,不断提高,才是最为重要的
指导教师评语:
指导教师(签字): 年 月 日
课程设计成绩
展开阅读全文