课程设计报告Word文件下载.docx

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

课程设计报告Word文件下载.docx

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

课程设计报告Word文件下载.docx

6.2源程序及注释9

6.3使用元器件一览表14

6.4参考文献14

一.前言

1.1设计背景

汽车信号灯的作用是大家所熟知的,汽车通过显示不同的信号灯来告诉前后左右的行车者本汽车正在进行的操作。

如果不能正确识别汽车信号灯的表示的含义,就不能了解开车者的意图,就很有可能会造成交通事故。

据报道,每年有20多万起交通事故,并且每年有近9万人因为交通事故死亡。

所以,我们应该普及交通法规知识。

我们设计这个汽车信号灯有助于帮助我们了解汽车信号灯的工作原理,也帮助我们学习部分交通安全法规。

在什么样的情况下应该打出怎样的信号灯。

1.2系统设计目的

1、了解汽车信号灯的控制原理。

2、掌握8086CPU和并行接口芯片8255A、8254逻辑功能及使用方法。

3、掌握一定的汇编语言知识,培养自己的动手操作能力。

4、学习程序设计的基本思路和方法。

1.3设计任务与要求

1.以8086CPU为核心、并行接口芯片8255A、4个逻辑电平开关和8个发光二极管设计一个汽车信号灯控制系统

2.该系统通过开关控制的信号灯有汽车左转、汽车右转、汽车出现紧急状况、汽车刹车、汽车停靠等十类灯.

二.总体方案设计分析、讨论

2.1总体方案设计分析

2.1.1问题描述分析

问题描述分析:

汽车行驶时一共有五种状况:

汽车左转 

汽车右转 

汽车出现紧急状况

汽车刹车 

汽车停靠

在进行课程设计时,可以考虑到9种组合模式如下:

输入状态输出状态

00001000汽车左转弯头灯和尾灯闪烁

00000001汽车右转弯头灯和尾灯闪烁

00000010汽车刹车,刹车头灯和尾灯亮

00000100汽车出现紧急情况,左右转弯头灯和尾灯均闪烁

00001010汽车左转时刹车,左转弯头灯和尾灯闪烁,刹车灯亮

00000011汽车右转时刹车,右转弯头灯和尾灯闪烁,刹车灯亮

00000110汽车出现紧急情况刹车,左右转弯头灯和尾灯闪烁,刹车灯亮

00001111汽车已经停靠,所有灯亮,没有闪烁,并退出系统

其他情况错误。

所有灯均不闪烁也不亮

2.1.2问题的解决方案分析

通过对以上问题描述的深入分析,我们可以总结出以下几点:

1.通过8个发光二极管,分析模拟两个转弯头灯、两个转弯尾灯、四个刹车灯。

2.利用4个拨码开关,可以产生16种情况,我们实际需要9种情况来分别模拟上述问题中提到的9种情况,开关的其他情况均显示为错误情况。

3.由于要求灯闪烁的频率为1Hz,所以我们讨论了使用程序还是定时/计数器来控制频率,经过综合讨论,为了更加精确地控制频率,所以决定使用加入8254来控制灯闪烁的频率,而放弃使用程序控制。

2.2系统的主要功能

灯状态

开关状态

左头灯(L7)

左刹车灯(L6)

右刹车灯(L5)

右头灯(L4)

左尾灯(L3)

左刹车尾灯(L2)

右刹车尾灯(L1)

右尾灯(L0)

00001000

00000001

00000010

00000100

00001010

00000011

00000110

00001111

其他情况

表1.汽车信号灯状态表

三.详细设计

3.1硬件设计

3.1.1芯片选择

根据课题所要实现的功能,结合所学的知识进行分析,系统要用到8086微处理器芯片和可编程的并行接口芯片8255A和可编程定时/计数器8254。

8086是Intel系列的16位微处理器,它有16根数据线和20根地址线,本系统采用它作为处理器。

8255是可编程I/O口扩展芯片。

对8255输入不同的指令可改变I/O口的工作方式。

8255内部有4个寄存器:

分别为寄存器A、B、C和控制寄存器。

A、B、C寄存器的数据就是引脚PA7~PA0、PB7~PB0、PC7~PC0上输入或输出的数据。

而控制寄存器的数据则表明PA、PB、PC的工作方式。

通过CS、A0、A1、RD和WR对4个寄存器进行操作。

(1)CS为低电平时选通8255;

(2)A1、A0为地址选通;

(3)RD和WR为读、写信号:

RD为低、WR为高时为读方式,RD为高、WR为低时为写方式。

(4)D0~D7为数据口。

向控制寄存器写入不同的数据可以使8255工作在三种不同的方式下。

8254有3个计数器,计数器的计数频率是2~10MHz,每个计数器都可以按照二进制或十进制计数,每个计数通道都有6种工作方式,可由程序设置或改变,所有输入/输出引脚都与TTL兼容。

3.1.2系统电路图

3.1.3电路图说明分析

由于我们使用了8255和8254两个芯片,所以,在系统总线中使用两个端口地址,分别是IOY0和IOY1。

两个地址分别是3000H和3040H。

我们把这个地址分别接在8255和8254两个的片选(CS)端。

同时系统总线的A2,A3端都接到8254和8255的A0,A1端口;

系统总线的/XIOR,/XIOW端口分别接到8255和8254的/RD,/WR端口。

系统总线的XD0~XD7端口接到8254和8255的AD0~AD7。

因为8254是用来计时的,所以8254的CLK2接时钟源的1.8432MHz,OUT2接到CLK0,OUT0接到8255的PC0,GATE2和GATE0都接+5V。

同时,8255的A端口作为输出,B、C端口作为输入,所以A端口接LED显示单元,B端口接拔码开关,因为只用到PC0,所以C端口的其他输入都接地。

3.2软件设计

3.2.1程序流程图

四.系统调试与实现

4.1实验步骤

(1)准备好PC机、实验箱和导线若干。

(2)用导线按照事先画好的实验电路图将以上各个实验电路模块连接起来,就是硬件控制的汽车信号灯控制系统。

(3)在PIT++程序中编写程序。

(4)汇编调试、运行。

(5)记录运行结果,以及调试中遇到的问题。

4.2调试结果与分析

在调试过程中,我们遇到了很多情况,通过我们不断地调试、修正,最终还是成功了。

现在说一下我们遇到的情况:

1.硬件连接。

刚开始,我们没有使用8254来延时,使用软件延时,经过再次查看课程设计指导书,发现要求使用1Hz频率,所以觉得用软件延时不精确,就确定采用8254来使用硬件延时。

在第一次的时候没有成功,以为是延时错误,但是经过模块调试后发现延时没有错误,再仔细排查再发现是硬件连接错误,因为引脚默认为高,而我们在判断的时候要求是低。

所以当我们把其他引脚接低的时候,就正确了。

2.程序退出。

在最开始的时候,我们就注意到一个完整的程序应该能控制退出,但是到后来,经过几次调试验证,整个程序都变成了死循环,无法正常退出了。

最后,我们通过分析程序运行的情况,发现可以通过停车的情况时,跳转到QUIT标号然后就可以退出程序了。

3.程序优化。

在一开始时,我们的程序代码冗长,看起来不好看,并且没有注释清楚,给阅读程序增加了一定难度。

所以,我们通过对代码的优化,增加了一些注释,使程序更加清楚,容易阅读。

五.总结

5.1课程设计小结

本次课程设计是我们小组是要设计一个汽车信号灯控制系统,主要通过8255A模拟汽车信号灯的亮灭闪烁情况,闪烁的频率使用8254来控制。

通过本次的设计以此来加深对微机接口技术的理解,提高了自己的动手能力。

首先我们小组是着手对硬件电路的设计,本次课程设计主要采用了8255A和8254接口电路。

我们通过课本了解到了各个芯片的引脚及功能、工作方式、内部结构和控制字。

对各个功能的熟悉便于了硬件电路的设计。

然后就是对程序的设计,通过这次课程设计,我们知道了,想要设计出一个完整实用的控制系统需要弄懂程序流程,要对课程设计的要求进行需求分析,而且必须先画出了流程图,然后对代码进行编写、总结、优化,最终才能实现我们想要的目的。

最后,就是通过这次课程设计,不仅巩固了我们的理论知识,使我们更加透彻过理解了书本上的内容,还增加了我们对硬件的了解,了解了要设计一个系统需要经过哪些步骤,对我们以后的发展有很大的帮助。

5.2课程设计体会

经过一周的努力,我们终于完成了这次课程设计。

虽然遇到不少的困难,但是我们都坚持下来了,并且努力去解决我们所遇到的困难。

比如,我们常常在调试的过程中发现要不灯不亮,要不灯不闪,这就需要我们去进一步调试,找出是因为什么原因导致不亮或不闪的。

并且,我们为了更加精确地去控制灯光的闪烁频率,放弃使用不准确的软件延时,而改进使用硬件控制,一方面体现了我们追求课程设计的完整性,另一方面也体现了我们的迎难而上的品质。

当然,本次课程设计的结果还是有一定的缺陷,如在显示屏上显示当前运行状态时始终是1s显示一次,就算是同一个状态也是重复显示,需要改进为如果是相同状态,只需要显示一次就好。

总之,我们顺利完成了这次课程设计,也学到了很多东西,这些是不能从课本上学到的。

我们都有很大收获。

六.附录

6.1电路原理图

6.2源程序及注释

IOY0EQU3000H;

片选IOY0对应的端口始地址

MY8255_AEQUIOY0+00H*4;

8255的A口地址

MY8255_BEQUIOY0+01H*4;

8255的B口地址

MY8255_CEQUIOY0+02H*4;

8255的C口地址

MY8255_MODEEQUIOY0+03H*4;

825的控制寄存器地址

IOY1EQU3040H;

片选IOY1对应的端口始地址

MY8254_COUNT0EQUIOY1+00H*4;

8254的计数器0地址

MY8254_COUNT1EQUIOY1+01H*4;

8254的计数器1地址

MY8254_COUNT2EQUIOY1+02H*4;

8254的计数器2地址

MY8254_MODEEQUIOY1+03H*4;

8254的控制寄存器地址

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

STR1DB0AH,0DH,'

TURNINGLEFT...'

0AH,0DH,'

$'

;

输出信息:

左转弯

STR2DB0AH,0DH,'

TURNINGRIGHT...'

右转弯

STR3DB0AH,0DH,'

EMERGENCY...'

紧急情况

STR4DB0AH,0DH,'

BREAKING...'

刹车

STR5DB0AH,0DH,'

TURNINGLEFTANDBREAK...'

左转且刹车

STR6DB0AH,0DH,'

TURNINGRIGHTANDBREAK...'

右转且刹车

STR7DB0AH,0DH,'

EMERGENCYANDBREAK...'

紧急且刹车

STR8DB0AH,0DH,'

ERROR!

...'

错误

STR9DB0AH,0DH,'

STOP...'

停止

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK1

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVES,AX

CONTINUE:

MOVDX,MY8254_MODE;

初始化8254

MOVAL,0B6H;

计数器2,方式3

OUTDX,AL

MOVDX,MY8254_COUNT2;

装入计数初值

MOVAL,64H;

100分频

MOVAL,00H

MOVDX,MY8254_MODE

MOVAL,36H;

计数器0,方式3

MOVDX,MY8254_COUNT0;

MOVAL,00H;

18432分频

MOVAL,48H

MOVDX,MY8255_MODE;

初始化8255

MOVAL,10001011B;

A口输出,方式0;

B口输入,方式0;

C口(低四位)输入10001010

MOVDX,MY8255_B;

读取8255端口B内容

INAL,DX

LEFTM:

;

CMPAL,00001000B

JNZRIGHTM;

不为0,则跳转至RIGHTM

MOVDX,OFFSETSTR1;

将STR1的偏移地址送给DX

MOVAH,09H;

输出显示字符串内容

INT21H

MOVDX,MY8255_A

LEFT:

MOVAL,10001000B;

控制左头灯和左尾灯亮

OUTDX,AL;

输出到A端口显示

CALLTST;

调用下降沿子程序,

MOVDX,MY8255_A

MOVAL,00H;

控制左头灯和左尾灯灯灭

CALLTST

JMPCONTINUE;

程序结束,无条件跳转回CONTINUE

RIGHTM:

CMPAL,00000001B

JNZEMERM

MOVDX,OFFSETSTR2

MOVAH,09H

INT21H

MOVCX,0001H

RIGHT:

MOVAL,00010001B

MOVAL,00000000B

JMPCONTINUE

EMERM:

;

CMPAL,00000100B

JNZBREAKM

MOVDX,OFFSETSTR3

EMER:

MOVAL,10011001B

BREAKM:

CMPAL,00000010B

JNZLBREAKM

MOVDX,OFFSETSTR4

BREAK:

MOVAL,01100110B

LBREAKM:

;

左转弯且刹车

CMPAL,00001010B

JNZRBREAKM

MOVDX,OFFSETSTR5

LBREAK:

MOVAL,11101110B

RBREAKM:

右转弯且刹车

CMPAL,00000011B

JNZEBREAKM

MOVDX,OFFSETSTR6

RBREAK:

MOVAL,01110111B

EBREAKM:

CMPAL,00000110B

JNZSTOPM

MOVDX,OFFSETSTR7

EBREAK:

MOVAL,11111111B

STOPM:

CMPAL,00001111B;

当四个控制开关全部为1时,车停靠

JNZNEXT

MOVDX,OFFSETSTR9

MOVAH,09H;

显示“STOP”信息

STOP:

MOVAL,11111111B;

所有信号灯全亮

JMPQUIT;

当四个控制开关全部为1,程序结束,退出整个系统

NEXT:

其余情况,显示出错提示

MOVDX,OFFSETSTR8

JMPCONTINUE

RET

QUIT:

程序结束

MOVAX,4C00H

TSTPROCNEAR;

下降沿检测子程序

MOVDX,MY8255_C

HEAD:

INAL,DX;

检测C端口状态

CMPAL,00000001B;

判断端口C的引脚PC0是否是下降沿

JZTSTT;

若是,则跳转

JMPHEAD;

否则,程序跳回继续检测C口状态

TSTT:

读取C口状态,判断是否还是高电平

若是,继续输出高电平,延时1S

TSTENDP

CODEENDS

ENDSTART

6.3使用元器件一览表

序号

名称

型号

规格

数量

备注

1

可编程并行接口芯片

8255A

0648XD006

2

定时/计数器

8254C

0338H2685

6.4参考文献

[1]何宏主编《微型计算机原理与接口技术》[M].天津大学出版社2007.3

[2]何宏主编《微型计算机原理与接口技术》[M].西安电子科技大学出版社2009.4

[3]《32位微机原理及接口技术实验教程》西安唐都科技仪器公司.2009

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

当前位置:首页 > 幼儿教育 > 家庭教育

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

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