红绿灯实验报告.docx
《红绿灯实验报告.docx》由会员分享,可在线阅读,更多相关《红绿灯实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
![红绿灯实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/1/e6c5aacf-2b0c-4679-b7ca-2eceb73bab3c/e6c5aacf-2b0c-4679-b7ca-2eceb73bab3c1.gif)
红绿灯实验报告
课程设计
《微机原理与接口技术》
2012~2013学年第一学期
学院(部)
电子电气工程学院
学号
021210134
姓名
崔平
授课教师
戎自强
二、设计的题目及要求……………………………………….....1
2.1、题目
(一)……………………………………….............1
2.2、题目
(二)……………………………………….............1
三、设计的内容及程序……………………………………….....1
3.1对于题目
(一)的分析与设计………………………………..2
3.1.1设计的程序流程图………………………………………...2
3.1.2设计的程序………………………………………...........3
3.1.3调试结果和程序结果分析…………………………..........4
3.2对设计题
(二)的分析与设计…………………………………4
3.2.1实验电路及连线……………………………………….....4
3.2.2设计程序流程图……………………………………….....5
3.2.3设计的程序………………………………………...........6
3.2.4结果分析……………………………………….............9
3.2.5程序拓展内容………………………………………........9
四、扩展内容……………………………………….............13
4.1、关于行人闯红灯的扩展…………………………………….13
4.2、关于黄灯问题的扩展………………………………………15
五、心得体会……………………………………….............18
六、参考文献…………………………………...................19
微机课程设计报告
一、课程设计的目的
课程设计有利于基础知识的理解和逻辑思维的锻炼。
本课程设计是微机原理与接口技术课程的配套内容。
微型计算机在很多场合作为一个控制系统的控制部件或作为一个设备的智能化部件融入系统中。
学习和掌握计算机汇编语言和常用接口电路的应用和设计技术。
充分认识理论知识对应技术的指导作用,进一步加强理论知识与实践相结合,加深对专业知识和理论知识的认识和理解。
对于自动化专业的学会了解和认识微机的硬件结构和输入输出接口技术是十分必要的。
本课程设计要求同学们自己按要求设计一段程序并完成简单的红绿灯程序制作以及相应的拓展。
二、设计的题目及要求
2.1、题目
(一)
2.1.1设计目的
熟练掌握8088汇编语言程序各种结构的设计及编程方法,熟练掌握DOS中断功能调用的方法。
2.1.2内容
编制一个完整的程序,计算100个正整数(字数据)之和,如果不超过机器数的范围(65535),则计算其平均值并存于(RUSULT)中,否则显示“overflow”。
2.2、题目
(二)
2.2.1设计目的
掌握8088CPU及存储器硬件接口电路的设计连接,掌握相关硬件驱动软件设计及信息处理软件的设计调试方法。
2.2.2内容
利用8088CPU以及8255设计十字路口交通灯控制系统。
基本要求是完成双向红灯黄灯的配合控制。
并对当前的红绿灯系统的不足加以思考,并给出相应的解决方法。
三、设计的内容及程序
3.1、对于题目
(一)的分析与设计
编制一个完整的程序,计算100个正整数(字数据)之和,如果不超过机器数的范围(65535),则计算其平均值并存于(RUSULT)中,否则显示“overflow”。
3.1.1设计的流程图如下:
Y
N
N
Y
3.1.2设计的程序如下:
DSEGSEGMENT
MEMDWn1,n2,n3~~~n100
ERRDB'overflow!
',0DH,0AH,'$'
RESULTDW?
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG
BEGIN:
MOVAX,DSEG
MOVDS,AX
XORAX,AX
MOVSI,AX
MOVCX,100
SUM:
ADDAX,MEM[SI]
JCOVF
ADDSI,2
LOOPSUM
MOVBX,100
MOVDX,0
DIVBX
MOVRESULT,AX
JMPSHORTEXIT
OVF:
LEADX,ERR
MOVAH,9
INT21H
EXIT:
MOVAH,4CH
INT21H
CSEGENDS
ENDBEGIN
3.1.3调试结果和程序结果分析
在程序运行完毕以后如果没有溢出,AX以及RESULT中存放的是运算的结果,BX中存放的是100,CX中存放的是0;如果溢出则显示“overflow!
”字样。
比如说存放的数字为100个“2”则最终的结果中(AX)=2000,若存放的为100个“100”则显示“overflow!
”。
3.2、对设计题
(二)的分析与设计
利用8088CPU以及8255设计十字路口交通灯控制系统。
基本要求是完成双向红灯黄灯的配合控制。
并对当前的红绿灯系统的不足加以思考,并给出相应的解决方法。
3.2.1实验电路及连线
实验箱上,用于交通灯设计的模块有如下右图的接口式样,通过高低电平的测试,我们得知DG是指灯亮绿色,DR是指灯亮红色,如果两者同时驱动,则亮黄灯。
四个灯及其接口排列如右图所示
被控制的灯的位置
(相对于示意图)
8255输出接口
接入灯的接口
灯的颜色变化
附加变化
左方灯
PC0
DG1
绿灯
同时亮起,变为黄灯
PC4
DR1
红灯
上边灯
PC1
DG2
绿灯
PC5
DR2
红灯
下边灯
PC2
DG3
绿灯
PC6
DR3
红灯
右方灯
PC3
DG4
绿灯
PC7
DR4
红灯
3.2.2设计的流程图如下
2.3设计的程序如下
DATASEGMENT
DATAENDS
STACKSEGMENTSTACK
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAL,82H
MOVDX,203H
OUTDX,AL
B:
MOVDX,201H
INAL,DX
MOVBL,01H
TESTAL,BL
JNZB
MOVDX,202H
MOVAL,0FH
OUTDX,AL
CALLDELAY2
A:
MOVAL,096H
OUTDX,AL
CALLDELAY2
MOVAL,09FH
OUTDX,AL
CALLDELAY
MOVAL,096H
OUTDX,AL
CALLDELAY
MOVAL,09FH
OUTDX,AL
CALLDELAY
MOVAL,096H
OUTDX,AL
CALLDELAY
MOVAL,09FH
OUTDX,AL
CALLDELAY
MOVAL,096H
OUTDX,AL
CALLDELAY
MOVAL,09FH
OUTDX,AL
CALLDELAY
MOVAL,096H
OUTDX,AL
CALLDELAY
MOVAL,06H
OUTDX,AL
CALLDELAY2
MOVAL,069H
OUTDX,AL
CALLDELAY
MOVAL,06FH
OUTDX,AL
CALLDELAY
MOVAL,069H
OUTDX,AL
CALLDELAY2
MOVAL,06FH
OUTDX,AL
CALLDELAY
MOVAL,069H
OUTDX,AL
CALLDELAY
MOVAL,06FH
OUTDX,AL
CALLDELAY
MOVAL,069H
OUTDX,AL
CALLDELAY
MOVAL,06FH
OUTDX,AL
CALLDELAY
MOVAL,069H
OUTDX,AL
CALLDELAY
MOVAL,09H
OUTDX,AL
CALLDELAY2
JMPA
DELAYPROCNEAR
MOVBX,1AAH
CNT1:
MOVCX,0DFH
CNT2:
LOOPCNT2
DECBX
JNZCNT1
RET
DELAYENDP
DELAY2PROCNEAR
MOVBX,1AAH
CNT1:
MOVCX,0DF0H
CNT2:
LOOPCNT2
DECBX
JNZCNT1
RET
DELAYENDP
CODEENDS
ENDSTART
3.2.4结果分析
程序开始后,从8255输出信号096H,二进制表示为10010110B,对应8个输入灯接口。
其中DG1是1,DR1是0,所以左方向灯为绿色,以此类推,右方向灯为绿色,上、下两个灯为红色。
接着8255输出信号09FH,对应二进制为10011111B,DG1和GR1都是1,则左方向灯为熄灭,同理右方向灯也熄灭。
这样反复输入096H和09FH几次,造成左、右方向灯闪烁。
然后输入06H,二进制表示为00000110B,左、右方向灯变为黄灯。
接着输入069H,二进制表示为01101001B,这样,左、右方向灯变为红灯,上、下方向灯变为绿灯,完成红绿灯转换。
8255输出信号06FH,二进制表示为01101111B,这样上、下方向灯熄灭,反复几次,造成闪烁效果。
最后输入09H,二进制表示为00001001B,上、下方向灯变为黄灯。
只要最后进行跳转,重新开始输入信号即可。
3.2.5程序拓展内容
在原有基础上,我们利用实验箱上的八个小灯,加入了倒计时系统。
程序如下:
DATASEGMENT
DATAENDS
STACKSEGMENTSTACK
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAL,82H
MOVDX,203H
OUTDX,AL
B:
MOVDX,201H
INAL,DX
MOVBL,01H
TESTAL,BL
JNZB
MOVDX,202H
A:
MOVAL,96H
OUTDX,AL
CALLDELAY
MOVAL,06H
OUTDX,AL
CALLDELAY
MOVAL,96H
OUTDX,AL
CALLDELAY
MOVAL,06H
OUTDX,AL
CALLDELAY
MOVAL,96H
OUTDX,AL
CALLDELAY
MOVAL,06H
OUTDX,AL
CALLDELAY2
MOVAL,69H
OUTDX,AL
CALLDELAY
MOVAL,09H
OUTDX,AL
CALLDELAY
MOVAL,69H
OUTDX,AL
CALLDELAY
MOVAL,09H
OUTDX,AL
CALLDELAY
MOVAL,69H
OUTDX,AL
CALLDELAY
MOVAL,09H
OUTDX,AL
CALLDELAY2
JMPA
DELAYPROCNEAR
MOVBX,1CAH
CNT1:
MOVCX,0DFH
CNT2:
LOOPCNT2
DECBX
JNZCNT1
RET
DELAYENDP
DELAY2PROCNEAR
OUTDX,AL
MOVDX,200H
MOVAL,000H
OUTDX,AL
CALLDELAY
MOVAL,080H
OUTDX,AL
CALLDELAY
MOVAL,0C0H
OUTDX,AL
CALLDELAY
MOVAL,0E0H
OUTDX,AL
CALLDELAY
MOVAL,0F0H
OUTDX,AL
CALLDELAY
MOVAL,0F8H
OUTDX,AL
CALLDELAY
MOVAL,0FCH
OUTDX,AL
CALLDELAY
MOVAL,0FEH
OUTDX,AL
CALLDELAY
MOVAL,0FFH
OUTDX,AL
CALLDELAY
MOVDX,202H
RET
DELAY2ENDP
DELAY3PROCNEAR
MOVBX,1CAH
CNT1:
MOVCX,0DFH
CNT2:
LOOPCNT2
DECBX
JNZCNT1
RET
DELAY3ENDP
CODEENDS
ENDSTART
前半部分程序,和原来的不变,后面添加了倒计时程序。
每当绿灯闪烁的的时候,倒计时开始,八个灯按顺序开始亮,直到八个全亮,绿灯变黄灯,八个灯熄灭。
当绿灯再次开始闪烁时再进入新的倒计时。
除此之外,我们组还想了许多其他的拓展内容,比如在箱子左上方有个数字记数器,如果有他来做倒记时的记数器那会显得更加直观。
比如说用8253来定时,用8259A来处理中断以便于CPU可以处理其他事情。
以上内容由于能力有限,并未设计出来。
四、扩展内容
现在的红绿灯有许多不足之处,比如说对闯红灯的行人没有约束能力,当有车闯红灯的时候没有能力立即制止等。
根据这些不足我想出了以下解决方法。
4.1、关于行人闯红灯的扩展
在当今的中国行人闯红灯的现象屡见不鲜,行人凑够一小堆儿不管是红灯还是绿灯都往前走这样的做法不仅对自己的人身安全造成了极大的威胁,也对其他车主造成了诸多的不便,更是对城市文明的亵渎。
为了解决或者是说试着解决这一现象,我想到了以下的方法。
如以上图片所示,当斑马线两侧红灯亮起时启动红外探测器对“机非隔离外援延长线”处采集信号。
假设没有移动物体越过此线时,采集的信号为“0”;有移动物体越过此线时采集的信号为“1”。
基于这个假设当红灯亮起时若没有人闯红灯则采集到的信号一直为低电平,当有行人闯红灯的时候则此信号将变为高电平。
把采集到的信号传入8255中然后通过8255传送到CPU中进行判断。
通过采集到的信号高低电平的变化可以判断是否有人闯红灯。
当采集到高电平的时候CPU可以通过执行一个程序去驱动扬声器播出“文明出行,请不要闯红灯”提醒闯红灯的行人。
以及提醒交警前去阻止闯红灯的人。
基于这个设想我设计了如下的程序框图:
YNNY以上设想由于能力有限以及硬件的连接问题没能编写出完整的程序,在此仅给出以上程序框图。
若是以后还有条件我还可以在这个框图的基础上编写出适合使用的程序。
4.2、关于黄灯问题的扩展
最近我国新出台的交通法规中对闯黄灯的司机处以扣6分的严重处罚。
这在一定程度上解决司机视黄灯如绿灯的情况。
但是这也在一定程度上使得司机在遇到黄灯时要紧急刹车。
由于前面的司机紧急刹车,后面的司机搞不清前面的情况,就容易造成追尾事故的发生。
据报道在四川成都2013年1月3日有一位车主急刹躲黄灯导致4车连环追尾,造成了极大地损失。
为了试着解决这一问题,我做出了以下的设想:
在距离红绿灯100米左右的地方安装一个具有三盏绿灯的辅助交通灯。
当前方交通灯为红灯和黄灯的时候三盏灯全灭。
当前方的红绿灯为绿灯的且剩余20秒以上变为黄灯时三盏绿灯全亮,当前方的红绿灯为当绿灯的且剩余10秒~20秒变为黄灯时亮两盏绿灯,当前方的红绿灯为当绿灯的且剩余10秒以下变为黄灯时亮一盏绿灯。
这样就可以以绿灯亮的个数来提示车主前方100米处的红绿灯还有多久会变成黄灯,以便于他们判断是否可以在黄灯亮起以前安全通过该交通路口。
关于这个设想我设计了以下的程序框图(假设前方交通灯绿灯亮的时间为60秒):
N
Y
在以上红绿灯的基础上我编写了以下程序(假设绿灯亮起时给CPU发出的信号为“1”,8255的时钟频率为5MHZ):
DATASEGMENT
DATAENDS
STACKSEGMENTSTACK
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAL,82H
MOVDX,203H
OUTDX,AL
B:
MOVDX,201H
INAL,DX
MOVBL,01H(8255的B口的第一位接的是一个开关)
TESTAL,BL
JNZB(以上程序为当开关闭合时,该程序开始工作)
A:
MOVDX,201H
INAL,DX
MOVBL,02H (8255的B口的第二位接的是一绿灯开启的信号)
TEXTAL,BL
JZA(以上三行为测试前方交通灯绿灯是否开启)
MOVAL,0F1H
MOVDX,202H
OUTDX,AL(以上三行为开启辅助交通灯的三盏绿灯)
CALLDELAY
CALLDELAY
CALLDELAY(以上三行为延时30秒)
MOVAL,0F3H
OUTDX,AL
CALLDELAY(以上三行为开启辅助交通灯的两盏绿灯并延时10秒)
MOVAL,0F7H
OUTDX,AL
CALLDELAY(以上三行为开启辅助交通灯的一盏绿灯并延时10秒)
MOVAL,0FFH
OUTDX,AL(以上两行为熄灭辅助交通灯的全部绿灯)
JMPA
DELAYPROCNEAR(以下为延时10秒的子程序)
MOVBX,0C350H
CNT1:
MOVCX,33EH
CNT2:
LOOPCNT2
DECBX
JNZCNT1
RET
DELAYENDP
此程序为控制三盏绿灯开启与关闭的程序,目的在于用绿灯开启的个数来提示司机前方100米处红绿灯会在多久以后变为黄灯,以避免司机由于躲黄灯而发生交通事故。
五、心得体会
经过这两周的课程设计,做关于交通灯系统设计,我认真查阅资料,学习关于这方面的知识,比如说要了解8088芯片中各个引脚的功能,怎么样去使用8255这个可编程并行接口芯片以及交通有哪些规则.在理论学习的基础上,又下了一次苦工夫,算是明白了设计一个系统的过程;也让我体会到要想成功地设计某个东西,光学好专业知识是不够的,必须要系统的知识,无论在哪方面都要有个明白的概念,只有这样才不至于在设计过程中摸不着头脑,知道去哪些是需要查的资料,还有一点,我觉得我在芯片编程方面,特别是在初始化方面是我最大的困难,或许是我的汇编语言学得不够好,我只能借助参考资料,查每一条指令的作用与功能,这样一来又巩固了我的对汇编语言的了解.而且在设计中,把死板的课本知识变得生动有趣,激发了学习的积极性。
把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
以前对与计算机操作系统的认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了操作系统是如何处理命令的,如何协调计算机内部各个部件运行,对计算机编译原理的认识更加深刻。
六、参考文献
[1]宋杰等主编.微机原理与接口技术课程设计——高等院校计算机课程设计指导丛书.北京:
机械工业出版社.2005
[2]李国栋主编.微机原理与接口技术课程设计(高等院校计算机技术与应用系列规划教材).浙江:
浙江大学出版社.2007
[3]陆红伟主编.微机原理实验与课程设计指导书(普通高等教育十一五规划教材).北京:
中国电力出版社.2006
[4]郑家声主编.微型计算机原理与接口技术.北京:
机械工业出版社.2004
[5]顾滨主编.80X86微型计算机组成/原理及接口.北京:
机械工业出版社.2001