课程设计报告
设计题目: 交通信号灯控制器
学 院: 电子工程学院
专业班级:13级光电信息科学与工程(1)班
学 号: 20133030**** 20133030****
20133030****
姓 名: *** *** ***
电子邮件: **********@qq.com
时 间: 20##年10月
成 绩:
指导教师: ****
华 南 农 业 大 学
理 学 院 应 用 物 理 系
课 程 设 计(报告)任 务 书
学生姓名 指导教师 职称讲师
题 目 交通信号灯控制器
任务与要求
开始日期 20##年 9 月 17 日 完成日期 20##年 9 月 25 日
交通信号灯控制器
学生:****** 指导老师:*****
摘要:随着人口的膨胀与社会的发展,交通在人类社会生活中的作用愈发重要。所谓要想富,先修路,更是道出了交通对经济发展的拉动作用。然而伴随着科技的推动,交通的发展不再只是表现在道路里程的增长上,而是要借助现代化科技改善交通状况实现达到“保障安全,提高效率、改善环境、节约能源”目的的智能交通系统(ITS)。作为智能交通系统组成的一部分,城市交叉路口的交通管理对于整个城市的交通状况发挥着决定性的作用,交叉路口是城市交通网的瓶颈所在。交叉路口信 号灯系统设计是基于道路通行能力与服务水平分析以及运行特性的了解之上。利用PLC和组态软件可以模拟出一个类似的信号灯系统。
关键词:LM555CM、74LS192D、74LS248D、74LS32D、74LS08D、74LS04D、 LED、交通灯
1、引言
交通信号灯常用于交叉路口,用来控制车的流量,提高交叉口车辆的通行能力,减少交通事故。交通灯控制器主要由控制器、秒脉冲发生器、定时器、译码显示电路及信号灯组成。
1.1实验意义
在现代城市中,人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。交通信号灯常用与交叉路口,用来控制车的流量,提高交叉口车辆的通行能力,减少交通事故。有了交通灯就有效加强了道路交通管理,减少交通事故的发生,使人们的安全出行有了很大的保障。同时它也是对学生电子技术课程学习的综合性训练,使学生更好地掌握所学知识。
2、总体结构
2.1实验原理图
2.2实验原理介绍
本实验采用LM555CM充当脉冲信号电路,脉冲信号的快慢可以通过改变调节电阻的大小来改变,电阻增大,可以减少脉冲信号发生的时间,LS74192是可逆二进制计数器,循环输出1、2、3、4、5,并控制三盏灯的亮灭。LS248是译码器产生编译信号传送给数码管驱动数码管的工作。整个电路主要是采用逆计数显示原理。
2.3实验材料
本实验将用到以下实验仪器及材料:
3、实验芯片管脚及原理图介绍
3.1 74LS192
74LS192是双时钟方式的十进制可逆计数器。(bcd,二进制)。
◆ CPU为加计数时钟输入端,CPD为减计数时钟输入端。
◆ LD为预置输入控制端,异步预置。
◆ CR为复位输入端,高电平有效,异步清除。
◆ CO为进位输出:1001状态后负脉冲输出,
◆ BO为借位输出:0000状态后负脉冲输出。
74ls192引脚图:
3.2 74LS32
74LS32是四2输入或门,常用在各种数字电路以及单片机系统中。
表达式为:Y=A+B
引脚排列图管脚功能:左下1--1A,2--1B,
3--1Y;4--2A,5--2B,6--2Y;7--GND;
右起:右上8--3Y,9--3A,10--3B;11--4Y,12--4A,
13--4B;14--VCC
其中A,B为输入端,Y为输出端,GND为电源负极,VCC 为电源正极。
74ls32引脚图
74ls32真值表
A B 0
0 0 0
0 1 1
1 0 1
1 1 1
3.3 74LS08
管脚图
3.4 74LS04
引脚图:
管脚图
3.5 74LS248
4、实验步骤及注意事项
1)首先根据设计的电路图进行电路仿真,仿真时要特别注意每条线的走线,切记出错,直到仿真结果与实验任务一致时方可确定实验电路。
2)根据仿真得到的电路在购买实验材料。
3)买到实验材料后,开始实验前先检查实验是否正常工作以免实验时烧坏实验材料,特别是显示原件。并且测试芯片,检查芯片是否能正常工作。
4)排版、接线。首先根据仿真图上原件的位置尽可能合理地放好各芯片的位置,方便连线,接线时按一个模块一个模块地来接,尽可能减少接线错误。
5)接完所有线后,进行验证和调试结果是否正确。实验结果正确即可完成实验。
5、实验总结及心得体会
课程设计的这两周,当中有苦也有乐,从苦乐中我学到了很多东西。不仅很好的复习了一下数电所学的内容,而且提高了自己的动手实践能力。
仿真出来特别开心,等到连接电路的时候发现实际的连接线路要考虑布线、器件的位置等,还是有一定的难度的。不过经过两天的努力,终于把电路连接好了,插上电源一试,数码管都不亮,后来查出正负极短接了,但是就是不知道哪里短接,问了数码管亮的同学才知道数码管不要接正极,是共阴极的。电路终于好了,倒计时,灯都好了。电路是不允许出现一点错误的,一个管脚连接出现问题,都可能导致整个电路的功能不能实现。
因此在实验过程中,我们要有认真严谨的科学态度和足够的耐心,只有这样才能保证我们的成功。
这次课程设计不仅仅是一次动手能力的实践,也是锻炼我们思维能力和意志力的实践,我们从书上学到的是死知识,但通过课程设计,活跃了我们的思维,也给了我们一个发挥自己创新能力的机会。
附接线图:
第二篇:微机接口交通信号灯课程设计报告
郑州大学信息工程学院
课程设计报告
交通灯模拟系统
序言
红绿灯(交通信号灯)系以规定之时间上交互更迭之光色讯号,设置于交岔路口或其他特殊地点,用以将道路通行权指定给车辆驾驶人与行人,管制其行止及转向之交通管制设施。为一由电力运转之交通管制设施,,以红、黄、绿三色灯号或辅以音响,指示车辆及行人停止、注意与行进,设于交岔路口或其他必要地点。
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和
方向指示灯”三部分组成。在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各60秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。 目前,有一种使用“模糊控制”技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。
本次课程设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。
目 录
1、 课程设计的目的和要求……………………………………………………………… 4
1.1 课程设计目的和意义
1.2 试验的目的和内容
1.3 试验的基本要求
2、 硬件总体设计…………………………………………………………………………… 5
2.1 并行接口电路8255
2.2 8253计数器
2.3 8259中断
3、硬件基础知识……………………………………………………………………7
3.1 8255控制字
3.2 8255端口C控制字
3.3 8253命令格式
4、软件总体设计…………………………………………………………………………… 8
4.1流程图过程
4.2主程序流程图
5、源代码………………………………………………………………………………… 10
5.1 程序代码
5.2 运行结果
6、结束语……………………………………………………………………………………16
7、参考文献…………………………………………………………………………………17
一.课程设计的目的和要求
1.1课程设计的目的和意义:
《微机原理与接口技术》是计算机、电子类专业的专业基础课。在课程体系种占有重要的位置。课程设计的目的是配合平时的教学和实验,以达到巩固和消化课堂教学内容,进一步加强综合应用能力,启发创新思维的目的。是培养学生综合素质,提高动手能力,提高发现问题和解决问题能力的重要阶段。
1.2实验目的
⒈ 了解交通灯管理的基本工作原理
⒉ 熟悉8259A中断控制器的工作原理和应用编程
⒊ 熟悉8255A并行接口的各种工作方式和应用
⒋ 熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法
⒌ 掌握多位LED显示问题的解决
1.3实验内容
(1) 利用8255端口C控制LED发光管。LED发光管L7(红),L6(黄) ,L5(绿)作为南北路口的交通灯与8255的PC7,PC6,PC5相连,L2(红),L1(黄),L0(绿)作为东西路口的交通灯与PC4,PC3,PC2相连。编程使六个灯按交通灯变化规律亮灭。十字路口交通灯的变化要求:
(2)
1.南北路口的绿灯和东西方向的红灯同时点亮30秒钟左右;
2.南北路口的黄灯闪烁5秒钟,东西路口亮红灯继续亮;
3.南北路口的红灯和东西路口的绿灯同时点亮30秒钟左右;
4.南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次。
5.如此循环重复。
(3)1.利用软件延时子系统实现30秒控制
2.利用8253硬件延时实现30秒控制
3.利用8253定时,将绿灯亮的剩余时间在两位LED数码管上动态显示出来。
二硬件总体设计
各芯片主要管脚的功能如下:
1. 8255A:
(1) 8255A端口的连接情况
PC7:发光管L7相连,表示南北红灯,其中 1表示亮,0表示暗
PC6:发光管L6相连,表示南北黄灯,其中1表示亮,0表示暗
PC5:发光管L5相连,表示南北绿灯,其中1表示亮,0表示暗
PC4:发光管L2相连,表示东西红灯,其中 1表示亮,0表示暗
PC3:发光管L1相连,表示东西黄灯,其中1表示亮,0表示暗
PC2:发光管L0相连,表示东西绿灯,其中1表示亮,0表示暗
PC1:和数码管S1端相连,作为片选数码管的十位显示
PC0: 和数码管S1端相连,作为片选数码管的个位显示
同样地还有A端口
PA6:与七段数码管的a相连
PA5:与七段数码管的b相连
PA4:与七段数码管的c相连
PA3:与七段数码管的d相连
PA2:与七段数码管的e相连
PA1:与七段数码管的f相连
PA0:与七段数码管的g相连
位码驱动输入端S1接+5V,S0、dp接地
(2) 三个端口均工作于方式0,处于输出状态
(3) 8255A 的A口地址为288H,B口地址为289H,C口为28AH,控制端口地址为28BH
2. .8253:
(1) 8253的CLK0口由于输入一个1MHZ的脉冲所以要求采用串联的方式OUT0与CLK1连接,GATE0与GATE1一起连接到5V的电源上,最终使OUT1口产生1HZ的方波,脉冲输入到8259的IR0端,产生中断,调中断服务子程序。中断请求信号。
(2) 定时器0:输入信号设为1KHZ,工作在方式3,输出为1000HZ方波,OUT0和计数器1的相连,作为计数器1的输入信号。
定时器1:输入信号为OUT0,工作站方式3,计数初值为1000,输出为1HZ方波
(3) 8253的计数器0的地址是280H,计数器1的地址是281H
控制端口地址是283H
3 . 8259
8253计数器1的 OUT1口产生1HZ的方波,脉冲输入到8259的IR0端,产生中断,调中断服务子程序。中断请求信号。
中断产生的硬件线路连接
三 硬件知识点
1 介绍本系统所选用的各种芯片的引脚、功能、相应的命令字控制格式。
(1) .8255A的控制字:
(2) .端口C按位置1/复0控制
(3)8253命令字的格式:
四软件总体设计
(1) 主程序先对各个硬件初始化,在开CPU中断,然后空操作,等待中断。执行低级中断(IR3)时,8255的PC1,PC0口负责选数码管,PA口负责显示数字,通过查表法查出0~9的数码管编码。采用循环扫描方法,人眼即可看到连续的二位数。数码管的显示为中断主函数的死循环,不断地刷新数码管显示,直到产生新的中断,重新的对8255输入新的值,产生新的数码数字的变化。
(2) 对于红绿灯的状态可以分为六个状态,其中黄灯闪烁为两个状态,为了是LED显示灯状态,通过8255的C端口进行赋值,输出状态的信号。这里需要用到pC端口的位置置1的方法,赋予状态变量的值。
(3) 流程图的过程
4. 程序流程图
上面只是过程状态的显示,没有详细的说出具体的实现的情况,在下面的源代码中,可以看出具体的实现步骤和细节的处理过程。在试验的编码过程中调试
五源代码:
include d:\test\io16.inc
.data
counter word 0
flag byte 0
mins word 0
ledtb byte 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
.code
start:
;初始化
mov ax,@data ;程序开始点
mov ds,ax ;设置ds指向程序数据段的段地址
mov dx,28bh ;8255的初始化
mov al,80H ;8255各口都工作在方式0,都作为输出口
out dx,al
mov al,36h ; (00110110定时器0,方式3,二进制计数,初值1000)
mov dx,283h
out dx,al
mov ax,1000
mov dx,280h
out dx,al
mov al,ah
out dx,al
mov al,76h ;(01110110定时器1,工作方式3,2进制计数,初值1000)
mov dx,283h
out dx,al
mov ax,1000
mov dx,281h
out dx,al
mov al,ah
mov dx,281h
out dx,al
;中断代码
mov ax,350Bh ;获取原中断向量表
int 21h
push es
push bx
cli ;关中断
push ds ;设置新中断向量表
mov ax,seg new0B
mov ds,ax
mov dx,offset new0B
mov ax,250Bh
int 21h
pop ds
in al,21h ;读出IMR
push ax ;保存原IMB
and al,0f7h ;允许IR3,其他的不变
out 21h,al ;设置新的IMB内容
mov counter,80 ;设置中断的次数初值
mov flag,0 ;设置标志位
mov mins,30
sti ;开中断
circle:
;数码管显示
mov dx,28ah
in al,dx ;读取C端口
test al,00100000B ;检测pc5为1否?
jnz Begin1 ;为1,转到Begin1,数码管显示
test al,00000100B ;检测PC2为1否?
jz Begin2 ;为0,转到Begin2,数码管不显示
Begin1:
;cmp mins,0
;jne s
;mov mins,40
s: mov dx,28ah ;pc1设为1,控制数码管显示
mov al,02h
out dx,al
mov ax,mins ;数码管十位数字显示
mov bl,10
div bl
mov bl,al
mov bh,0
mov al,ledtb[bx]
mov dx,288h
out dx,al
call delay
mov dx,28ah ;数码管个位的数字显示
mov al,01h
out dx,al
mov bl,ah
mov bh,0
mov al,ledtb[bx]
mov dx,288h
out dx,al
call delay
;判断led显示状态
Begin2:
cmp counter,50 ;绿红灯状态30s
ja status1
cmp counter,40 ;黄灯闪烁5次,红灯状态,共10s
ja status2
cmp counter,10 ;红绿灯状态30s
ja status3
cmp counter,0
ja status4
call start
status1:call Green_Red
jmp endcle
status2:
mov ax,counter
mov bl,2
div bl
cmp ah,0
je first
call Yellow_Red
mov flag,0
jmp endcle
first:call L6_Red
mov flag,1
jmp endcle
status3:call Red_Green
jmp endcle
status4:mov ax,counter
mov bl,2
div bl
cmp ah,0
je second
call Red_Yellow
mov flag,0
jmp endcle
second:call L1_Red
mov flag,1
jmp endcle
endcle:
jmp circle
cli ;关中断
pop ax ;恢复IMR
out 21h,al
pop dx ;恢复中断向量表项
pop ds
mov ax,250Bh
int 21h
sti ;开中断
exit 0
Green_Red proc ;南北绿灯亮东西红灯亮
mov dx, 28AH
mov al, 00110000B
out dx, al
call delay
ret
Green_Red endp
L6_Red proc ;南北黄灯闪烁,东西红灯
mov dx, 28AH
mov al, 00010000B;黄灯暗
out dx, al
call delay
ret
L6_Red endp
Yellow_Red proc
mov dx, 28AH
mov al, 01010000B;黄灯亮
out dx, al
call delay
ret
Yellow_Red endp
Red_Green proc ;南北红灯,东西绿灯
mov dx, 28AH
mov al, 10000100B
out dx, al
call delay
ret
Red_Green endp
L1_Red proc ;南北红灯,东西黄灯闪烁
mov dx, 28AH
mov al, 10000000B;黄灯暗
out dx, al
call delay
ret
L1_Red endp
Red_Yellow proc
mov dx, 28AH
mov al, 10001000B;黄灯亮
out dx, al
call delay
ret
Red_Yellow endp
;中断服务程序
new0B proc
sti ;开中断
push ax ;保护寄存器
push si
push ds
mov ax,@data ;外部随机产生中断,ds不确定,所以必须设置ds
mov ds,ax
dec counter ;中断次数减一
dec mins
cmp mins,0
jne h
mov mins,40
h: mov al,20h
out 20h,al ;发出EOI命令
pop ds
pop si
pop ax
iret
new0B endp
delay proc
push bx
push cx
mov bx,1
d1: xor cx,cx
d2: loop d2
dec bx
jnz d1
pop cx
pop bx
ret
delay endp
end start
程序运行结果:
1.即东西方向的绿灯和南北方向的红灯同时点亮30S钟;
2.30S钟后,东西方向的黄灯闪烁5次共10秒钟,。此时南北方向仍维持红灯点亮。
3.东西方向的黄灯闪烁5次共10秒钟后,转为东西方向的红灯和南北方向的绿灯同时点亮30秒钟;
4.30秒钟后,转为南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯点亮。
5.南北方向的黄灯闪烁5次,共10秒钟后,东西方向的绿灯和南北方向的红灯同时点亮30S钟。如此循环重复。
6. 数码管显示倒计时30~0。
六、结束语
本次课程设计的总结与体会:
微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。
这次实验并不是很难,主要的困难来自对程序的理解。功夫不负有心人,经过多个人的合作和努力,我们最后对实验的原理有了清晰的认识。虽然很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。
这次课设却让我们对实验芯片有了足够的了解,让我们知道了实验芯片的用法;而且它还让我们对自己动手写程序来控制芯片的运作有了一定的基础。虽然只是一个小型的课程设计,但是通过学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。
实验中个人的力量是不及群体的力量的,我们几个人分工合作,做事的效率高了很多。虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。
总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。感谢老师的悉心指导。
这个设计过程中,我遇到过许多次失败的考验,就比如,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。于是,我坚持了下来。当然最终,这个设计很成功,主要体现在,这一整个系统,几乎没有参考任何书,程序由自己独立完成,与用8255来制作的交通灯控制系统相比,程序简单易读,结构清楚,最重要的是成本低。在设计一个系统,除了达到所要求的性能指标以外,成本也是很重要的一个指标。成本的高低也决定了产品的适用性。
七、参考文献
1.《微机原理与接口技术(第四版)》,钱晓捷 机械工业出版社2008
2《微机原理与接口技术》,洪永强,北京:科学出版社,2004
3《微机原理与接口技术》,雷丽文、朱晓华、蔡征宇、缪均达,北京:电子工业出版社1997;
4《微型计算机系统原理及应用》,周明德,北京:清华大学出版社,1998;
5《微机原理与接口技术(第二版)》,倪继烈,刘新民主编,电子科技大学出版社,2004;