交通系统计算机硬件课程设计额报告.docx
- 文档编号:26992662
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:50
- 大小:2.56MB
交通系统计算机硬件课程设计额报告.docx
《交通系统计算机硬件课程设计额报告.docx》由会员分享,可在线阅读,更多相关《交通系统计算机硬件课程设计额报告.docx(50页珍藏版)》请在冰豆网上搜索。
交通系统计算机硬件课程设计额报告
计算机硬件技术基础课程设计任务书
课程设计报告
课程名称计算机硬件技术课程设计
题目交通灯计算机硬件课程设计
院系专业自动化学院自动化专业
班
设计题目
交通灯管理系统的设计
设计要求
设计编制一个十字路口交通管理监督与管理系统,用计算机硬件实验系统模拟实现交通管理要求;并在此基础上自行完善和优化系统功能。
基本功能要求如下:
1).交通线路分为人行道、干线和支线、,均有红灯和绿灯。
2).人行道由一个按键控制,当行人按下控制键后,在正常干线或支线的绿灯时间结束后,
人行道绿灯亮,干线和支线红灯亮,维持10秒后,人行道红灯亮,干线绿灯亮。
干线和支线状态根据下述情况决定。
3).正常情况下只允许干线上的车辆通过,即干线绿灯亮,支线红灯亮。
4).当支线上有N辆车(N>=4)时,应允许支线上的车辆通过。
要求干线由绿灯变为红灯,支线由红灯变为绿灯。
支线上的绿灯亮15秒后绿灯变为红灯,干线由红灯变为绿灯。
5).当干线由红灯变为绿灯后,必须维持15秒才能返回第4步。
6).红绿灯的剩余时间在三色LED上显示。
若有行人或车辆闯红灯,则声光报警(扬声器或蜂鸣器)。
上述时间要求精确定时。
设计报告要求
1.明确每位组员的详细分工。
2.在上述设计主要内容的基础上,本组讨论整理出系统的详细操作说明。
3.详细描述自行完善和优化的系统功能以及设计方案。
4.给出系统的设计思路和意见、软件设计方案。
5.画出各软件模块的程序流程图,说明硬件连接。
6.列出加上必要注释的程序清单。
7.每位组员根据自己承担的设计内容和设计过程,写出心得体会(不少于800字)。
8.所有组员在任务书上签名,将任务书装订在报告首页。
9.将设计报告文件(doc.)和源程序文件(asm.)压缩打包后发送到邮箱jsjyj@,压缩文件名:
2011级XX班XXX组密码锁.rar。
人员及任务分配
姓名
班级
学号
任务
1课题分析
1.1基本功能分析及设计
根据课题的功能要求,经过反复的思考和讨论我们决定采用模块化的思想来分析及设计整个课题。
首先我们把功能模块化,对其功能进行细化分解,对于该课题我们可以把它的功能分解为下面几块:
显示模块,计时模块,颜色模块,定时模块,选择分支模块,报警模块等。
根据以上各个模块我们就可以分布进行设计和硬件的悬着。
首先交通灯的时间显示我们采用8254芯片的定时器和计数器功能功能来实现,其次,对于交通灯的三种颜色我们采用实验箱上的三色LED灯来显示,再有对于车辆数还有闯红灯的演示我们用小键盘来实现,对于闯红灯我们利用LED灯和蜂鸣器同时作用。
这样就很容易的设计好各个子功能模块,然后根据整体功能的要求合理的把各个子功能整合起来就能完成整个课题的设计了。
这样做的目的和好处是思路清晰,方便设计。
2硬件设计
2.1总电路
根据分析此次要用到的硬件模块包括8254定时芯片,CPU,8255,可编程并行接口芯片,LED,蜂鸣器等。
它们的相关介绍如下:
图1是此次试验所用到的试验箱面板,此次课题就在其上完成
图1PD-32E操作面板
此次试验的硬件电路仿真图如图2所示
图2仿真总电路图
硬件连接如下,
8255A:
PA0~PA3与键盘行信号P0~P3,PB0~PB3与键盘列信号Q0~Q3连接C口的pc1接8254的控制端口gate0,pc7口接蜂鸣器。
8255的口接340,8254的接译码模块的CS1,CLK1接频率为47KHZ的时钟信号,GATE1接+5V,OUT1接8259
(1)的IRQ0;
8259
(1)的CS-1接译码模块的CS2,P/1接+5V,INT1接CPU的INTR;
其硬件连接框图如图3所示:
图3总体框图
2.2分电路
2.218255模块
8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:
A组包括A口及C口高4位,B组包括B口及C组的低4位。
A口可以设置为方式0、方式1、方式2,B口与C口只能设置为方式0或方式1。
工作方式如下:
方式0—基本输入/输出方式
方式1—选通输入/输出方式
方式2—双向选通输入/输出方式
各引脚功能如下。
D7~D0——与CPU侧连接的八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;图4
CS(低电平有效)——片选输入信号;
A0、A1——片内寄存器选择输入信号;
PA7~PA0——A口外设双向数据线;
PB7~PB0——B口外设双向数据线;
PC7~PC0——C口外设双向数据线;
RESET——复位输入信号
此次用8255的A口作为键盘的输入B口作为键盘的输出C口的pc1口作为8254的控制端口pc7口用来控制蜂鸣器。
2.228254模块
8254的功能用途是:
(1)延时中断
(2)可编程频率发生器
(3)事件计数器
(4)二进倍频器
(5)实时时钟
(6)数字单稳
(7)复杂的电机控制器
8254有六种工作方式:
(1)方式0:
计数结束中断
(2)方式1:
可编程频率发生器
(3)方式2:
频率发生器
(4)方式3:
方波频率发生器
(5)方式4:
软件触发的选通信号
(6)方式5:
硬件触发的选通信号
8254,各引脚功能如下。
D7~D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;图5
A0、A1——片内寄存器地址输入信号;
CLK——计数输入,用于输入定时基准脉冲或计数脉冲;
OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;
GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。
本项目用8254来实现1秒定时中断功能,其中0口工作在方式3,产生1HZ的方波以此作为8259-IRQ0的中断请求输入信号,并通过设置变量实现定时和计数功能。
2.238259模块
各引脚功能如下。
D7~D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0——地址信号;
INT——中断请求信号;
INTA(低电平有效)——中断响应信号;
CAS0~CAS2——级联信号,形成一条专用8259A总线,图6
以便多片8259A的级联;
SP/EN——从编程/允许级联。
在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。
在非缓冲方式中,作为输入信号用于表示主片还是从片;
IR0~IR7——外部中断请求输入线。
要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。
2.24蜂鸣器模块
图7蜂鸣器电路原理图
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,通过放大电路驱动,用来做提示或报警。
2.25按键模块
本次项目中按键的功能如下表所示
图8
表1小键盘的按键功能
按键
1—7
8
9
A
B
C
功能
对应的车辆数
干线有人按键
干线有人闯红灯
支线有人闯红灯
干线有人闯红灯
支线有人按键
2.26三色LED模块
用实验板上的四片8255的三色LED数码管来实现交通灯的仿真并显示计时。
LED数码管与各路口路灯的对应情况如下表所示
表2三色LED数码管对应各路口的情况
L1L2
L3L4
L5L6
L7L8
支线人行显示
干线人行显示
干线通车显示
支线通车显示
3软件设计
本次设计采用的是子程序嵌套,即程序的模块化思想。
在进行设计的时候,先写好主程序,定好程序的总体框架结构,划分出若干个子程序。
子程序用一个个小的调试程序调试好,确认准确之后再将各个子程序嵌入到主程
程序包括主程序,初始化子程序,键盘扫描子程序,报警子程序,定时子程序,延时子程序,人行子程序,干线子程序等
3.1主程序的设计流程图
在主程序中,首先是初始界面的显示,用8255实现输入输出,8254实现1秒定时中断功能和定时、计数功能,再次根据实际情况实现不同情况下的三色数码管显示情况,并在板上实现。
图9主程序的流程图
3.2各子程序的流程图
3.21秒定时中断和按键中断
图10
3.22定时子程序
;函数名称:
DINGSHI
;功能:
开启定时器,接入时钟频率47KHZ入口参数:
无
;出口参数:
TIME0
;调试状态:
已调试
DINGSHIPROCNEAR
PUSHA
MOVDX,PORTC
MOVAL,80H
OUTDX,AL;给予GATE低电平,禁止计数
MOVTIME,0
MOVTIME_3,0
MOVTIME_10,0
MOVTIME_15,0;清除所有时间标志位
MOVDX,CNT0;计数器0端口地址
MOVAX,47000
OUTDX,AL
MOVAL,AH
OUTDX,AL;82540口工作在方式3情况下,产生1S的方波
MOVDX,PORTC
ORCL,81H
MOVAL,CL
OUTDX,AL;给予GATE高电平,重新开始计数
POPA
EXIT:
RET
DINGSHIENDP
3.23刷新显示子程序流程图:
图11
3.24干线通车转支线通车子程序流程图(当JIEGUO=4--7时转入该子程序)
N
Y
N
Y
N
Y
N
图12
说明:
其他部分如干线车行转入人行与此基本一致
4扩展功能的实现
由于时间和我们自身能力的问题,做起来有点吃力所以等我们吧基本功能做完以后时间就差不多了,所以没有做太多的扩展功能,只加了一个3秒黄灯提示的功能,其基本思想如下
当干线通车15秒和支线通车15秒结束以后我们加一个3秒黄灯的提示时间,这样会更加的安全
4.1黄灯过渡
a.支线黄灯过渡过渡3秒
MOVECX,STA5;支线通车结束黄灯过渡状态
MOVSTA,ECX
MOVTIME0,3
CALLDINGSHI
M5:
CALLCLOR_LED
CMPTIME_3,1;支线黄灯3s是否到达
JNZM5
MOVTIME_3,0
B.干线黄灯过渡3秒
MOVECX,STA4;干线通车结束过度状态,干线黄灯3s
MOVSTA,ECX
MOVTIME0,3
CALLDINGSHI
M3:
CALLCLOR_LED
CALLVOICE
CMPTIME_3,1;干线黄灯3s是否到达
JNZM3
MOVTIME_3,0
5测试结果及分析
5.1实验结果显示
在实验板上结果显示
根据题目的要求,通过调试运行程序,得到了不同状态的下实验箱上亮灯的各种情况如下:
(1)正常情况,干线通车亮绿灯,支线人行、干线人行,支线通车亮红灯如下图13
图13正常情况显示情况
(2)支线人行道通行,支线人行道绿灯,干线通车,支线通车亮红灯,维持10秒,结果如图14
图14支线人行道通行情况的显示
(3)干线人行道通行亮绿灯10秒,支线人行、干线通车,支线通车亮红灯,结果如图15
图15干线人行通行情况的显示
(4)支线通车亮绿灯,干线人行,干线通车,支线人行亮红灯,维持15秒如图16所示
图16支线通车情况的显示
(5)由干线通车转支线通车,干线通车先亮15秒绿灯再亮3秒黄灯再变为红灯,支线通车由红灯变为绿灯且维持15秒绿灯黄灯3秒、干支线人行道,支线人行亮红灯,结果如图17
图17干线转支线通车情况的显示
(6)由干线通车转支线人行,先经过干线15秒绿灯,再由干线3秒黄灯过渡到支线人行绿灯,干线变为红灯,结果如图18
图18干线通车转支线人行情况的显示
(7)由干线通车转干线人行,先经过干线15秒绿灯,再由干线3秒黄灯过渡到干线人行绿灯,干线变为红灯,结果如图19
图19干线通车转干线人行的情况显示
5.2系统详细操作说明
其中按键1-7表示对应的车辆数,按键8表示干线有人要通行,9表示干线有人闯红灯,A表示支线有人闯红灯,B表示支线车闯红灯,C表示支线有人要通行
三色LED灯从左到右第一个为支线人行时间显示,第二个为干线人行时间显示,第三个为干线通车显示;第四个为支线通车时间显示
其中初始状态为干线通车显示为绿灯,其他的显示为红灯,当干线有人按下键时即8键被按下时,干线开始转变为亮15秒绿灯,然后再亮3秒黄灯后变为红灯通时干线变为绿灯计时10秒,10秒结束后返回初始状态,当支线有键按下时即C键被按下时和干线被按下时同理,当4-7键被按下时表明支线车辆数大于等于4,要让支线通行,此时干线会亮15秒绿灯然后3秒黄灯后变为红灯,支线通车变为绿灯亮15秒,之后变为黄灯3秒后,返回初始状态,当按下9,A,B键时蜂鸣器会向同时led会亮起表示有人或车闯红灯。
5.3结果分析
根据以上的测试结果,课题的基本功能都实现了,但是还有很多不完善和有缺陷的地方,这里我们主要分析一下存在的问题。
第一个问题是我们的功能不完善,最明显的地方时当支路上的车小于4辆时,车要一直等待,对于这个问题我们开始也考虑到的,具体的方法解决方法是当支路等待时间达到30秒时就可以通车,没做的原因是我们本打算最后做的,但最后没时间了所以就没有加上去。
第二个问题是我们的定时不精确,比如定时15秒结果跑了17秒,这是因为我们的延时程序不准确,所以就导致了最后的计时不精确
最后就是我们没有什么扩展的功能除了3秒黄灯的提示外,这主要是因为我们自身的能力及时间的问题,我们以后会做得更好的。
这次总体来说不是特别的满意,虽然基本功能都实现了,但还是存在很多的问题和缺陷需要改进和完善。
6设计总结
6.1
在计算机硬件基础课程设计动员大会上,就听到老师说“交通灯管理系统这道题有点难度”,当时就暗想我会不会抽到那一题,结果在分配好组员后进行分配任务的时候,这道题果然还是花落我家。
拿到题目后,我们组成员都充分重视,很快我们就做好了任务分配和对课程设计的简单计划。
作为组长的我主要负责的是读懂课程设计任务书、构建相应的逻辑画出逻辑结构图及硬件连接电路图、理清期间的逻辑关系,构建程序的主体、承担实现利用三色LED数码管准确显示各种路面状态和定时中断等子程序,并负责根据主程序的需要分配子程序的编写任务,协调组员间工作的默契度。
在做为期将近两周的课程设计期间,让我学到很多也懂得很多。
把以前了解不深,或则不透彻的一些知识点在做这个的过程中,把他们搞懂了。
另外我深刻体会到一个好的团队氛围,对项目完成的重要性,当然在这个过程中也也遇到了许多问题。
如下:
首先,流程图的制作。
当我们第一天开始的时候就很尴尬,不知如何开始。
最后经过讨论,我们就一致决定先写出整个制作流程的各个要点,这样不仅有利于分工还能很清晰的做错整个的流程图一起把整个设计的流程图。
于是,我先根据自己的初步构想,绘制了程序流程图,然后将其与组员们讨论。
我们在讨论的过程中,不断的有新的问题产生,然后有别的组员发现,然后修正,才得到我们都觉得逻辑没得问题的完整程序流程图。
比如,在人行道通行完毕后,是否要先判断支线上车辆数目大于等于四辆,如果是,是否要让支线通车,再让干线通车;又如,不是很明白在干线通车时,如果支线有大于4辆车到,同时人行道又有响应时,该先进行哪一个,还有很多都是连线的问题。
等等,这些问题都是我们一起讨论并一步一步解决出来的。
然后,基本功能的程序编写过程。
鉴于流程图的制作过程中大家一起合作感受到比较容易完成,我们就根据我们组的实际情况,继续一起编程。
由于我们的流程如调理的清晰性和准确性,我们编写程序整体上是非常顺利的,我们只用了两天就完成了。
不过也遇到些问题,比如说,最开始是打算想用8255的中断查询功能来实现8254定时中断功能,但是由于忘记了相关管脚的特殊功能和用法,就需要了解如何选择响应的接口才能使其满足我们设计的要求,并且不影响我们拓展功能的实现。
这些都是需要我们重新熟悉的知识点。
计算机硬件技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。
讨论某一部分原理时又要涉及到其它部分的工作原理。
这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。
所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
虽然如此,我还是在尝试的过程中学习了不少8255的相关功能,收获不少。
整个课程设计做下来,大大小小的问题绝不止这些。
遇到问题我们先自己想想然后一起讨论,经过讨论大部分都得到了解决。
再不能解决的我们请教了老师和同学。
问题越多,说明我们学到了越多。
书本上的知识远远不能止于理论,我们工科的学生更是如此,只有在工程实践中才能发现更多,收获更多。
6.2
刚开始拿到课题的时候,我们对老师出题的意图进行了讨论,并且根据老师所提的要求都得到了自己的见解,最终大家在一起共同确定了交通灯功能的实现情况还有优先级,中间遇到的矛盾问题也找老师请教而得到了解决,比如人行道的交通灯红灯亮了之后是不是必须转到干线通车而不是要考虑支线车辆的情况,还有增加支线车辆闯红灯、主线支线黄灯等待等扩展功能。
在进行工作之前,我们首先拿起了计算机硬件基础的课本,毕竟比较久了,大家对指令还有芯片的功能都有一些生疏了,同时也在不懂的时候及时的请教我们组的组长唐晨轩同学,十分感谢他在这次课程设计对我们提供的帮助。
在本次课程设计之中,我们首先进行的就是程序流程图的设计,这是整个实现功能阶段的主心骨,所用的程序都要根据他来设计,也能让我们在编程时能够有条不紊。
在设计主程序流程图时,我常常会忽略一些重要的情况以及几个模块之间的关系主次性。
多亏组员和组长的相互探讨还有提出质疑才能设计出一个完整的程序流程图。
其次,运用了非常重要的思想就是模块化程序的设计,我们的交通灯系统设计中就设计了:
初始化程序、检测非支线交通灯状态模块、定时、延时、按键中断子程序等模块。
让自己对系统有了一个更加清晰的认识了解,更加认识到了在编制大程序的汇编语言程序时,采用模块化程序设计方法的必要性。
通过本次的课程设计我对为指令的设计和流程都有了更深的理解,进一步熟悉了计算机硬件技术原理的基本知识,同时也加深了解了模块化程序设计的基本过程,掌握了一些基本的软硬件设计知识并对其进行了基本的运用,在模块化程序设计中运用了很多知识,以及几块芯片8255、8254、8259来实现计数器、定时器、查询的功能等,即实现了对以往所学内容的复习,也让自己更加对他们的实际运用能力得到了增强,使自己比以前的动手能力与对课题的思考能力得到了增强。
这次的课程设计,我主要是负责检测非支线通车状态,支线车辆数还有延时程序的编程,虽然我们几个人负责了不同的模块,但是各个模块之间还是有关系的,所以必须在团队合作的基础之上我们才能够完成各个模块的无漏洞编程,比如非支线通车状态是我必须要涉及到报警模块,还有支线车辆数也涉及到延时程序,报警程序。
虽然各个模块式独立的,但并非没有关系。
所以对我这个编程不是很好的人来说
通过实践,提高了我的实际操作能力,从以前所学理论上升到实践,真正做到了学有所用,同时也认识到了自己的不足之处,对转移指令、芯片工作方式等都不是很熟悉,但是自己受益匪浅。
课程设计可以体现出团队合作程度,紧密合作加上明确分工,,能够大大地提高设计速度,在动手设计之前,最好将设计所需要的数据,程序准备好,为了判断设计结果是否正确,有必要在准备阶段计算理论值。
仔细分析指令的每一位,以及理清思路,在设计时做到胸有成竹。
实验中个人的力量是不及群体的力量的,我们同组三个人分工合作,做事的效率高了很多。
虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。
而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。
6.3
开学的第一周,我们接到了计算机硬件的课程设计任务,在经过简单的抽签分组后,确定了我们组的组长组员以及课程设计题目。
我们组的题目是交通管理系统的设计。
拿到任务书后,我们组组长和组员都对这次课程设计很重视,大家都明白这是我们对自己学习的一种检测,也是一次巩固的机会,同样也是一次理论结合实践的机会。
第一天,我们拿到题目后,就各自查资料,理解题意,最后再汇合大家的思想,讨论中我们的意见有些冲突,期间难免有些争执,但我们各自呈现彼此的理由,最终得出整体流程图,并对附加的功能作了一些讨论,并且得出了最后的结果。
在这之后,我们又确定了各自的分工,把每个人负责的模块进行了详细的分工,以确保我们组可以顺利的完成这次课程设计。
讨论完之后,确定了我的任务是负责初始化函数。
拿到任务之后。
我便着手开始了程序的编写,由于很久没看书了,所以在开始着手做的时候,难免遇到很多困难,我不得不又回头把遗忘了的知识温习了一遍,有很多知识点都忘记了,幸好我们组的组员都很优秀,在我遇到不懂时,我也会求助他们,他们会很虚心的给我讲解,如果他们不知道的,大家就会一起翻书或者查阅其他资料。
在经过了自己和组员们的一起努力后,我终于完成了我负责部分的程序的编写,经过这一次课程设计我深深的理解到了一只筷子容易被折断,而一把筷子不易被折断的道理。
完成了程序的编写之后,接下来便是程序的运行调试,中间多少遇到了一些问题,但是在我们共同的努力下都一个个完美的解决了,看着大家编写的程序把任务书上的功能以及我们自己附加的功能一一完成,一股莫名的成就感油然而生,同时也让我感受到了自己所学知识的用武之地。
这次课程设计,首先,让我学习和掌握计算机中常用接口电路及8255的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过实践,进一步加深了对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
经过此次的课程设计,我不但巩固了自己所学的知识,也学会了一些课外的知识,同时还体会到了团队合作的重要性,也加深了组员之间的相互了解。
总的来说,这是一件一举多得的事,对我下学期的毕业设计也会有一定的帮助。
在未来的工作中,我也必须不断的努力学习,才能把自己的事做的更好。
6.4
这次课程设计分到的是交通灯系统的设计(在实验板上面实现),要求实现任务书上基本的要求,并在基本要求的基础上完成功能的自主创新。
开始觉得这个项目就很难,果然实验的第一天就遇到了一些问题。
开始对基本要求的理解上我们四个就出生了分歧,我们对在人行道绿灯结束后,是否需要先行主干线,然后再行驶支线,不过通过我们的讨论和请
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通 系统 计算机硬件 课程设计 报告