收藏 分享(赏)

微机原理 交通灯.doc

上传人:顺达 文档编号:3299126 上传时间:2020-12-22 格式:DOC 页数:7 大小:58.19KB
下载 相关 举报
微机原理 交通灯.doc_第1页
第1页 / 共7页
微机原理 交通灯.doc_第2页
第2页 / 共7页
微机原理 交通灯.doc_第3页
第3页 / 共7页
微机原理 交通灯.doc_第4页
第4页 / 共7页
微机原理 交通灯.doc_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、.三峡大学微机原理及接口技术课程设计(交通灯设计)姓名:封泉吉学号:2007142129微机原理及接口技术课程设计 摘要:十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯绿灯”转换间隔,并自动切换。从而来保障城市交通能畅通无阻,并减少交通事故的频发。 设计要求:要求发光二级管按照十字路口交通灯的变化规律进行变化:首先南北路口的绿灯、东西路口的红灯同时亮30秒左右,接着南北路口的黄灯闪烁3次,同时东西路口的红灯继续亮,再接着南北路口的红灯、东西路口的绿灯同时亮3

2、0秒左右,最后是南北路口的红灯继续亮,东西路口的黄灯闪烁3次。设计思想:交通灯一共分为东西南北的红黄绿一共12个led灯,但是东西方向的灯以及南北方向的灯的变化是一样的所以只要控制6个io口就行了,其中每个io口管控两个灯。本文中使用8255A芯片,只是使用PA这一个端口。每个io口的控制灯管如表显示:PA7PA6PA5PA4PA3PA2PA1PA0无东,西红灯东,西黄灯东,西绿灯无南,北红灯南,北黄灯南,北绿灯 程序流程:最开始是东西绿灯亮,南北红灯亮,PA=00010100B,持续30s 然后是东西黄灯闪烁,南北红灯亮,PA=00100100B,PA=00000100B交替出现,持续3s

3、然后是南北绿灯亮,东西红灯亮,PA=01000001B,持续30s 最后是南北黄灯闪烁,东西红灯亮,PA=01000010B,PA=01000000B交替出现,持续3s 延时程序通过利用8086程序执行的时间进行延时 也就是说通过不停的用8086cpu向8255A写入以上的数据就是要求的交通灯了。 误差分析: 由于我们用的cpu为8086,所以起主频为5MH,时钟周期为100ns,所以根据软件延时程序我们可以进行适当的缩小误差、由于长延时是根据调用短延时程序,因此我们只能满足缩小一部分误差,在此为了使时间更为精确,我们选用调整短延时来调整,这样更为有利于使误差更小。根据程序和实验现象我们想假设

4、del2为050000h,从而我们得到算式:16384.5+8+5+4+11.X.100(ns)=0.5(s)所以解出X=304.655;当然这个结果在一定程度上也成在一定的误差,但其值相对于其他值该值以接近理想,因此我们可已经过不断的尝试来尽量的减小误差 。 设计电路图:电路图说明:PA0口接北面和南面的绿灯,PA1口接北面和南面的黄灯,PA2口接北面和南面的红灯,PA4口接东面和西面的绿灯,PA5口接东面和西面的黄灯,PA6口接东面和西面的红灯。一旦PA口被赋值则灯就亮。 程序开始软件流程图: 向8255A写入控制字使PA是工作方式1且输出向8255写入数据使东西绿灯亮南北红灯亮 延时3s

5、 延时3s向8255写入数据使南北黄灯闪烁东西红灯亮 延时30s向8255写入数据使南北绿灯亮东西红灯亮向8255写入数据使东西黄灯闪烁南北红灯亮 延时30s2.测试结果 1即东西方向的绿灯和南北方向的红灯同时点亮25秒;225秒后,东西方向的黄灯闪烁3次,。此时南北方向仍维持红灯点亮。3东西方向的黄灯闪烁5秒钟后,转为东西方向的红灯和南北方向的绿灯同时点亮25秒钟;425秒钟后,转为南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯点亮。5南北方向的黄灯闪烁1.5秒钟后,东西方向的绿灯和南北方向的红灯同时点亮30秒。如此循环重复。参考书目:西安电子科技大学出版社出版的微型计算机原理(姚燕南,薛

6、钧义编著, 西安电子科技大学出版社2000修订版), 32位微型计算机原理与接口技术(仇玉章等编著,清华大学出版社2000 年出版), 微型计算机原理(重庆出版集团,2006年出版)datas segment iomode equ 0dc0bhioa equ 0dc08hdatas endsstacks segment db 100 dup(?)stacks ends codes segment assume cs:codes,ss:stacks,ds:datasstart :mov ax,datas mov ds,ax mov dx,iomode mov al,80h out dx,al m

7、ov dx,ioa mov al,00010100b out dx,al call delayl mov cx,03hsan1 : mov al,00100100b out dx,al call delays mov al,00000100b out dx,al call delays dec cx jnz san1mov al,01000001b out dx,al call delayl mov cx,03hsan2: mov al,01000010bout dx,alcall delays mov al,01000000bout dx,alcall delaysdec cxjnz san

8、2jmp startdelayl proc near push axpush cxmov cx,3ch;循环60次来产生30sdelay3: call delays dec cx jnz delay3pop cx pop axretdelayl endpdelays proc neardelay1: push axpush cxmov cx,04000h;move为4个时钟周期delay2: push cx;push为11个时钟周期mov cx,04000hdel2: loop del2;loop为5个时钟周期 pop cx;pop为8个时钟周期del1: loop delay2pop cx pop axretdelays endpcodes endsend start.

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 应用文书 > 工作计划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报