微机原理课程设计交通灯.docx

上传人:b****5 文档编号:7732809 上传时间:2023-01-26 格式:DOCX 页数:15 大小:262.13KB
下载 相关 举报
微机原理课程设计交通灯.docx_第1页
第1页 / 共15页
微机原理课程设计交通灯.docx_第2页
第2页 / 共15页
微机原理课程设计交通灯.docx_第3页
第3页 / 共15页
微机原理课程设计交通灯.docx_第4页
第4页 / 共15页
微机原理课程设计交通灯.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

微机原理课程设计交通灯.docx

《微机原理课程设计交通灯.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计交通灯.docx(15页珍藏版)》请在冰豆网上搜索。

微机原理课程设计交通灯.docx

微机原理课程设计交通灯

二○一一~二○一二学年第二学期

信息科学与工程学院

课程设计报告书

 

课程名称:

微机原理课程设计

班级:

电子信息工程2009级6班

学号:

200904135150

姓名:

张强

指导教师:

徐守明

二○一二年二月二十日

十字路口交通灯控制系统设计

一、摘要

随着现代科学技术的进步,自动化控制技术越来越多地被运用到生产生活当中。

现代交通的发展,对自动化控制技术也提出了较高的要求,如何科学有效对交通流量进行管理,已成为一项社会课题。

在课程设计的背景下,本系统运用了8255和8253芯片,基于8086CPU实现了通过B口控制南北东西方向的红绿灯的循环点亮,实现了对交通流量的模拟协调调度。

另外,本系统还有手动测试功能。

关键词:

交通灯;8255;8253;LED;模拟控制

Keywords:

trafficlight;8253;8255;LED;analogcontrol

二、设计任务及要求

利用“微机实验系统”的8255可编程接口的A口(PA7-PA0)、B口(PB7-PB0)、C口(PC7-PC0)控制发光二级管(红、绿灯)的L1-L8和开关KK1-KK2,使发光二级管按照十字路口交通灯的规律交替发光,模拟交通信号灯的工作。

●发光二级管(LED)显示电路

①8个LEDL1-L8,4个红灯、4个绿灯

②L=0LED亮;L=LED灭

●开关对交通灯的控制

①开关KK2=0红灯皆亮;开关KK2=1绿灯皆亮

②开关KK1=0启动交通灯的亮灭;开关KK1=1停止交通灯的亮灭(所有发光二级管皆灭)

●交通灯亮灭规律参考

2北方向绿灯亮、东西方向红灯亮20秒

②南北方向红灯亮、东西方向绿灯亮20秒

●适当地加一些额外功能

重复上述过程

注:

20秒定时由8253控制

三、总体设计思路

 

 

说明:

其中KK3用于管理开关KK1、KK2;

分析题意,红绿灯可直接接在8255的A、B、C任意一个口上,灯的亮灭可直接由8086输出0,1控制;开关用于控制红绿灯的工作状态,可以从A、B、C任意一个口进行读进判断;八段数码管的倒计时显示部分的位码有74LS273进行输入,段码则是经过8255端口输出。

(一)定时方案选择评估

方案一:

可利用8253定时计数器的工作方式0,使用查询方式,当计数(0.1S)到了的时候,从而产生0.1S的延时子程序,通过循环调用产生20S的延时。

这种方法理论上是可行的,不过在实际操作过程中,由于只是单次变化,难以观察测试;

方案二:

利用8253的定时计数器的方式3输出方波,通过级联的方式,产生周期为2S的方波,通过查询的方式,使在每个电平期间,使每10个周期的方波红绿灯工作在一种状态,实现了红绿灯的20秒延时。

这种方式延时较长,易于观察,而且相对稳定。

通过比较,我最终选择了方式2,使用了8253定时计数器产生周期为2S的方波,用于20S延时。

(二)开关控制设计思路

开关控制思路如下框图:

 

启动相应的开关后,开关控制相应的工作状态;

(三)数码管20秒倒数显示

实验过程中用到的八段数码显示器实际上是接口芯片8279的一部分,这次实验也只用到了八段数码管,因此无须对8279进行初始化方式选择。

显示的原理如下:

段码

位码

 

(四)系统原理

通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。

红灯(RLED)、绿灯(GLED)分别接在8255的B口的8位端口。

8086工作在最小模式,8255片选端接到CPU的选片段CS0,A、B口作为输出口,C口作为输入口,8255的C口的第一二、四位接到开关K1、K2、K3,第三位接到C口第三位,用于检测电平;8253片选端接到CPU的选片段CS1,通过级联的方式输出需要的方波信号;74LS273片选端接到CPU的选片段CS2,用于锁存位码。

红绿灯的转换由软件编程实现。

四、硬件设计

以下为硬件电路图,其中8255片选端接到CS0,PA口接到数显管的段码输出端口LED-A至LED-G,B口接到LED灯的电平输入口,C口的PC0、PC1和PC3接到K1、K2、K3;8253接到CS1,GATE0和GATE1接到+5V电平,8253clk0接到375KHZ的CLK4,out0接clk1,out1接到PC2;74LS273的片选端接到CS2,D0至D5接到八段数显管的位码输入端LED1至LED6。

软件设计

开关控制的流程框图在开关控制设计思路已做介绍,下面着重介绍交通灯正常工作的延时流程图:

 

 

该程序要实现的功能可分为外接芯片初始化部分、开关判断部分、延时部分、电平以及数码管显示部分。

(一)芯片初始化:

movdx,04a6h

;8255初始化

moval,10001001b

outdx,al

movdx,04a0h

moval,0ffh

outdx,al

movdx,04b6h

;初始化8253,产生2S的方波

moval,00110110b

outdx,al

movax,37500

movdx,04b0h

outdx,al

moval,ah

outdx,al

movdx,04b6h

moval,01110110b

outdx,al

movdx,04b2h

movax,20

outdx,al

moval,ah

outdx,al

movdx,04a2h;熄灭所有led灯

moval,0ffh

outdx,al

(二)开关判断部分:

D1:

movdx,04a4h

inal,dx

testal,08h

jzKK1

;若开关3有变化,跳回KK1

KK2:

movdx,04a4h

;KK2控制开关全红或者全绿

inal,dx

testal,08h

;判断是否开关3有没有变化

jzKK1

movdx,04a4h

inal,dx

testal,02h

jzZ1

jnzZ2

Z2:

moval,01010101b;使开关全绿

movdx,04a2h

outdx,al

jmpKK2

Z1:

moval,10101010b

;使开关全红

movdx,04a2h

outdx,al

jmpKK2

KK1:

;启动控制交通灯的控制开关

movdx,04a4h

;判断开关KK3是否又有变化

inal,dx

testal,08h;

jnzKK2

movdx,04a4h

inal,dx

testal,01h

jzST

movdx,04a4h

moval,0ffh

outdx,al

jmpKK1

(三)、1S延时子程序

;检测电平变化,判断是否秒加一

DECT:

pushsi

;堆栈保护进行地址保护

DECTread:

callDISPLAY

;调用显示子程序

leasi,dianping

movah,[si]

andah,1

movdx,04a4h

;判断电平,若有跳变则[si]+1

inal,dx

roral,1

roral,1

andah,1

cmpal,ah

jzDECTread

mov[si],al

popsi

ret

(四)交通灯正常工作电平控制部分

ST:

P:

movdx,04a4h

;再次判断开关KK3是否改变

inal,dx

testal,08h

jnzKK2

movdx,04a4h

;读取启动开关的电平,若开关为低,则启动交通灯

inal,dx

testal,01h

jnzdone

pushsi

leasi,WOS

moval,[si]

testal,01h

jzEW

jmpSN

done:

movdx,04a2h

;若KK1为1,则全部熄灭

moval,0ffh

outdx,al

jmpP

 

SN:

movdx,04a2h

;南北方向的红灯亮

moval,01011010b

outdx,al

callDECT

pushsi

leasi,LT

moval,[si]

cmpal,0

jzOSN

;20秒计数到了

decal

mov[si],al

pushbx

movbl,10

divbl

leasi,DAT

mov[si+1],al

moval,ah

mov[si],al

popbx

popsi

jmpP

 

OSN:

pushsi

;判断跳到东西南北的标志位

leasi,WOS

moval,0

mov[si],al

popsi

pushsi

leasi,LT

moval,20

mov[si],al

leasi,DAT

pushbx

movbl,10

divbl

mov[si+1],al

mov[si],ah

popbx

popsi

K2:

jmpP

;跳的步数太多,分多次跳

 

EW:

movdx,04a2h

;东西方向的红灯亮

moval,10100101b

outdx,al

callDECT

pushsi

leasi,LT

moval,[si]

cmpal,0

jzOEW

;20秒倒记时间到了没?

decal

mov[si],al

pushbx

movbl,10

divbl

leasi,DAT

mov[si+1],al

moval,ah

mov[si],al

popbx

popsi

jmpK2

OEW:

pushsi

;判断跳到东西南北的标志位

leasi,WOS

moval,1

mov[si],al

popsi

pushsi

leasi,LT

moval,20

mov[si],20

leasi,DAT

pushbx

movbl,10

divbl

mov[si+1],al

mov[si],ah

popbx

popsi

jmpK2

(五)数码管显示部分

DISPLAY:

pushsi

pushbx

moval,0feh

movcx,2

again:

pushcx

leasi,DAT

movcx,3

desploop:

movdx,04c0h

outdx,al;273输出位码

rolal,1

pushax

moval,[si]

incsi

leabx,BUFFER

XLAT

movdx,04a0h

outdx,al;8255A口输出段码

calldelay;延时

popax

loopdesploop

popcx

loopagain

popbx

popsi

ret

delay:

pushcx

movcx,5fh

delayloop:

loopdelayloop

popcx

ret

源程序代码可参见附录(交通灯_吴汉强.asm)

五、调试记录及结果分析

由于在学微机原理的同时还学习单片机,所以在做这个课程设计的时候,对软硬件的理解比一般的同学深刻,调试过程中遇到的问题可以很快地得到解决。

在满足基本要求的过程中,我还加入了八段数码管的20秒倒数计数功能。

此次设计由于时间相对较紧张,因此没有实现计时到达的LED闪烁的效果。

在上机调试中发现,由于此软件延时的时间均为估算时间,不是特别准确,对于交通要求特别高的地方不宜采用。

如果是放到一个大的交通灯系统中,会影响到各个交通灯的运行时间,可能整个系统对交通的指挥调度会大大偏离理论计算,不能有效地防止和消除交通堵塞现象。

不过这个模拟交通灯的程序具有很强的经典性,稍加修改可以运用于实际生产中。

六、设计总结

我不得不说,每次进行课程设计我都充满了期待,这次也不例外。

它既考验了一个人对于专业知识的掌握程度,更是对一个人毅力耐力的一次检阅。

一个星期的时间固然很短,但是当你认真对待每一分每一秒,认真的做每个实验。

在学习单片机的过程中,每当上微机的实验课的时候觉得很熟悉,因为单片机更趋近于硬件。

现在到了微机原理的课程设计,就有一种天翻地覆的感觉了,微机课上虽然讲指令多一点,但是接触了更多的硬件,就需要转换思维方式,思考解决用软件语言解决硬件问题。

几天的时间一直呆在实验室里,晚上也是到很晚才回去。

有人问,“你的程序不是已经做好了吗?

干嘛还在这里做?

”引用一句同学的话,“当你生活好了的时候,你就想着更好的生活”,当你做出来一个功能时,你就会想着做第二个功能。

这就是一种追求。

经过几天的反复实验调试,我对于8053、8255芯片的功能用途的理解更加到位,对于八段数码管的显示原理的理解更加透彻,对于接口的运用更加娴熟,几天的时间,软硬件的结合能力得到进一步的提升。

我深刻地体会到一个道理,代码是一个一个指令组成的,一个一个指令则是由键盘一个一个敲出来的。

敲代码的过程其实就是你的思考过程。

七、参考资料

《微型计算机原理与接口技术》(第二版),李伯成,清华大学出版社;

《新版汇编语言程序设计》,钱哓捷,电子工业出版社

参考链接:

 

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

当前位置:首页 > 工作范文 > 其它

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

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