计算机原理及应用课设.docx
《计算机原理及应用课设.docx》由会员分享,可在线阅读,更多相关《计算机原理及应用课设.docx(16页珍藏版)》请在冰豆网上搜索。
![计算机原理及应用课设.docx](https://file1.bdocx.com/fileroot1/2023-1/10/a3ca0481-5db1-41bd-a4a6-ce5d94fe1348/a3ca0481-5db1-41bd-a4a6-ce5d94fe13481.gif)
计算机原理及应用课设
计算机原理及应用
课程设计
课程名称:
交通灯模拟控制
班级:
0902
姓名:
虞泽赟
学号:
2009302540053
设计目的
希望通过设计,了解8255A芯片的内部结构、工作方式、各引脚功能及I/O的使用,掌握8255A的控制字的意义、功能和设置方法,重点是根据控制要求,对8255A进行初始化编程和应用,培养将理论知识应用于实践的综合能力。
一、课题内容及要求
(1)交通灯的亮灭规律,设有一个十字路口,1、3为南北方向,2、4为东西方向,初试状态为四个路口的红灯全亮.之后,1、3方向通车。
延迟一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次后,1、3红灯亮,而同时2、4路口的绿灯亮。
2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次后,再切换到1、3路口方向,之后,重复上述过程。
(2)通过8255A控制发光二极管。
PB3、PB0、PA5、PA2对应黄灯,PB1、PA6、PA3、PA0对应红灯,PB2、PA7、PA4、PA1对应绿灯。
(3)程序中设定好8255A的工作模式,及三个端口均工作在方式0,并处于输出状态。
(4)各发光二极管共阳极。
二、仪器设备
1.稳压电源一台(+5V)
2.启东计算机厂DVCC-598单片机实验系统一套
3.Windows98系统计算机一台
三、设计思路
(1)交通灯的显示
交通的灯的显示是通过LED灯来实现的,由于实验设备中有三种颜色的LED灯,分别是红色、绿色和黄色。
根据设计要求中,共需十二个交通灯,分别是四个路口行车道的红灯,黄灯,绿灯。
所以我们将试验箱的12个LED灯分成四组,将8255的a端口设置在2方式,连接到LED灯上,实现对LED灯输出信号。
(2)时间的控制
由于题目中没有给定红绿灯延迟的时间和黄灯是闪烁次数和闪烁时间,我们根据实际情况进行设定为:
绿灯时间亮起时间13.5秒,黄灯闪烁八次。
(3)黄灯的闪烁问题
对于题目中要求的对于黄灯的闪烁问题,可以通过连续的将黄灯置亮和置灭来实现。
对于两次操作的时间间隔,我们设置为0.5s中,因为太小了,人眼无法觉察得到,太大时,就起不到闪烁的作用。
在中断程序中进行判断如果是黄灯闪烁的时间,则每隔0.5s将其置灭或者置亮一次。
四、程序功能描述及流程图
1.功能描述:
(1)初试状态,四个路口的红灯全亮.
(2)开始运行,1、3路口绿灯亮,2,4口亮红灯。
车辆开始通行。
(3)延迟一段时间后,1,3路口黄灯闪烁8次;2,4路口亮绿灯。
(4)1、3路口绿灯变红,2、4路口红灯变绿,开始通车。
(5)延迟一段时间后,黄灯开始闪烁数次。
(6)2、4路口绿灯变红,1、3路口红灯变绿,开始通车。
2.程序流程图:
五、端口接线及电路连接图
1.端口接线:
8255A
黄灯:
PB3---L1、PB0---L9、PA5---L5、PA2---L13
红灯:
PB1---L3、PA6---L11、PA3---L7、PA0---L15
绿灯:
PB2—L2、PA7—L10、PA4---L6、PA1---L14
2.电路连接图:
PA14PB9PB1PA5PA4PA3PB0PA7PA6PB1PA1PA0
8255
六、
程序代码
CODESEGMENT
ASSUMECS:
CODE
IOCONPTEQU0FF2BH
IOPATEQU0FF28H
IOPBTEQU0FF29H
ORG12e0H
START:
MOVAL,80H
MOVDX,IOCONPT
OUTDX,AL;初始化
MOVDX,IOPAT
MOVAL,10110110B
OUTDX,AL
MOVDX,IOPBT
MOVAL,11111101B
OUTDX,AL;初始全红灯
CALLDELAY1
GOON:
MOVAL,11111011B
OUTDX,AL
MOVDX,IOPAT
MOVAL,01110110B
OUTDX,AL;1、3绿灯,2、4红灯
CALLDELAY1
MOVCX,8
GOON1:
MOVDX,IOPAT
MOVAL,11110110B
OUTDX,AL
MOVDX,IOPBT
MOVAL,11111111B
OUTDX,AL;只有2、4红灯亮
CALLDELAY2
MOVDX,IOPAT
MOVAL,11110110B
OUTDX,AL
MOVDX,IOPBT
MOVAL,11110110B
OUTDX,AL
CALLDELAY2
DECCX
JNZGOON1;黄灯闪烁8次
MOVDX,IOPAT
MOVAL,10101101B
OUTDX,AL
MOVDX,IOPBT
MOVAL,11111101B
OUTDX,AL;1、3红灯,2、4绿灯
CALLDELAY1
MOVCX,8
GOON2:
MOVDX,IOPAT
MOVAL,10111111B
OUTDX,AL
MOVDX,IOPBT
MOVAL,11111101B
OUTDX,AL;只有1、3红灯亮
CALLDELAY2
MOVDX,IOPAT
MOVAL,10011011B
OUTDX,AL
MOVDX,IOPBT
MOVAL,11111101B
OUTDX,AL
CALLDELAY2
DECCX
JNZGOON2;黄灯闪烁8次
JMPGOON;循环
DELAY1:
PUSHAX
PUSHCX
MOVCX,0030H
DELY2:
CALLDELAY2
LOOPDELY2
POPCX
POPAX
RET
DELAY2:
PUSHCX
MOVCX,8000H
DELA1:
LOOPDELA1
POPCX
RET;2个延时程序
CODEENDS
ENDSTART
七、实验结果
程序运行后,发光二极管状态表:
(其中0代表灯灭,1代表灯亮和闪烁)
状态
南
东
北
西
黄
绿
红
黄
绿
红
黄
绿
红
黄
绿
红
PB3
PB2
PB1
PB0
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
开始4个红灯亮
0
0
1
0
0
1
0
1
1
0
0
1
该四
个工
作状
态按
此次
序将
重复
出现
南北绿灯亮,东西红灯亮
0
1
0
0
0
1
0
1
0
0
0
1
南北黄灯闪烁,东西红灯亮
1
0
0
0
0
1
1
0
0
0
0
1
南北红灯亮,东西绿灯亮
0
0
1
0
1
0
0
0
1
0
1
0
南北红灯亮,东西黄灯闪烁
0
0
1
1
0
0
0
0
1
1
0
0
发光二极管状态转换图:
(四种状态重复出现)
八、实验中遇到的问题及解决方法
在这次课程设计中,我们组遇到了许多问题。
尽管我们的课题并不是很复杂,但在写程序时还是有许多细节上的问题没有注意,通过跟另外与我们课题相同的一组同学一起讨论,才最终完善了程序。
即使如此,我们在真正做实验时,还是遇到了一些出乎意料的问题。
比如说,当老师检查结果时,我们才发现,初始状态四个红灯全亮的情形没有出现,通过仔细地核查程序,我们最终发现是由于设定的初始全红灯的时间太短了,以至于无法用肉眼辨别出来,在更改了时间后,这个问题才终于得到了解决。
九、实验收获及体会
通过这次的课程设计,令我对微机原理的理论知识以及单片机的程序开发有了更加深刻的认识。
对于微型计算机的程序设计语言也有了更深的理解。
这些都为我今后进一步地学习单片机的设计、开发和应用打下了良好的基础。
另外,这次课程设计使我真正认识到了理论与实际的区别,这在以后的工作和学习中将给予我很重要的提示,使我更加注重理论与实际相结合,注重选择解决问题的思路和方法。
总之,这次课程设计巩固了我所学的知识,提高了我分析、解决问题的能力,加强了我的团队合作意识,令我获益匪浅。
附:
交通灯法二
CODESEGMENT
ASSUMECS:
CODE
START:
IOCONFIGEQU0FF2BH
IOAEQU0FF28H
IOBEQU0FF29H
ORG1200H
MAINPROC
CALLINITIAL
MOVAX,1001001001B;四个红灯全亮
CALLASSIGN
CALLDELAYL
CIRCLE:
MOVAX,1010001010B
CALLASSIGN
CALLDELAYL
CALLINTERVAL13
MOVAX,10001010001B
CALLASSIGN
CALLDELAYL
CALLINTERVAL24
JMPCIRCLE
MOVAH,4CH
INT21H
RET
MAINENDP
INITIALPROC;8255A初始化
MOVDX,IOCONFIG
MOVAL,10000000B;PA0,PB0,PC0,均输出
OUTDX,AL
RET
INITIALENDP
DELAYLPROC;延时子程序(长)1S(设定BX和CX参数)40
PUSHCX
PUSHBX
MOVBX,2
CIRCLEDELAYL:
CALLDELAYS
DECBX
JNZCIRCLEDELAYL
POPBX
POPCX
RET
DELAYLENDP
DELAYSPROC;延时子程序(短)约10MS(设定CX参数)2E95//书162
PUSHCX
MOVCX,2H
CIRCLEDELAYS:
LOOPCIRCLEDELAYS
POPCX
RET
DELAYSENDP
ASSIGNPROC;赋值子程序(将信号灯的情况输出至相应口)
MOVDX,0378H
OUTDX,AL
MOVDX,0379H
MOVAL,AH
OUTDX,AL
RET
ASSIGNENDP
INTERVAL13PROC;24变红前的交替状态
PUSHBX
MOVBX,10
CIRCLE13:
MOVAX,1100001100B
CALLASSIGN
CALLDELAYS
MOVAX,1000001000B
CALLASSIGN
CALLDELAYS
DECBX
JNZCIRCLE13
POPBX
RET
INTERVAL13ENDP
INTERVAL24PROC;13变红前的交替状态
PUSHBX
MOVBX,10
CIRCLE24:
MOVAX,100001100001B
CALLASSIGN
CALLDELAYS
MOVAX,000001000001B
CALLASSIGN
CALLDELAYS
DECBX
JNZCIRCLE24
POPBX
RET
INTERVAL24ENDP
CODEENDS
ENDSTART
步进电机程序控制:
CODESEGMENT;步进电机5度步进角
ASSUMECS:
CODE
START:
IOCONFIGEQU0FF2BH
IOAEQU0FF28H
IOBEQU0FF29H
ORG1200H
MAINPROC
CALLINITIAL;8255初始化
NOP
MOVBX,100H;参数设置1
CIRCLE:
CALLFORWARD
CALLBACKWARD
DECBX
JNZCIRCLE
MOVAH,4CH
INT21H
RET
MAINENDP
INITIALPROC
MOVDX,IOCONFIG
MOVAL,10000000B;PA0,PB0,PC0,均输出
OUTDX,AL
RET
INITIALENDP
FORWARDPROC
MOVDX,IOA
PUSHCX
MOVCX,0B4H;参数设置10B4H
CIRCLEFORWARD:
MOVAL,03H
OUTDX,AL
CALLDELAY
MOVAL,06H
OUTDX,AL
CALLDELAY
MOVAL,0CH
OUTDX,AL
CALLDELAY
MOVAL,09H
OUTDX,AL
CALLDELAY
LOOPCIRCLEFORWARD
POPCX
RET
FORWARDENDP
BACKWARDPROC
MOVDX,IOA
PUSHCX
MOVCX,5AH;参数设置25AH
CIRCLEBACKWARD:
MOVAL,03H
OUTDX,AL
CALLDELAY
MOVAL,09H
OUTDX,AL
CALLDELAY
MOVAL,0CH
OUTDX,AL
CALLDELAY
MOVAL,06H
OUTDX,AL
CALLDELAY
LOOPCIRCLEBACKWARD
POPCX
RET
BACKWARDENDP
DELAYPROC
PUSHCX
MOVCX,0CCCH;参数设置30CCCH
CIRCLEDELAY:
LOOPCIRCLEDELAY
POPCX
RET
DELAYENDP
CODEENDS
ENDSTART