微机系统综合课程设计.docx
- 文档编号:30279463
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:25
- 大小:154.55KB
微机系统综合课程设计.docx
《微机系统综合课程设计.docx》由会员分享,可在线阅读,更多相关《微机系统综合课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
微机系统综合课程设计
课程设计报告
课程设计名称:
微机系统综合课程设计
课程设计题目:
模拟洗衣机动作
院(系):
计算机学院
专业:
计算机科学与技术
班级:
14010101
学号:
姓名:
指导教师:
紫学博
完成日期:
2014.7.4
目录
第1章总体设计方案1
1.1课程设计的内容和要求1
1.1.1课程设计的内容1
1.1.2课程设计要求1
1.2设计原理1
1.3设计思路1
1.3.1提出方案2
1.3.2方案论证2
1.4实验环境2
第2章详细设计方案3
2.1硬件电路设计3
2.2主程序设计3
2.3功能模块的设计与实现5
2.3.1初始化8255和8279模块5
2.3.2进水子程序模块的设计与实现6
2.3.3正转子程序模块的设计与实现7
2.3.4延时函数delay8
第3章结果测试及分析9
3.1结果测试9
3.2结果分析9
参考文献10
附录12
第1章总体设计方案
1.1课程设计的内容和要求
此次课程设计的题目为模拟洗衣机动作。
包括模拟洗衣机的进水过程,模拟洗衣机滚筒的滚动过程,以及实现提示用户洗衣的开始和结束的功能。
1.1.1课程设计的内容
利用8255A及8279芯片模拟洗衣机动作。
在数码管上应该能够显示如下信息:
洗衣机的正转,反转,进水,出水,洗衣,清洗以及脱水等,洗衣工作结束给出明确提示,比如,8个数码管全部显示为8。
运行程序模拟以下过程:
1)进水-正转-延时-反转-延时-正转,循环3次以上出水;
2)正转-延时-结束;
1.1.2课程设计要求
1)独立完成课程设计任务;
2)通过老师当场验收;
3)交出完整的课程设计报告。
1.2设计原理
利用8255A及8279芯片,实现模拟洗衣机洗衣的运动过程。
用汇编语言编写模拟洗衣机程序,并结合AEDK实验箱控制并显示洗衣机的运行过程:
按0表示开始运行洗衣过程并开始进水,同时四个单色灯顺序点亮最后全部点亮,然后8个数码管全部显示为0表示进水结束;然后再按1表示洗衣过程开始进行,首先双色灯正转三次,然后反转三次,至此一个循环结束,再按照这个过程再进行三次,洗衣过程结束;接着四个单色灯顺序熄灭,最后全部熄灭表示洗衣机出水结束,此时双色灯正转三次表示对衣物进行脱水;最后8个数码管全部显示为8表示整个洗衣模拟过程结束。
1.3设计思路
利用LCA88ET应用软件编写汇编语言程序,并结合AEDK实验箱上的8255和8279芯片设计电路,实现模拟洗衣机运动过程(进水-正转-延时-反转-延时-正转等功能)。
1.3.1提出方案
利用8279芯片设置0为进水键,1为开始键;利用8255芯片控制双色彩灯模拟洗衣机的正转和反转,单色灯模拟实现进水脱水的过程,数码管显示八个0表示洗衣工作的开始,八个8表示洗衣机工作结束。
1.3.2方案论证
利用8279A芯片的键盘输入来实现洗衣机的进水、正反转(0键为开始进水,1键为滚筒开始旋转),用8279A的LED显示来实现告知用户洗衣机洗衣的开始和结束(显示八个0表示洗衣的开始,显示八个8表示洗衣的结束)。
利用8255A的B口作为输出来模拟洗衣机的进水过程(四个单色灯依次点亮,最后全部置亮),实现过程为:
首先将1000取反输出,点亮第一个灯,接着依次调用逻辑右移语句实现单色灯依次点亮,表示进水结束。
然后按1键,表示开始进行洗衣,利用8255A的A口作为输出来模拟洗衣机的正反转过程,同理首先置亮第一个灯然后依次调用逻辑右移语句,实现双色灯顺时针依次点亮。
调用loop语句使其循环三次,然后正转子程序调用反转子程序同理实现双色灯的三次逆时针循环点亮。
此时再调用loop语句使整个正反转过程执行三次,表示洗衣过程结束。
然后调用出水程序,与进水子程序同理。
最后调用正转子程序表示对衣物进行甩干。
最后八个数码管全部显示为8表示整个洗衣过程结束。
经实际连线操作,所得现象与预期的相一致,方案成功。
1.4实验环境
·硬件环境:
AEDK实验箱,PC机。
·软件环境:
LCA88ET应用软件。
第2章详细设计方案
2.1硬件电路设计
硬件电路包括8086与8255和8279两芯片连接构成,硬件电路连线图如图2.1所示。
图2.1硬件电路连线图
2.2主程序设计
程序首先要对8255和8279进行初始化,然后按下开始键0,洗衣机开始进水,接着按下开始洗衣键1,此时依次调用正转子程序、反转子程序、出水子程序、正转子程序,最后模拟洗衣机工作结束。
主程序流程图如图2.2所示。
图2.2主程序流程图
2.3功能模块的设计与实现
对8255A和8279芯片进行初始化后,利用8279芯片的键盘输入功能输入开始,利用8255A控制单色灯、双色灯分别显示洗衣机进水、正反转,利用数码管显示洗衣工作的开始和结束。
2.3.1初始化8255和8279模块
1、8255芯片是一种可编程的并行接口芯片,它有3个8位数据端口,既A口、B口、C口。
首先初始化8255,设置其工作方式,其A口、B口,C口的端口地址分别为200H、201H、202H,控制端口地址为203H。
从控制口203H输入控制字80H,表示A、B、C三个端口均可作为输出端口,本程序中采用A口和B口作为输出端口,利用8255A的B口作为输出来模拟洗衣机的进水过程(四个单色灯依次点亮,最后全部置亮),实现过程为:
首先将1000取反输出,点亮第一个灯,然后依次调用逻辑右移语句实现单色灯依次点亮,表示进水结束。
然后,利用8255A的A口作为输出来模拟洗衣机的正反转过程,同理首先置亮第一个灯然后依次调用逻辑右移语句,实现双色灯顺时针依次点亮。
2、8279芯片是一种通用的可编程序的键盘、显示接口器件,单片器件就能够实现键盘输入和显示控制两种功能。
首先初始化8279,设置其工作方式,奇地端口(212H):
输入的信息是命令,输出的信息是状态字;偶地址端口(210H):
输入和输出的信息是数据。
从奇地址端口212H输入控制字,00H表示8位字符显示,左端输入,编码扫描键盘,双键锁定。
38H表示时钟分频为24分频,0C2H用来置空FIFO存储器,0D0H用来清空显示RAM。
从奇地址端口212H读入状态字,与80H相测试检测显示RAM是否可用,与0FH相测试检测是否有键按下。
从偶地址端口210H读出数据,经查表便可将数据在LED数码管上显示出来。
LED数码管是共阴极的,使哪段亮加高电平即可。
本程序中采用8279A的LED显示来实现告知用户洗衣机洗衣的开始和结束(显示八个0表示洗衣的开始,显示八个8表示洗衣的结束),利用其键盘输入功能来实现洗衣机的进水、正反转(0键为开始进水,1键为滚筒开始旋转)。
2.3.2进水子程序模块的设计与实现
关于进水子程序,首先对CX赋值为4,AL中置入01111111B,对AL取非以后输出到201端口,此时第一个单色灯被置亮。
然后让CX自减,若不为0,则对AL取非后循环右移,再取非输出到201端口。
对AL重复这样的操作直至CX减为0,然后再将AL中置为00001111B,输出。
这样就实现了用单色灯模拟进水过程。
流程图如图2.3所示。
图2.3进水子程序流程图
2.3.3正转子程序模块的设计与实现
对于正转子程序,首先对CX赋值为3,接着对CX进行入栈保护,然后再对CX赋值为4,AL中置入01111111B,将AL赋值到CX,再让CX自减,若不为0,则对AL取非后循环右移,对AL重复这样的操作直至CX减为0;最后再对CX进行出栈保护,表示此过程循环执行3次。
正转子程序完成后继续调用反转子程序。
正转子程序功能实现如图2.4所示。
图2.4正转子程序流程图
注释:
出水子程序功能实现与入水子程序实现基本相仿。
反转子程序功能实现与正转子程序实现过程基本相仿,在报告中就不单列为一个程序模块。
2.3.4延时函数delay
延时函数的主要用途是在程序运行过程中相应地产生延时,增加程序的可读性,提高程序的执行性。
进入延时函数DELAY后,用寄存器CX来存储用来循环的值(十六进制)0FFFFH,因为在此之前,在寄存器CX中已经分别在低八位和高八位送入了用来存储当前饮料瓶的空瓶数量和满瓶数量,所以需要对此加以存储保护,即将寄存器CX压入栈中。
将CX进行自减,然后判断CX是否为0,如果不为0,则继续自减,直到为0。
因为在运行的过程中发现延时的时间比较短,不方便检查,达不到好的效果,所以在执行上述的语句后,接着执行几条NOP空指令语句,起到了延时的作用。
完成延时以后,要把栈中存储的当前空瓶数量值和满瓶数量值出栈。
延时函数DELAY的流程图如图2.5所示。
第3章结果测试及分析
3.1结果测试
程序编译成功后开始执行,按下开始键(0键)之后,洗衣机开始进水,四个单色灯依次点亮最后全部置亮表示进水结束,同时八个数码管全部显示为0,表示洗衣机开始工作。
此时按开始转动按键(1键),洗衣机滚筒开始正转,在试验箱上的现象是四个双色灯顺时针依次点亮,然后是依次逆时针依次点亮,如此循环三次,表示洗衣过程结束。
此时调用出水程序,现象为单色灯依次置灭,最后全部置灭,表示出水结束,随后执行正转程序,表示对衣物进行甩干,现象为双色灯顺时针依次点亮。
最后八个数码管全部显示为8,表示洗衣过程全部结束。
所得结果与预期的相一致。
3.2结果分析
对于上述的运行结果和操作过程,达到了课程设计任务书中的要求。
即本课设要求根据洗衣机原理模拟洗衣机洗衣过程,按下0键,程序执行开始功能。
数码管显示8个0,表示开始,进水灯亮。
当单色灯全亮,表示进水完毕。
按下1号键,洗衣机开始转动,正转3次,反转3次,循环3次自动出水;单色灯全灭,表示出水完毕;接着调用脱水程序,最后数码管显示8个8,洗衣机结束工作。
所得现象与预期的相一致,达到了课程设计的要求,实现了对洗衣机运作过程的模拟。
参考文献
[1]龚尚福.微机原理与接口技术[M].西安:
西安电子科技大学出版社,2003
[2]王中民.微型计算机原理[M].西安:
西安电子科技大学出版社,2003
[3]葛桂平.微机原理学习与实践指导[M].北京:
清华大学出版社,2010
[4]周杰英.微机原理、汇编语言与接口技术[M].北京:
人民邮电出版社,2011
[5]沈美明,温冬婵.IBM-PC汇编语言程序设计[M]北京:
清华大学出版社,2001
[6]张雪兰.汇编语言程序设计[M]北京:
清华大学出版社,2006
[7]马春燕.微机原理与接口技术:
基于32位机[M].北京:
电子工业出版社,2007
[8]马瑞芳.微机原理与接口技术要点[M].西安:
西安交通大学出版社,2006
[9]龚义建等.微机原理与接口技术导学[M].北京:
科学出版社,2006
[10]方立友.微机原理与汇编语言实用教程[M].北京:
清华大学出版社,2006
[11]朱定华.微机原理、汇编与接口学习指导[M].北京:
清华大学出版社,2006
[12]徐建平.微机原理与接口技术[M].北京:
航空工业出版社,2010
[13]郑初华.汇编语言、微机原理及接口技术[M].北京:
电子工业出版社,2006
附录
dsegsegment
Z8279EQU212H
D8279EQU210H
LEDMODEQU00;左边输入,八位显示外部译码八位显示
LEDFEQEQU38H;扫描频率
tabledb3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
dsegends
csegsegment
assumeds:
dseg,cs:
cseg
mainproc
movax,dseg
movds,ax
movdx,203h
moval,80h
outdx,al
movdx,200h
moval,0ffh
outdx,al;初始化8255
movdx,201h
moval,0ffh
outdx,al
movdx,212h
moval,00h
outdx,al
moval,38h
outdx,al;初始化8279
wait1:
movdx,212h
inal,dx
testal,80h
jnzwait1;8279是否忙
bb:
movdx,212h
inal,dx
testal,0fh
jzbb;是否有按键
movdx,210h
inal,dx
movah,al
cmpah,0
jnzbb;按键是否为零
calljjs
moval,0ffh
movdx,200h
outdx,al
PUSHCS
POPDS
MOVDX,Z8279
MOVAL,LEDMOD
OUTDX,AL
MOVAL,LEDFEQ
OUTDX,AL
MOVDX,D8279
MOVAL,3FH
OUTDX,AL
MOVDX,D8279
MOVAL,3FH
OUTDX,AL
MOVDX,D8279
MOVAL,3fH
OUTDX,AL
MOVDX,D8279
MOVAL,3FH
OUTDX,AL
MOVDX,D8279
MOVAL,3fH
OUTDX,AL
MOVDX,D8279
MOVAL,3fH
OUTDX,AL
MOVDX,D8279
MOVAL,3fH
OUTDX,AL
MOVDX,D8279
MOVAL,3fH
OUTDX,AL
movdx,201h
moval,00h
outdx,al
bb1:
movdx,212h
inal,dx
testal,0fh
jzbb1;是否有按键
movdx,210h
inal,dx
movah,al
cmpah,1;按1键开始转
jnzbb1
callzxh
ret
mainendp
zxhproc
movcx,3
aa:
pushax
pushbx
pushcx
pushdx
movcx,3
tt1:
moval,8
notal
calldelay
movdx,200h
outdx,al
pushcx
movcx,4
tl:
notal
shral,1
notal
calldelay
movdx,200h
outdx,al
looptl
popcx
looptt1
exit1:
movdx,200h
moval,0ffh
outdx,al
popdx
popcx
popbx
popax
callyxh
ret
zxhendp
yxhproc
pushax
pushbx
pushcx
pushdx
movcx,3
tt2:
moval,10h
notal
calldelay
movdx,200h
outdx,al
pushcx
movcx,4
tr:
shlal,1
calldelay
movdx,200h
outdx,al
looptr
popcx
looptt2
exit2:
movdx,200h
moval,0ffh
outdx,al
popdx
popcx
popbx
popax
deccx
jnzaa
calljjs
movcx,3
zz:
pushax
pushbx
pushcx
pushdx
movcx,3
ww1:
moval,8
notal
calldelay
movdx,200h
outdx,al
pushcx
movcx,4
yl:
notal
shral,1
notal
calldelay
movdx,200h
outdx,al
loopyl
popcx
loopww1
exit3:
movdx,200h
moval,0ffh
outdx,al
popdx
popcx
popbx
popax
PUSHCS
POPDS
MOVDX,Z8279
MOVAL,LEDMOD
OUTDX,AL
MOVAL,LEDFEQ
OUTDX,AL
MOVDX,D8279
MOVAL,7FH
OUTDX,AL
MOVDX,D8279
MOVAL,7FH;显示88888888
OUTDX,AL
MOVDX,D8279
MOVAL,7fH
OUTDX,AL
MOVDX,D8279
MOVAL,7FH
OUTDX,AL
MOVDX,D8279
MOVAL,7fH
OUTDX,AL
MOVDX,D8279
MOVAL,7fH
OUTDX,AL
MOVDX,D8279
MOVAL,7fH
OUTDX,AL
MOVDX,D8279
MOVAL,7fH
OUTDX,AL
ret
yxhendp;反转子程序
ee:
pushax
pushbx
pushcx
pushdx
movcx,1
rr1:
moval,8
notal
calldelay
movdx,201h
outdx,al
pushcx
movcx,4
ul:
notal
shral,1
notal
calldelayl
loopul
popcx
looprr1
exit4:
movdx,201h
moval,0ffh
outdx,al
popdx
popcx
popbx
popax
ret
jjsendp;进出水程序
delay:
pushcx
movcx,0ffefh
t1:
loopt1
popcx
ret
csegends
endmain
课程设计总结:
经过这次课程设计,通过自己动手操作,我对8255A、8279等芯片有了更进一步的认识,这种认识是区别于书本上的认识,让我能把书本上学到的东西运用的实际应用上。
在本次课程设计的设计过程中,由于我对8279比较陌生,之前都没接触过,所以刚开始时不知如何下手。
通过去图书馆查阅资料、网上参考了一些资料以及请教同学后,我对8255A和8279有了进一步的了解,对整个题目也有了更深刻的理解,本次程序的设计基本完成了任务书的要求。
这次课设遇到了不少问题,在解决问题的过程中,自己处理问题的能力得到很大的提高,同时也认识到自己的基础知识还不够扎实,所以我以后要更加努力的学习专业知识技能。
最后,还要感谢老师和同学们在课设过程中对我的指导和帮助,如果没有他们的帮助,也许我的这次课设并不会这么顺利的完成。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 系统 综合 课程设计