4结果
在实验板上结果显示
根据题目的要求,通过调试运行程序,得到了不同状态的下Jk板上亮灯的各种情况如下:
(1)正常情况,干线亮绿灯,支线、人行道亮红灯如下图4.11
图4.11正常情况显示情况
(2)人行道通行,人行道绿灯,干线,人支线亮红灯,维持10秒,结果如图4.12
图4.12人行道通车情况的显示
(3)支线通车,支线亮绿灯、干线,人行道亮红灯,结果如图4.13
图4.13支线通车情况的显示
(4)由干线转支线通车,干线先亮3秒黄灯再变为绿灯,支线由红灯变为绿灯且维持15秒绿灯、人行道红灯,结果如图4.14
图4.14干线转支线通车情况的显示
(5)由支线转人行,支线亮黄灯3秒,人行亮绿灯10秒,干线亮红灯,结果如图4.15
图4.15支线转人行情况的显示
(6)由人行转支线,人行为红灯,先经过干线15秒绿灯,再由干线3秒黄灯过渡到支线绿灯,干线变为红灯,结果如图4.16
图4.16人行转支线情况的显示
5组员分工
梅登:
主程序的编写、附加程序的构思、程序调用和LED灯定时、1秒中断等子程序及汇总、流程图绘制
陈冶:
附加程序构思、程序调试、检测非支线通车状态子程序、检测支线车辆数以及延迟程序、流程图构思
谢海龙:
附加程序构思、程序调试、初始化程序、撰写报告、流程图构思
徐拓燃:
附加程序构思、程序调试、报警系统程序和检测支线车辆程序、撰写报告、流程图构思、电路硬件连接
6心得体会
6.1梅登(20104929)的心得体会:
在计算机硬件基础课程设计动员大会上,就听到老师说“交通灯管理系统这道题有点难度”,当时就暗想我会不会抽到那一题,结果在分配好组员后进行抓阄时,这道题果然还是花落我家。
拿到题目后,我们组成员都充分重视,很快我们就做好了任务分配和对课程设计的简单计划。
作为组长的我主要负责的是读懂课程设计任务书、构建相应的逻辑画出逻辑结构图及硬件连接电路图、理清期间的逻辑关系,构建程序的主体、承担实现利用三色LED数码管准确显示各种路面状态和定时中断等子程序,并负责根据主程序的需要分配子程序的编写任务,协调组员间工作的默契度。
在做为期将近两周的课程设计期间,让我学到很多也懂得很多。
把以前了解不深,或则不透彻的一些知识点在做这个的过程中,把他们搞懂了。
另外我深刻体会到一个好的团队氛围,对项目完成的重要性,当然在这个过程中也也遇到了许多问题。
如下:
首先,流程图的制作。
当我们第一天开始的时候就很尴尬,不知如何开始。
最后经过讨论,我们就一致决定先一起把整个设计的流程图写出来,因为只有有了一个清晰的思路,才能更好地完成功能。
于是,我先根据自己的初步构想,绘制了程序流程图,然后将其与组员们讨论。
我们在讨论的过程中,不断的有新的问题产生,然后有别的组员发现,然后修正,才得到我们都觉得逻辑没得问题的完整程序流程图。
比如,在人行道通行完毕后,是否要先判断支线上车辆数目大于等于四辆,如果是,是否要让支线通车,再让干线通车;又如,不是很明白在干线通车时,如果支线有大于4辆车到,同时人行道又有响应时,该先进行哪一个。
等等,这些问题都是我们一起讨论并一步一步解决出来的。
然后,基本功能的程序编写过程。
鉴于流程图的制作过程中大家一起合作感受到比较容易完成,我们就根据我们组的实际情况,继续一起编程。
由于我们的流程如调理的清晰性和准确性,我们编写程序整体上是非常顺利的,我们只用了一天加一个晚上就完成了。
不过也遇到些问题,比如说,最开始是打算想用8255的中断查询功能来实现8254定时中断功能,但是由于忘记了相关管脚的特殊功能和用法,就需要了解如何选择响应的接口才能使其满足我们设计的要求,并且不影响我们拓展功能的实现。
这些都是需要我们重新熟悉的知识点。
最让人觉得遗憾的是没能够实现PC机与试验箱的串口通信,完成PC机模拟画面与试验箱展示的状态的配合显示功能。
虽然如此,我还是在尝试的过程中学习了不少8250的相关功能,收获不少。
整个课程设计做下来,大大小小的问题绝不止这些。
遇到问题我们先自己想想然后一起讨论,经过讨论大部分都得到了解决。
再不能解决的我们请教了老师和同学。
问题越多,说明我们学到了越多。
书本上的知识远远不能止于理论,我们工科的学生更是如此,只有在工程实践中才能发现更多,收获更多。
6.2陈冶(20104978)心得体会:
通过本次的课程设计我对为指令的设计和流程都有了更深的理解,进一步熟悉了计算机硬件技术原理的基本知识,同时也加深了解了模块化程序设计的基本过程,掌握了一些基本的软硬件设计知识并对其进行了基本的运用,在模块化程序设计中运用了很多知识,以及几块芯片8255、8254、8259来实现计数器、定时器、查询的功能等,即实现了对以往所学内容的复习,也让自己更加对他们的实际运用能力得到了增强,使自己比以前的动手能力与对课题的思考能力得到了增强。
刚开始拿到课题的时候,我们对老师出题的意图进行了讨论,并且根据老师所提的要求都得到了自己的见解,最终大家在一起共同确定了交通灯功能的实现情况还有优先级,中间遇到的矛盾问题也找老师请教而得到了解决,比如人行道的交通灯红灯亮了之后是不是必须转到干线通车而不是要考虑支线车辆的情况,还有增加了支线车辆等30秒必须要通车和支线车辆闯红灯、人行道时间提示、主线支线黄灯等待等扩展功能。
在进行工作之前,我们首先拿起了计算机硬件基础的课本,毕竟比较久了,大家对指令还有芯片的功能都有一些生疏了,同时也在不懂的时候及时的请教我们组的组长梅登同学,十分感谢他在这次课程设计对我们提供的帮助。
在本次课程设计之中,我们首先进行的就是程序流程图的设计,这是整个实现功能阶段的主心骨,所用的程序都要根据他来设计,也能让我们在编程时能够有条不紊。
在设计主程序流程图时,我常常会忽略一些重要的情况以及几个模块之间的关系主次性。
多亏组员和组长的相互探讨还有提出质疑才能设计出一个完整的程序流程图。
其次,运用了非常重要的思想就是模块化程序的设计,我们的交通灯系统设计中就设计了:
初始化程序、检测非支线交通灯状态模块、定时、延时、按键中断子程序等模块。
让自己对系统有了一个更加清晰的认识了解,更加认识到了在编制大程序的汇编语言程序时,采用模块化程序设计方法的必要性。
这次的课程设计,我主要是负责检测非支线通车状态,支线车辆数还有延时程序的编程,虽然我们几个人负责了不同的模块,但是各个模块之间还是有关系的,所以必须在团队合作的基础之上我们才能够完成各个模块的无漏洞编程,比如非支线通车状态是我必须要涉及到报警模块,还有支线车辆数也涉及到延时程序,报警程序。
虽然各个模块式独立的,但并非没有关系。
所以对我这个编程不是很好的人来说有一定的困难,但是在其他组员的协助还是一一解决了。
通过实践,提高了我的实际操作能力,从以前所学理论上升到实践,真正做到了学有所用,同时也认识到了自己的不足之处,对转移指令、芯片工作方式等都不是很熟悉,但是自己受益匪浅。
课程设计可以体现出团队合作程度,紧密合作加上明确分工,,能够大大地提高设计速度,在动手设计之前,最好将设计所需要的数据,程序准备好,为了判断设计结果是否正确,有必要在准备阶段计算理论值。
仔细分析指令的每一位,以及理清思路,在设计时做到胸有成竹。
6.3谢海龙(20115040)的心得体会:
开学的第一周,我们接到了计算机硬件的课程设计任务,在经过简单的抽签分组后,确定了我们组的组长组员以及课程设计题目。
我们组的题目是交通管理系统的设计。
拿到任务书后,我们组组长和组员都对这次课程设计很重视,大家都明白这是我们对自己学习的一种检测,也是一次巩固的机会,同样也是一次理论结合实践的机会。
第一天,我们拿到题目后,就各自查资料,理解题意,最后再汇合大家的思想,讨论中我们的意见有些冲突,期间难免有些争执,但我们各自呈现彼此的理由,最终得出整体流程图,并对附加的功能作了一些讨论,并且得出了最后的结果。
在这之后,我们又确定了各自的分工,把每个人负责的模块进行了详细的分工,以确保我们组可以顺利的完成这次课程设计。
讨论完之后,确定了我的任务是负责初始化函数。
拿到任务之后。
我便着手开始了程序的编写,由于很久没看书了,所以在开始着手做的时候,难免遇到很多困难,我不得不又回头把遗忘了的知识温习了一遍,有很多知识点都忘记了,幸好我们组的组员都很优秀,在我遇到不懂时,我也会求助他们,他们会很虚心的给我讲解,如果他们不知道的,大家就会一起翻书或者查阅其他资料。
在经过了自己和组员们的一起努力后,我终于完成了我负责部分的程序的编写,经过这一次课程设计我深深的理解到了一只筷子容易被折断,而一把筷子不易被折断的道理。
完成了程序的编写之后,接下来便是程序的运行调试,中间多少遇到了一些问题,但是在我们共同的努力下都一个个完美的解决了,看着大家编写的程序把任务书上的功能以及我们自己附加的功能一一完成,一股莫名的成就感油然而生,同时也让我感受到了自己所学知识的用武之地。
经过此次的课程设计,我不但巩固了自己所学的知识,也学会了一些课外的知识,同时还体会到了团队合作的重要性,也加深了组员之间的相互了解。
总的来说,这是一件一举多得的事,对我下学期的毕业设计也会有一定的帮助。
在未来的工作中,我也必须不断的努力学习,才能把自己的事做的更好。
6.4徐拓燃(20105043)的心得体会:
这次课程设计分到的是交通灯系统的设计(在实验板上面实现),要求实现任务书上基本的要求,并在基本要求的基础上完成功能的自主创新。
开始觉得这个项目就很难,果然实验的第一天就遇到了一些问题。
开始对基本要求的理解上我们四个就出生了分歧,我们对在人行道绿灯结束后,是否需要先行主干线,然后再行驶支线,不过通过我们的讨论和请教,后面大家找到了最合理最优化的流程图设计方法,最后大家一起努力绘制出初步的设计流程图。
基本思路出来之后,我们就开始着手编写各自负责的功能模块程序,我负责的是按键中断服务子程序,我参考《计算机硬件技术基础》来编写程序,但是由于我的原因,没能完成,最后交给其他同学编写。
然后经过我们的讨论,决定加上报警系统扩展功能,我依旧在参考书籍和请教后写完子程序,但是组长给我指出了错误,蜂鸣器报警可以通过给蜂鸣器送入低电平使其报警。
在所有子模块都编写完成后,组长做了最后的总程序编写和调试,然后我又进行了硬件连接和功能实现调试,并检查了功能实现是否完全和正确。
最后我和同学一起撰写了设计报告。
在这次课程设计中,在收获知识的同时,还收获了阅历,在此过程中,通过查找大量资料,请教同学,以及不懈的努力,同学间的相互协作,顺利圆满完成了题目要求。
在此次实践中,我们学会了很多,不但学到某些平时没学到的知识,更是学会了一个做设计的有效思路和方法,对理论知识的更好理解就是把之用于实际运用中。
而这些都是日后最实用的,对自己下学期的毕业设计也有一些启发,受益匪浅。
未来更好的面对社会的挑战,只有不断的学习、实践,再学习、再实践。
7参考文献
[1]仰天怡,邓亚平,黄勤《计算机硬件技术基础》重庆大学出版社,2002
[2]黄勤,高富强,杨天怡《计算机硬件技术基础实验教程》重庆大学出版社,2002
8程序清单
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;大四上计算机硬件课程设计程序
;《交通灯管理系统设计》程序部分
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.486
CTR_8254EQU30CH;8254控制端口
CNT0EQU300H;8254计数器0
CNT1EQU304H;8254计数器1
CNT2EQU308H;8254计数器2
CTR_8255EQU34CH;8255A控制端口
PORTAEQU340H;8255A的A口地址
PORTBEQU344H;8255A的B口地址
PORTCEQU348H;8255A的C口地址
ADDR0EQU320H;8259偶地址
ADDR1EQU328H;8259奇地址
INTQEQU40H;定时中断类型号
INTQ1EQU41H;按键中断类型号
CODESEGMENTUSE16
ASSUMECS:
CODE
ORG2000H
BEG:
JMPSTART
SHIWEIDB0;待显示的时间的十位和个位
GEWEIDB0
CHESHUDB0;支线车辆数
CHECHADB0;支线车数是否变少标志,1表示减少
DAIXIANDB?
;待显的段代码
DUANXUANDD?
;4个三色LED的段选
TIME0DB?
;倒计时秒数
TIMEDB0;时间
TIME_3DB0;定时3s到达标志
TIME_10DB0;定时10s到达标志
TIME_15DB0;定时15s到达标志
TIME_30DB0
KEYDB0;按键标志位
BAOJINGDB0;报警标志位
STADD?
;当前状态
STA1DD05050A05H
STA2DD0A0A0505H
STA3DD0505050AH
STA4DD05050005H
STA5DD05050500H
STA6DD050a0505H
TABDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH;三色8段LED灯字符码
START:
CALLINIT
MOVECX,STA1
MOVSTA,ECX
MOVTIME0,0
calldingshi
M2:
CALLCLOR_LED
CMPKEY,1
JZM14;跳到干线通车结束过度状态,且进入人行状态STA2(人行)
CALLCAR_NUM
CMPCHECHA,1
JNZM1
MOVBAOJING,1;蜂鸣器报警
CALLBEEP
calldly
movchecha,0
M1:
movbaojing,0
callbeep
cmpcheshu,0
jnztt3
movtime_30,0
tt3:
CMPCHESHU,4
JNBtt1
cmptime_30,30
jbm2
tt1:
MOVECX,STA4;干线通车结束过度状态,干线黄灯3s
MOVSTA,ECX
MOVTIME0,3
CALLDINGSHI
M3:
CALLCLOR_LED
CALLVOICE
CMPTIME_3,1;干线黄灯3s是否到达
JNZM3
M9:
MOVTIME_3,0
MOVCHESHU,0
MOVCHECHA,0
MOVBAOJING,0
CALLBEEP;解除蜂鸣器白净
MOVECX,STA3;支线通车15s
MOVSTA,ECX
MOVTIME0,15
CALLDINGSHI
M4:
CALLCLOR_LED
CMPTIME_15,1
JNZM4;15s是否到达
M8:
MOVTIME_15,0
MOVECX,STA5;支线通车结束过度状态
MOVSTA,ECX
MOVTIME0,3
CALLDINGSHI
M5:
CALLCLOR_LED
CMPTIME_3,1;支线黄灯3s是否到达
JNZM5
MOVTIME_3,0
movtime_30,0
M11:
CMPKEY,1
JZM0;转到人行通
MOVECX,STA1;干线通车状态
MOVSTA,ECX
MOVTIME0,15
CALLDINGSHI
M6:
CALLCLOR_LED
CALLVOICE
CMPTIME_15,1;干线通车15s是否到达
JNZM6
MOVTIME_15,0
JMPM2
M14:
MOVECX,STA4;干线通车结束过度状态
MOVSTA,ECX
MOVTIME0,3
CALLDINGSHI
M12:
CALLCLOR_LED
CALLVOICE
CMPTIME_3,1;干线通车结束过度3s是否到达
JNZM12
M0:
MOVKEY,0
MOVECX,STA2;人行状态
MOVSTA,ECX
MOVTIME0,10
CALLDINGSHI
M7:
CALLCLOR_LED
CALLVOICE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
calldly1
cmptime,7
jbt1
MOVECX,STA6;人行结束过度状态3s(绿灯闪烁3s)
MOVSTA