接口技术课程设计汽车信号灯控制系统综述.docx

上传人:b****1 文档编号:14718029 上传时间:2023-06-26 格式:DOCX 页数:23 大小:246.35KB
下载 相关 举报
接口技术课程设计汽车信号灯控制系统综述.docx_第1页
第1页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第2页
第2页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第3页
第3页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第4页
第4页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第5页
第5页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第6页
第6页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第7页
第7页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第8页
第8页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第9页
第9页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第10页
第10页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第11页
第11页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第12页
第12页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第13页
第13页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第14页
第14页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第15页
第15页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第16页
第16页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第17页
第17页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第18页
第18页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第19页
第19页 / 共23页
接口技术课程设计汽车信号灯控制系统综述.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

接口技术课程设计汽车信号灯控制系统综述.docx

《接口技术课程设计汽车信号灯控制系统综述.docx》由会员分享,可在线阅读,更多相关《接口技术课程设计汽车信号灯控制系统综述.docx(23页珍藏版)》请在冰点文库上搜索。

接口技术课程设计汽车信号灯控制系统综述.docx

接口技术课程设计汽车信号灯控制系统综述

华北科技学院

《接口技术》

课程设计报告

 

班级:

姓名:

设计题目:

汽车信号灯控制系统

设计时间:

2012-6-4至2012-6-15

指导教师:

评语:

_________________________________

_________________________________________

_________________________________________

_________________________________________

_________________________________________

评阅成绩:

评阅教师:

一、课程设计目的

1、掌握8255的基本工作原理和编程方法。

2、了解双色点阵LED显示器的基本原理,掌握PC机控制双色点阵LED显示程序的设计方法。

进行程序设计方法和芯片使用基本训练,巩固在课堂上学到的有关芯片初始化编程和使用的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉接口技术的原理及应用,达到能独立使用现有芯片编制程序并正确运行的水平。

二、课程设计内容

1.问题描述:

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

汽车左转 

汽车右转  

汽车出现紧急状况

汽车刹车 

汽车停靠

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

输入状态输出状态

左转左头灯,左尾灯,仪表左灯亮

右转右头灯,右尾灯,仪表右灯亮

紧急左右头灯,左右尾灯,仪表左右灯同时闪烁

刹车左右尾灯亮

左转+刹车左头灯,左尾灯,仪表左灯亮

右转+刹车右头灯,右尾灯,仪表右灯亮

刹车+紧急左右头灯,左右尾灯,仪表左右灯同时亮

左转+刹车+紧急左右头灯,左右尾灯,仪表左右灯同时亮

右转+刹车+紧急左右头灯,左右尾灯,仪表左右灯同时亮

停靠左右头灯,左右尾灯同时闪烁

当退出汽车系统时,在点阵LED显示器上双色显示“BYE”信息。

2.问题的解决方案分析

(1)通过6个发光二级管模拟两个头灯、两个尾灯和仪表盘上的两个指示灯。

(2)利用4个开关可产生的16种情况的前10种组合来分别模拟左转、右转、紧急,刹车,停靠的状态,使发光二极管信号灯相应亮、灭或闪烁。

(3)通过程序或者定时/计数器控制灯的闪烁频率。

考虑到程序设计比较简便,所以本次课程设计一旦涉及到信号灯的闪烁,都为程序控制。

在对任务需求进行详细分析以后,决定主要控制芯片采用实验箱上的8255A,由于本次设计中对信号灯闪烁的频率并没有严格的要求,所以就没必要采用8253来进行定时,采用程序来进行定时。

退出系统信息“BYE”则点阵LED显示器来控制。

3.系统的主要功能

(1)当用户置开关状态为01H时,也即左转,表左转开关闭合,则仪表左灯、左头灯、左尾灯同时亮,其他灯灭。

(2)当用户置开关状态为02H时,也即右转,表右转开关闭合,则仪表右灯、右头灯、右尾灯同时亮,其他灯灭。

(3)当用户置开关状态为03H时,表紧急开关闭合,也即出现紧急状态时,则所有灯闪烁。

(4)当用户置开关状态为04H时,表踩刹车(合上刹车开关),则左尾灯、右尾灯亮,其它灯灭。

(5)当用户置开关状态为05H时,表示汽车左转刹车,则仪表左灯、左头灯、左尾灯同时亮,其它灯灭。

(6)当用户置开关状态为06H时,表示汽车右转刹车,则仪表右灯、右头灯、右尾灯同时亮,其它灯灭。

(7)当用户置开关状态为07H时,表示汽车此时处于紧急刹车状态,则全部指示灯亮。

(8)当用户置开关状态为08H时,表示汽车此时处于左转紧急刹车状态,则全部指示灯亮。

(9)当用户置开关状态为09H时,表示汽车此时处于右转紧急刹车状态,则全部指示灯亮。

(10)当用户置开关状态为0AH时,表示汽车此时在停靠,则仪表左右灯灭,左右头灯亮,左右尾灯闪烁。

所以,可以设置实验箱上的6个发光二极管的对应情况为:

L0:

右尾灯L1:

左尾灯L2:

右头灯L3:

左头灯L4:

仪表右灯L5:

仪表左灯

通过4个开关(K0、K1、K2、K3的组合)产生的16种情况的前10种来作为输入选择,影响6个指示灯的输出,对应关系如下表:

 灯状态

开关状态

仪表左灯(L5)

仪表右灯

(L4)

左头灯

(L3)

右头灯

(L2)

左尾灯

(L1)

右尾灯(L0)

1左转(01h)

2右转(02h)

3紧急(03h)

4刹车(04h)

5左转+刹车(05h)

6右转+刹车(06h)

7刹车+紧急(07h)

8左转+刹车+紧急(08h)

9右转+刹车+紧急(09h)

10停靠(0Ah)

表1开关状态与灯状态对应表

(11)当用户退出该系统时,双色点阵LED显示器显示“BYE”字样,由实验箱上设有一个共阳极8×8点阵的红黄两色LED显示器,若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。

三、课程设计原理及原理图

1.并行I/O接口芯片8255

 

端口A:

PA0~PA7,A组,支持工作方式0、1、2

端口B:

PB0~PB7,B组,支持工作方式0、1

端口C:

PC0~PC7,仅支持工作方式0、A组控制高4位PC4~PC7、B组控制低4位PC0~PC3

硬件连接图:

2.双色点阵LED显示器

实验仪上设有一个共阳极8×8点阵的红黄两色LED显示器,其点阵结构如图所示。

该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。

若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。

如欲显示汉字,采用逐列循环发光。

“BYE”点阵代码:

①行代码输出99H;红色列代码输01H;第一列1个红色LED发光。

②行代码输出0FFH;红色列代码输02H;第二列5个红色LED发光。

③行代码输出0F0H;红色列代码输04H;第三列1个红色LED发光。

④行代码输出0FH;红色列代码输08H;第四列3个红色LED发光。

⑤行代码输出0F0H;红色列代码输10H;第五列5个红色LED发光。

⑥行代码输出0FFH;红色列代码输20H;第六列1个红色LED发光。

⑦行代码输出99H;红色列代码输40H;第七列3个红色LED发光。

⑧行代码输出0ffH;红色列代码输80H;第八列1个红色LED发光。

在步骤①~⑧之间可插入几ms的延时,重复进行①~⑧即可在LED上稳定的显示出红色“BYE”字。

若想显示黄色“BYE”,只需把红色列码改为黄色列码即可。

其设计布局如下所示:

 

接线方法:

行片选信号“行选”接280H;红列片选信号“红选”接288H;绿列片选信号“绿选”接290H,“WR”接总线区的“IOW”,“总线D7~D0”接总线区的“D7~D0”。

四、流程图

1、双色点阵显示流程图

2、汽车灯系统流程图

五、程序源代码

datasegment;数据段

prothequ280h

protlrequ298h

protlyequ290h

io8255aequ288H;8255的A口地址

io8255bequ289H;8255的B口地址

io8255cequ28aH;8255的C口地址

io8255conequ28bH

min1DB00h,01h,02h,03h,04h,05h,06h,07h

countdb0

BUFFDB99h,0ffh,0f0h,0fh,0f0h,0ffh,99h,0ffh;8255A的控制口地址

ctrdb'enterckeytocontinue!

',0ah,0dh;程序初始提示信息

db'enterotherkeystoexittodos!

',0ah,0dh,'$'

ctr01db'1.zuozhuanwan...',0ah,0dh,'$';左转弯时提示信息(以下类似)

ctr02db'2.youzhuanwan.....',0ah,0dh,'$'

ctr03db'3.jinjikaiguan.....',0ah,0dh,'$'

ctr04db'4.shache.....',0ah,0dh,'$'

ctr05db'5.zuozhuanwanshache.....',0ah,0dh,'$'

ctr06db'6.youzhuanwanshache.....',0ah,0dh,'$'

ctr07db'7.jinjishache.....',0ah,0dh,'$'

ctr08db'8.jinjizuozhuanshache.....',0ah,0dh,'$'

ctr09db'9.jinjiyouzhuanshache.....',0ah,0dh,'$'

ctr10db'10.tingkao.....',0ah,0dh,'$'

dataends

stacksegmentstack;堆栈段

stadw50dup(?

stackends

codesegment;代码段

assumecs:

code,ds:

data,es:

data,ss:

stack

mainprocfar

start:

pushds

subax,ax

pushax

movax,data

movds,ax

moves,ax

ccc:

movdx,offsetctr;显示提示信息

movah,09h

int21h

movah,01h

int21h

cmpal,'c';若输入'C',则继续执行,否则返回到DOS

jzeee

agn:

movcx,80h

d2:

movah,01h

pushcx

movcx,0008h

movsi,offsetmin1

next:

moval,[si]

movbx,offsetbuff

xlat;得到第一行码

movdx,proth

outdx,al

moval,ah

movdx,protlr

outdx,al;显示第一行红

moval,0

outdx,al

shlah,01

incsi

pushcx

movcx,0ffh;ffh

delay2:

loopdelay2;延时

popcx

loopnext

popcx

calldelay00

loopd2

moval,00

movdx,protlr

outdx,al

agn1:

movcx,80h;agn1为显示黄色

d1:

movsi,offsetmin1

movah,01

pushcx

movcx,0008h

next1:

moval,[si]

movbx,offsetbuff

xlat

movdx,proth

outdx,al

moval,ah

movdx,protly

outdx,al

moval,0

outdx,al

shlah,01

incsi

pushcx

movcx,0ffh;ffh

delay1:

loopdelay1

movcx,0ffh;ffh

delay3:

loopdelay3

popcx

loopnext1

popcx

calldelay00

loopd1

moval,00

movdx,protly

outdx,al

jmpagn

movax,4c00h

int21h

eee:

movdx,io8255con;给8255A送入方式控制字89H设置为A口输出,C口输入

moval,89h

outdx,al

movdx,io8255c;将4个开关的状态送入AL

inal,dx

movcx,0020h;设置循环次数

bb1:

cmpal,01h;将al的值依次与01H到0AH比较

jnzbb2;不是01H则转bb1执行,是则调用中断在屏幕上显示相应提示信息,顺序执行

movdx,offsetctr01;左转弯状态,实现六盏灯状态为:

闪、灭、闪、灭、闪、灭

movah,09h

int21h;调用09号中断,在屏幕上显示现在正处于左转弯状态

movdx,io8255a

left:

moval,11101010b;六盏灯状态为:

亮、灭、亮、灭、亮、灭(最高两位没影响)

outdx,al

calldelay0;调延时子程序

loopleft

jmpccc

bb2:

cmpal,02h

jnzbb3

movdx,offsetctr02

;右转弯状态,实现六盏灯状态为:

灭、亮、灭、亮、灭、亮

movah,09h

int21h

movdx,io8255a

right:

moval,11010101b;六盏灯状态为:

灭、亮、灭、亮、灭、亮

outdx,al

calldelay0

loopright

jmpccc

bb3:

cmpal,03h

jnzbb4

movdx,offsetctr03;紧急开关合上

movah,09h

int21h

movdx,io8255a

hurry:

moval,11000000b;六盏灯状态为:

闪、闪、闪、闪、闪、闪

outdx,al

calldelay0

moval,11111111b

outdx,al

calldelay0

loophurry

jmpccc

bb4:

cmpal,04h

jnzbb5

movdx,offsetctr04;刹车

movah,09h

int21h

movdx,io8255a

break:

moval,11000011b;六盏灯状态为:

灭、灭、灭、灭、亮、亮

outdx,al

calldelay0

loopbreak

jmpccc

bb5:

cmpal,05h

jnzbb6

movdx,offsetctr05;左转弯刹车

movah,09h

int21h

movdx,io8255a

leftbreak:

moval,11001010b;六盏灯状态为:

亮、灭、亮、灭、亮、灭

outdx,al

calldelay0

loopleftbreak

jmpccc

bb6:

cmpal,06h

jnzbb7

movdx,offsetctr06;右转弯刹车

movah,09h

int21h

movdx,io8255a

rightbreak:

moval,11000101b;六盏灯状态为:

灭、亮、灭、亮、灭、亮

outdx,al

calldelay0

looprightbreak

jmpccc

bb7:

cmpal,07h

jnzbb8

movdx,offsetctr07;紧急刹车

movah,09h

int21h

movdx,io8255a

hurrybreak:

moval,11111111b;六盏灯状态为:

亮、亮、亮、亮、亮、亮

outdx,al

calldelay0

loophurrybreak

jmpccc

bb8:

cmpal,08h

jnzbb9

movdx,offsetctr08;紧急左转刹车

movah,09h

int21h

movdx,io8255a

hurryleftbreak:

moval,11111111b;六盏灯状态为:

亮、亮、亮、亮、亮、亮

outdx,al

calldelay0

moval,11011111b

outdx,al

calldelay0

loophurryleftbreak

jmpccc

bb9:

cmpal,09h

jnzbb10

movdx,offsetctr09;紧急右转刹车

movah,09h

int21h

movdx,io8255a

hurryrightbreak:

moval,11111111b;六盏灯状态为:

亮、亮、亮、亮、亮、亮

outdx,al

calldelay0

moval,11101111b

outdx,al

calldelay0

loophurryrightbreak

jmpccc

bb10:

cmpal,0ah

jnzbb11

movdx,offsetctr10;停靠

movah,09h

int21h

movdx,io8255a

stop:

moval,11001100b;六盏灯状态为:

灭、灭、亮、亮、闪、闪

outdx,al

calldelay0

moval,11001111b

outdx,al

calldelay0

loopstop

jmpccc

bb11:

jmpccc

ret

mainendp

delayprocnear;延时子程序

pushcx

movcx,0ffffh

pp:

looppp

popcx

ret

delayendp

delay0procnear;延时子程序

pushcx

pushax

movcx,0080h

pp0:

calldelay

looppp0

popax

popcx

ret

delay0endp

DELAY00PROCNEAR;延迟子程序

pushcx

movcx,0ffh;ffh

cccc:

loopcccc

popcx

ret

DELAY00ENDP

codeends

endstart

六、结果

通过不断地对程序进行调试和上机验证,最终利用4个开关组合成10种不同的组合状态来模拟汽车信号灯10种不同的状态,初步实现了预期任务要求对应的灯亮、灭、闪的不同情况。

由于有10种不同的状态,这里只显示在第十种情况下的截图,当开关K0到K3为1010即0AH时,此时的功能是停靠,相对应的左右前灯亮即L2、L3灯亮,其结果如下所示:

系统总接线及停靠时汽车灯亮灭情况图

当继续进行测验时,在键盘上按“C”继续进行汽车信号灯测验;当按其他任意键退出信号灯测验,相应的进入双色点阵显示,此时机箱上会红绿交替“BYE”字样,其运行效果如下所示。

 

双色点阵红绿显示

七、课程设计总结及体会

本次课程设计主要设计了一个汽车信号灯控制系统,虽然实现了原本预期的各种控制状态,不过程序还有待优化、改进,比如实验中的灯亮灭的情况延时保持一段时间后,返回到主程序中在屏幕上显示提示语句,不过此时灯的状态还是保持(返回前应该将灯全熄灭)。

要再手动拨动开关成其它状态然后按下C键才能变化成另一种汽车状态,这样操作起来比较麻烦。

还有,该系统的使用者得去记住各个开关组合所表示的汽车状态,不够人性化,应该进一步改进成用单个开关对应一种汽车状态的情况。

此系统主要通过8255A的A口和C口模拟汽车信号灯的亮灭闪烁情况。

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

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

我们通过课本了解到了各个芯片的引脚及功能、工作方式、内部结构和控制字和双色点阵LED显示器的基本原理及PC机控制双色点阵LED显示程序的设计方法。

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

然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流程,先画出了流程图,然后对代码进行编写,主要采用汇编语言。

最后联系实验室的老师在实际的实验箱上对程序,硬件电路进行调试。

在调试过程中遇到了很多问题,有些问题在同学和老师的帮助下得以解决。

经过这段时间的课程设计,最终实现了该汽车信号灯控制系统,感到特别的欣慰,期间获益颇多。

将微机接口技术中的理论与实践相结合起来,对芯片的功能也有了进一步认识理解,重温了汇编语言的编程。

在实验调试过程中发现问题,分析问题,如何解决问题的能力都有所提高,这对我们不久将来离开学校,投入实际工作都是很有借鉴意义的。

希望通过以后的学习,不断提升自身各方面的能力,如对专业知识的掌握程度,动手实践能力等。

经过此次的课程设计,要形成自己的设计思想,以便在今后的专业课形成自己的风格。

同时在多多锻炼自己的动手能力,以便在以后的工作能独立完成一些设计项目。

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2