硬件设计课程设计.docx

上传人:b****6 文档编号:7953144 上传时间:2023-01-27 格式:DOCX 页数:19 大小:316.09KB
下载 相关 举报
硬件设计课程设计.docx_第1页
第1页 / 共19页
硬件设计课程设计.docx_第2页
第2页 / 共19页
硬件设计课程设计.docx_第3页
第3页 / 共19页
硬件设计课程设计.docx_第4页
第4页 / 共19页
硬件设计课程设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

硬件设计课程设计.docx

《硬件设计课程设计.docx》由会员分享,可在线阅读,更多相关《硬件设计课程设计.docx(19页珍藏版)》请在冰豆网上搜索。

硬件设计课程设计.docx

硬件设计课程设计

 

 

 

 

计算机科学与技术学院

硬件课程设计报告(完整)

 

 

姓   名:

学 号:

姓   名:

学 号:

专   业:

                   

班   级:

       

设计题目:

       复杂交通灯指挥系统      

成   员:

              

指导教师:

             

职称:

          

             

 

 

       2011年 10月    徐州

 

 

 

 

 

 

 

摘要

 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

井然秩序的实现,靠的是交通信号灯的自动指挥系统。

交通信号灯控制方式有很多。

本系统采用8255A芯片实现了A口设置红、绿、黄灯点亮时间的功能,从而控制LED发光二极管实现红、黄、绿灯循环点亮。

另外结合日常生活经验,并且从亚残会中对残疾人的生活不便中得出感悟,采用8253进行控制扬声器,在红、绿灯变换之间黄灯闪烁时,同时添加了“声音提示"功能。

整个系统具有固定的“红灯—黄灯—绿灯”转换间隔,并自动切换,对东西南北方向的道路进行“自动”的控制。

但是,经过小组成员提出的各种假设,发现此系统需要加入更多人性化的元素:

交警可以根据实际的路面情况,针对不同的突发事件,进行手工控制红绿灯的转换。

例如救护车警车执行紧急任务;例如东西道路塞车,南北道路空闲无车辆行驶时,需要灵活调节红绿灯的转化。

通过8255并口控制,可以达到更加人性化的效果从而方便各种人群。

给8279的输入相应的数字,使数码管显示倒计时你数字,利用8279编码,实现热键的功能。

关键字:

8255交通灯控制82538279

 

 

 

 

 

 

目录

复杂交通灯的设计与编程实现1

一.需求分析:

1

1.1背景1

1.2需求规定1

二.可行性论证报告2

2.1基本设计内容分析2

2.2分析流程图2

2.3课程设计的设备及环境3

三.系统设计3

3.1基本功能设计3

3.2流程图4

四、硬件实现说明5

五、实验总结与体会7

六、参考资料9

复杂交通灯的设计与编程实现

一.需求分析:

1.1背景

制作一个十字路口的交通灯,用来实现指挥一个路口车辆行人的顺利安全通行。

编写一个交通灯控制程序,实现东西路口与南北路口状态灯的转换。

使用LED显示单元的两组LED数码管分别模拟十字路口的两组交通灯。

用红黄绿led灯来显示人行道行人的通过与停止情况。

由于行驶中的车辆要停下来要一些时间,要求绿灯亮后黄灯亮几秒,给人员足够的时间反应,然后等变为红灯。

应该有紧急情况处理机制,遇到一些特殊情况特殊需要时启动紧急键可以控制交通灯。

1.2需求规定

模拟十字路口的红绿灯,倒计时数码管显示。

交通灯的控制可分东西向和南北向两组,每组可用红、黄、绿三个灯进行交通管理,配合倒计时显示管构成简单的交通指挥系统。

红绿黄灯的具体设计如下:

A.南北路口红灯亮,东西路口绿灯亮,延时30秒,led数码管倒计时显示;

B.南北路口红灯亮,东西路口绿灯灭、黄灯闪烁,闪烁时会有3秒延时;

C.南北路口绿灯亮,东西路口红灯亮,延时30秒,led倒计时显示;

D.南北路口绿灯灭、黄灯闪烁,东西路口红灯亮,闪烁时会有3秒延时;

E.转到A

热键区设置

设置热键1,第一次按下,南北路口红灯灭、东西路口绿灯亮、并且led数码管倒计时显示停止,再次按下恢复原始状态。

设置热键2,第一次按下,东西路口红灯灭、南北路口绿灯亮、并且led数码管倒计时显示停止,再次按下恢复原始状态。

设置热键3,第一次按下,南北路口红灯亮、东西路口绿灯亮、并且led数码管倒计时显示停止,再次按下恢复原始状态。

设置热键4,第一次按下,南北路口黄灯亮、东西路口黄灯亮、并且led数码管倒计时显示停止,再次按下恢复原始状态。

二.可行性论证报告

2.1基本设计内容分析

选取两组红黄绿led灯作为东西方向和南北方向的交通灯,led灯的亮灭由8255进行控制,延时由8253实现,led数码管倒计时显示和热键设置由8279控制。

将8253的0端口和1端口进行进行级联实现1秒的延时。

将8255A的A口和B口设为输出方式,实现对红绿灯的控制。

8255A的C口为输入方式。

将8253输出信号输入到8255的C0端口,8255通过对C0端口输入信号的高低电平的判断,实现延时控制。

给8279的输入相应的数字,使数码管显示倒计时你数字。

利用8279编码,实现热键的功能。

2.2分析流程图

 

2.3课程设计的设备及环境

微型计算机原理与接口技术教学实验系统一台,计算机一台,排线若干

经上述的分析,此实验可以实现。

三.系统设计

3.1基本功能设计

如右图所示的交通灯路口

先初始化可编程器件8255和8253,设置初始值为30放在CX中用来计数(定为30秒),开始显示南北路口红灯亮,东西路口绿灯亮,延时30秒,led数码管倒计时显示,判断CX的值是否为0,不为0,则继续上一状态。

为0则转下一个状态南北路口红灯亮,东西路口绿灯灭、黄灯闪烁的状态,再判断计数值CX是不是=0,没有则继续显示这个状态,有的话进入下一个状态,从新设置初始值为30放在CX中用来计数,显示南北路口绿灯亮,东西路口红灯亮,判断计数值CX有没有=0.如果不等于0,则继续上一状态。

如果等于0则进入下一个状态南北路口绿灯灭、黄灯闪烁,东西路口红灯亮的状态,再判断计数值是不是=0,没有则继续显示这个状态,有的话转回到START继续执行,不停的循环来实现交通灯的功能。

3.2流程图

注:

有的流程图比如热键原理都是一样的,所以只画出一个流程图

四、硬件实现说明

整个设计总共需要三个芯片,分别为8253,8255,8279;设计的主要由8255芯片对系统进行整体控制。

8255芯片分析:

8255芯片图如下:

本设计通过对8255进行编码,实现8255控制红绿黄灯的亮或灭。

六个灯泡对应的端口如下表:

L7

L6

L5

L4

L3

L2

PA0

PA1

PA2

PA3

PA4

PA5

南北红灯

南北黄灯

南北绿灯

东西红灯

东西黄灯

东西绿灯

初始化:

************8255初始化

MOVDX,PORTCON;写8255控制字,A、B口均为方式0输出,

MOVAL,10000001B;c口高四输出,低四输入

OUTDX,AL

8279芯片分析:

8279芯片图如下

 

提供的实验箱中,8279已经与led七段数码管连接好,仅需要给8279片选信号,编码也很简单,只需要对8279进行初始化编程,然后向状态口输入要显示的数据,输入命令让8279显示即可。

而且8279与键盘也是内部连好的,只需要程序控制。

不过由于8279以前没接触过,刚开始还是有点困难。

初始化:

;************初始化8279

MOVDX,Z8279

MOVAL,LEDMOD

OUTDX,AL

MOVAL,LEDFEQ

OUTDX,AL

……….

……….

;************子程序

DISPLAY:

MOVDX,Z8279

MOVAL,90H

OUTDX,AL

七段码设定:

LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H,71H,76H

8253芯片分析:

本设计只用到了8253的两个端口0和1。

0端口的输入信号clk0为1MHz,1端口的输入信号clk1为out0。

将1端口的输出信号out1送到8255的C0端口。

首先要对8253初始化编程,然后对0和1端口分别送入计数初值,实现定时功能。

初始化及计数值:

DELAY:

;8253-1秒延时子程序

MOVDX,CONTROL

MOVAL,00110101B;通道0,工作于方式2

OUTDX,AL

MOVDX,COUNT0;通道0写入计数初值

MOVAL,00H

OUTDX,AL

MOVAL,10H

OUTDX,AL

MOVDX,CONTROL;写入控制字

MOVAL,01110001B;通道1,工作于方式0

OUTDX,AL

MOVDX,COUNT1;通道1写入计数初值

MOVAL,00H

OUTDX,AL

MOVAL,10H

OUTDX,AL

五、实验总结与体会

本次课程设计实现了用8253、8255和8279芯片完成了复杂的交通灯指挥系统。

经过了几个星期的不懈努力,总算是圆满的完成了任务。

刚开始接触实验的时候,感觉很简单,需求分析很快就能上手,根据老师的要求进行设计,很快就有了大体的思路。

8253与8255以前都学习过,看一下书基本都能回忆起来,第二节课我们就将8253与8255的初始化,以及大体的循环程序搞定。

8255是控制红绿灯的核心芯片,具体的与led灯的连接参见硬件分析。

这一部分可以是说最简单的部分了。

接着,便出现了一个问题。

数码管的显示与热键的设置。

这样一个没有倒计时的显示的交通灯系统是实现了。

但8279却是一个老大难问题,从来没有接触过,而且老师给的资料又太乱。

看着都头痛,于是开始求助XX、Google。

8279是提供显示功能的芯片,在网上搜到的一些资料,自己看的也稀里糊涂,不是很明白。

最后只有再次请教老师了,老师又给了一些资料,让自己看,我自己又到图书馆借了一本有关8279芯片的书。

经过若干天的学习,终于搞懂了一点点,知道怎样初始化芯片。

知道的数码管显示与热键的一些基本内容。

由于关于8279的资料大部分都是讲解键盘的,而我们还需要显示部分的,所以还是不太理解,还有一个原因以前汇编没学习好。

最后还是得请教老师,经过老师的分析,自己也更进一步的掌握了芯片。

最后终于实现了8279的显示功能,只不过只能显示一位。

这已经过去两周了。

第四周我们终于有了重大突破,班里有小组做电子时钟也需要使用8279,同样也要用到数码管的显示问题,他们采取了取余的方法,经过一番努力,最终我们也实现了双位显示。

这样,具有倒计时显示的简单红绿灯交通指挥系统就完成了。

最后就是热键问题,相比较前面而言,热键的设置是这一个系统的大头,但是由于之前搞数码管的显示,因此,在设置热键时就不像之前的那么迷茫,一周的时间就搞定了的基本的框架,中途也遇到了很多的麻烦,但是在许询问老师和同学之后,都一一解决了。

还帮了班级里其他小组的忙,呵呵,挺开心的。

通过此次课程设计,我们又重新温习了汇编语言,并对汇编语言有了更深一层的掌握,为以后应用汇编打下了良好的基础。

此外,还学会了8279芯片的应用,巩固了对芯片的编程能力,提高了自己的动手能力。

最后感谢老师在实验过程中对我们的指导,谢谢。

——余彬

本实验相对来说还是比较困难的。

刚开始设置8255和8253比较简单的,我们用了一节课的时间就已经完成了led灯的正常显示。

交通灯最难懂的是8279的键盘以及数码管显示,两节课在浑浑噩噩中度过,没办法就去图书馆找相关的资料,只要机房有课就来做实验,后来把数码管的显示给做好了,我非常高兴。

虽然8279是困难点,不过我在自己学习8279中获得了很多乐趣,我发现其实很多芯片可以自己去学习了,我们在学习中不仅要获得一些基础知识,更要学会的是学习的方法,如何去掌握、获取更多的芯片。

在学习8279的时候我一直拿着《微机接口与原理技术》这本书,学到了一些汇编语言的技巧,这些是我在课堂上不曾得到的知识。

在编程过程中要时刻注意一些细节,比如刚开始的PUSHcs,POPDS;虽然这两句话没觉得有什么用途,但是在8279的显示中是至关重要的。

其实有些编程需要技巧的,不如说数码管显示,如果只是0-9的倒计时是比较简单的,但这是两位数的倒计时,就需要实现个位与十位的分离,后来在老师的提示下,我用除法div将十位变成个位,将个位变成余数分别放入显示ram中,我们就成功了。

对于热键,我是参考一些资料,主要思想是如果按下此键如0BH,就设置一个循环,除非按下08H键,否则程序一直在循环。

在学习的过程中,我也会去利用我学到的知识帮助同学,这样可以加强我对芯片的了解,最终,我们的强大的交通灯实现了,很有成就感。

--朱成

六、参考资料

1、《微机原理与接口技术》周荷琴、吴秀清编著。

2、husy88te实验指导书

3、8279的相关资料

 

注:

源代码见附录

附录1:

流程图

附录2:

源代码

附录一:

附录二:

(源代码清单)

DATASEGMENT

PORTCONEQU20BH;8255控制寄存器地址

PORTAEQU208H;8255A口地址

PORTBEQU209H;8255B口地址

PORTCEQU20AH;8255C口地址

CONTROLEQU203H;8253控制寄存器地址

COUNT0EQU200H;计数器0地址

COUNT1EQU201H;计数器1地址

COUNT2EQU202H;计数器2地址

Z8279EQU212H;8279控制口

D8279EQU210H;8279数据口

LEDMODEQU00H;左边输入,八位显示外部译码八位显示

LEDFEQEQU38H;扫描频率

DATAENDS

;------------------------------------------

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

PUSHCS

POPDS

;************8255初始化

MOVDX,PORTCON;写8255控制字,A、B口均为方式0输出,

MOVAL,10000001B;c口高四输出,低四输入

OUTDX,AL

;************初始化8279

MOVDX,Z8279

MOVAL,LEDMOD

OUTDX,AL

MOVAL,LEDFEQ

OUTDX,AL

MOVDX,PORTA;亮南北红灯,东西绿灯

MOVAL,00011110B

OUTDX,AL

CALLDELAY;延时1秒

BEGIN:

;--------------------------------------------------

MOVCX,30;延时30秒

CYC0:

MOVDX,PORTA;亮南北红灯,东西绿灯

MOVAL,00011110B

OUTDX,AL

CALLH;使南北东西红灯亮

MOVDX,PORTA

MOVAL,00011110B;重置亮南北红灯,东西绿灯

OUTDX,AL

CALLDELAY

CALLDISPLAY

CALLI;使南北绿灯,东西红灯

MOVDX,PORTA

MOVAL,00011110B;重置亮南北红灯,东西绿灯

OUTDX,AL

CALLDELAY

CALLDISPLAY

LOOPCYC0

MOVCX,03H;延时3秒

CYC1:

MOVDX,PORTA;亮南北红灯,东西黄灯

MOVAL,00101110B

OUTDX,AL

CALLDELAY

CALLDISPLAY;延时3秒

LOOPCYC1

MOVCX,30;延时30秒

CYC2:

MOVDX,PORTA;亮南北绿灯,东西红灯

MOVAL,00110011B

OUTDX,AL

CALLH;使南北东西全红

MOVDX,PORTA;亮南北绿灯,东西红灯

MOVAL,00110011B

OUTDX,AL

CALLDELAY

CALLDISPLAY

CALLG;使南北红灯,东西绿灯

MOVDX,PORTA;重置,使南北绿灯,东西红灯

MOVAL,00110011B

OUTDX,AL

CALLDELAY

CALLDISPLAY

LOOPCYC2

MOVCX,03H;延时3秒

CYC3:

MOVDX,PORTA;亮南北黄灯,东西红灯

MOVAL,00110101B

OUTDX,AL

CALLDISPLAY

CALLDELAY;延时一秒

LOOPCYC3

JMPBEGIN;---------------------------------------------------

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DELAY:

;8253-1秒延时子程序

MOVDX,CONTROL

MOVAL,00110101B;通道0,工作于方式2

OUTDX,AL

MOVDX,COUNT0;通道0写入计数初值

MOVAL,00H

OUTDX,AL

MOVAL,10H

OUTDX,AL

 

MOVDX,CONTROL;写入控制字

MOVAL,01110001B;通道1,工作于方式0

OUTDX,AL

MOVDX,COUNT1;通道1写入计数初值

MOVAL,00H

OUTDX,AL

MOVAL,10H

OUTDX,AL

TC:

MOVDX,PORTC

INAL,DX

TESTAL,01H

JZTC

RET

;-------------------------------------------------------------------------------

DISPLAY:

MOVDX,Z8279

MOVAL,90H

OUTDX,AL

MOVAX,00H

PUSHCX

MOVAX,CX

MOVBL,0AH

DIVBL

MOVAL,AH

LEABX,LED

XLAT

MOVDX,D8279

OUTDX,AL

MOVAX,CX

MOVBL,0AH

DIVBL

LEABX,LED

XLAT

OUTDX,AL

MOVAL,00H

LEABX,LED

XLAT

OUTDX,AL

MOVAL,00H

LEABX,LED

XLAT

OUTDX,AL

MOVAL,00H

LEABX,LED

XLAT

OUTDX,AL

MOVAL,00H

LEABX,LED

XLAT

OUTDX,AL

MOVAL,00H

LEABX,LED

XLAT

OUTDX,AL

MOVAL,00H

LEABX,LED

XLAT

OUTDX,AL

POPCX

RET

H:

MOVAL,40H;写读FIFORAM命令字

MOVDX,Z8279

OUTDX,AL

MOVDX,D8279;读入FIFORAM内容

INAL,DX

CMPAL,0BH

JNZS2

MOVCX,30

MOVDX,PORTA

MOVAL,11110110B

OUTDX,AL

S1:

MOVDX,D8279;读入FIFORAM内容

INAL,DX

CMPAL,08H

JNZS1

S2:

RET

I:

MOVDX,Z8279

OUTDX,AL

MOVDX,D8279;读入FIFORAM内容

INAL,DX

CMPAL,00H

JNZI2

MOVCX,30

MOVDX,PORTA

MOVAL,00110011B

OUTDX,AL

I1:

MOVDX,D8279;读入FIFORAM内容

INAL,DX

CMPAL,08H

JNZI1

I2:

RET

G:

MOVDX,Z8279

OUTDX,AL

MOVDX,D8279;读入FIFORAM内容

INAL,DX

CMPAL,01H

JNZG2

MOVCX,30

MOVDX,PORTA

MOVAL,00011110B

OUTDX,AL

G1:

MOVDX,D8279;读入FIFORAM内容

INAL,DX

CMPAL,08H

JNZG1

G2:

RET

;----------------------------------------------------------------------------

LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB77H,7CH,39H,5EH,79H,71H,76H

CODEENDS

ENDSTART

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1