单片机设计——交通信号灯设计报告

更新时间:2023-07-25 10:29:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机设计——交通信号灯设计报告

doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
交通信号灯设计报告
专业:通信工程 班级: 姓名: 学号:
2012 年 12 月 12 日
一、设计摘要: 设计摘要: 摘要 根据交通灯的设计原理及要求,通过总体设计交通灯原理接线 图,综合应用单片机原理、微机原理、微机接口技术等方面的知识, 结合单片机仿真系统的使用方法,通过软硬件结合,使用 89C52 单片 机来设计出符合要求的交通灯控制系统。完成由单片机 89C52、发光 二极管、 LED 数字显示器、开关、部分电阻及电容组成的交通灯控 制系统。系统除基本交通灯功能外,还具有倒计时、显示时间设置、 LED 信息显示等功能。 关键词: 关键词:AT89C52 单片机、交通灯、LED 数码管 二、设计的基本思路及要求 1、设计要求 (1)设计一个交通信号灯控制器,由一条主干道和一条支干道 汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮 禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁 行线外。 (2)主干道处于常允许通行的状态,支干道有车来时才允许通 行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红 灯。 (3)主、支干道均有车时,两者交替允许通行,主干道每次放 行 45 秒,支干道每次放行 25 秒,设立 45 秒、25 秒计时、显示电路。 (4)在每次由绿灯亮到红灯亮的转换过程中,要亮 5 秒黄灯作 为过渡,使行驶中的车辆有时间停到禁行线外,设立 5 秒计时、显示
电路。 2、具体设计思路. 利用 89c52 单片机控制交通灯系统工作。其中 P0 口接数据输出 口,与外部数码管连接,P2 口与数码管的 COM 口连接,用于选择数 据输出的地址, 这样就可以实现时间的动态显示, 并且节省了端口数。 P1 口作为红黄绿灯的控制口,通过上拉电阻将红黄绿灯的正极接高 电平,负极接在 P1 口上,我们可以利用控制单片机的 P1 口的输出数 据控制红黄绿灯的亮灭。调时可以利用外部中断 INT0 申请中断。当 有外部中断的时候,单片机的 PC 指向 INT0 的中断入口地址,从而转 向中断服务程序。 这是我们可以通过判断外部开关量的状态来对红黄 绿灯的显示时间进行修改。同时当 INT0 为低电平时,东西南北方向 的都送红灯亮,实现
紧急情况下禁止通行。然后通过判断 INT0 的状 态来决定中断是否返回,当 INT0 为低电平时,说明开关又一次按下, 这是退出中断服务程序,继续执行主程序。 3、交通灯控制系统状态表 状态 s0 s1 s2 s3 主干道 绿灯亮,允许通行 黄灯亮,停车 红灯亮,禁止通行 红灯亮,禁止通

单片机设计——交通信号灯设计报告

行 支干道 红灯亮,禁止通行 红灯亮,禁止通行 绿灯亮,允许通行 黄灯亮,停车 时间 45 秒 5秒 25 秒 5秒
三、控制系统的总体设计方案和工作原理图 总体设计方案共有五个部分组成,分别是:单片机 89C52、发光
二极管电路、LED 数显电路及驱动电路、晶振及复位控制电路、控制 与调时开关电路。该设计的设计方框图如图 1 所示,
图1 四、交通灯各部分功能分析及各逻辑器件描述 (1)时钟定时控制部件 由于 AT89C52 单片机内部有一个用于构成振荡器的高增益反向 放大器,此放大器的输入和输出端分别是引脚 XTAL1 和 XTAL2,在 XTAL1 和 XTAL2 上外接时钟源即可构成时钟电路,该电路采用的是内 部方式,如图 2 所示:
图2
在 XTAL1 和 XTAL2 的两端接石英晶体振荡器, 与内部反向器构成稳定 的自激振荡器,发出的时钟脉冲直接进入片内定时定时控制部件。用 以提供交通灯时钟信号。 在该电路的设计过程中,C1、C2 的选取对频率有微调作用,选 取值是 20pF。为了减少寄生电容,保证振荡器稳定和可靠的工作, 在接线时将晶振和电容的管脚接在单片机最近的地方。 (2)LED 数字显示电路
com g a 4 c 9 f b dp 5 10
6
7
1
2
图3 如上图 3 所示为其管脚配置, 该电路选用的 LED 显示器是共阳极, 采用动态显示。 (3)89C52 单片机 89C52 提供以下标准功能:8K 字节 Flash 闪速存储器,256 字节 内部 RAM,32 个 I/O 口线,3 个 16 位定时/计数器,一个 6 向量两极 中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时, 89C52 可降至 0Hz 的静态逻辑操作,并支持两种软件可选的节电工作 模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行
com
e
d
3
8
通信口及中断系统继续工作,掉电方式保存 RAM 中的内容,但振荡器 停止工作并禁止其它所有部件工作直到下一个硬件复位。 其管脚如图 4 所示
图4 (4)上电加按钮电平复位电路 如下图 5 所示:我们采用上电+按钮复位的方式。当开关打开时, RST 通过电阻接地,当有开关闭合时由于电容的作用使电源 VCC 通过 电阻施加在单片机复位端 RST 上,实现单片机复位。
VCC
RST/VPD
图5 (5)红黄绿灯显示电路:红黄绿灯显示电路如下图 6 所示。二极 管的正极通过上拉电阻接+5v 的电源 VCC,负极分别接 89C52 单片机
的外部接口 P1.0、
P1.1、P1.2、P1.3、P1.4、P1.5 口,我们可以通 过控制单片机 P1 口的数据输出来控制二极管的亮灭。 例如为 P1 口送 值为#0DEH,则南北红灯亮禁止通行,东西绿灯亮允许通行。
VCC P1.0 南 北 P1.1 P1.2 P1.3 P1.4 P1.5

西

单片机设计——交通信号灯设计报告


图6 当系统上电时,实验电路开始工作。七段数码管开始 40 秒倒计 时, 计时起始信号由主控电路给出, 定时结束信号也输入到主控芯片, 由主控芯片启、闭三色信号灯或启动另一计时电路。在这里正确的程 序是核心,应该完成一个时序电路的工作。其状态表(1)为: 状态 1 2 3 4 南北干道 红灯亮,禁止通行 红灯亮, 禁止通行 绿灯亮,允许通行 黄灯亮,停车 东西干道 绿灯亮,允许通行 黄灯亮,停车 红灯亮,禁止通行 红灯亮,禁止通行 表1 时间 40 秒 5秒 30 秒 5秒
五、元件列表 名称 单片机 发光二极管 LED 数字显示器 石英晶体振荡器 电阻 电容 开关 六、系统程序流程图 (1)主程序流程图 数量 一个 12 个 四个 一个 18 个 3个 2个 元件说明 8952 型单片机 红色、黄色、绿色各四个 分段式数字显示器(共阳极) 12 兆振荡频率 510 欧 16 个,5.1K2 个 20pF2 个,20uF1 个
主程序开始
程序初始化
南北红灯东西绿灯
剩余时间是否 为5秒
N
南北红灯东西黄灯
剩余时间是否 为0秒
N
南北绿灯东西红灯
N 剩余时间是否 为5秒
南北黄灯东西红灯 N 剩余时间是否 为0秒
七、系统原理图
八.程序设计
#include <reg51.h> #define uchar unsigned char #define uint unsigned int uchar code dispcode[]={0x88,0xdb,0x94,0x91,0xc3,0xa1,0xa0,0x9b,0x80,0x81}; uchar second[]={45,5,25,5}; uchar code table[]={0xf3,0xf5,0xde,0xee}; sbit P20=P2^0; sbit P21=P2^1; sbit P22=P2^2; sbit P23=P2^3; unsigned char tcount; unsigned char time; unsigned char order; void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz) { uint ti; while(ms--) { for(ti=0;ti<112;ti++){}//112 } } void main(void) { P0=0xff; P1=0xff; P2=0xff; P3=0xff; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; order=0; tcount=0; time=second[order]; P1=table[0]; P20=1;P21=0;P22=0;P23=0; P0=dispcode[time/10]; delay(8); P0=0xff; P20=0;P21=1;P22=0;P23=0; P0=dispcode[time%10]; delay(8);
P0=0xff; P20=0;P21=0;P22=1;P23=0; P0=dispcode[(time+5)/10]; delay(8); P0=0xff; P20=0;P21=0;P22=0;P23=1; P0=dispcode[(time+5)%10]; delay(8); P0=0xff; while(1) { switch (order) { case 0: P1=table[0]; P20=1;P21=0;P22=0;P23=0; P0=dispcode[time/10]; delay(8); P0=0xff; P20=0;P21=1;P22=0;P23=0; P0=dispcode[time%10]; delay(8); P0=0xff; P20=0;P21=0;P22=1;P23=0; P0=dispcode[(time+5)/10]; delay(8); P0=0xff; P20=0;P21=0;P22=0;P23=1; P0=dispcode[(time+5)%10]; delay(8); P0=0xff; break; case 1: P1=table[1]; P20=1;P21=0;P22=0;P23=0; P0=dispcode[time/10]; delay(8); P0=0xff; P20=0;P21=1;P22=0;P23=0; P0=dispcode[time%10]; delay(8); P0=0xff; P20=0;P21=0;P22=1;P23=0; P0=dispcode[time/10];
delay(8); P0=0xff; P20=
0;P21=0;P22=0;P23=1; P0=dispcode[time%10]; delay(8); P0=0xff; break; case 2: P1=table[2]; P20=1;P21=0;P22=0;P23=0; P0=dispcode[(time+5)/10]; del

单片机设计——交通信号灯设计报告

ay(8); P0=0xff; P20=0;P21=1;P22=0;P23=0; P0=dispcode[(time+5)%10]; delay(8); P0=0xff; P20=0;P21=0;P22=1;P23=0; P0=dispcode[time/10]; delay(8); P0=0xff; P20=0;P21=0;P22=0;P23=1; P0=dispcode[time%10]; delay(8); P0=0xff; break; case 3: P1=table[3]; P20=1;P21=0;P22=0;P23=0; P0=dispcode[time/10]; delay(8); P0=0xff; P20=0;P21=1;P22=0;P23=0; P0=dispcode[time%10]; delay(8); P0=0xff; P20=0;P21=0;P22=1;P23=0; P0=dispcode[time/10]; delay(8); P0=0xff; P20=0;P21=0;P22=0;P23=1; P0=dispcode[time%10]; delay(8); P0=0xff;
break; } } } void t0(void) interrupt 1 using 0 { tcount++; if(tcount==20) { tcount=0; time--; } TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; if(time==0) { if (order==3) { order=0; } else { order++; } time=second[order]; }
} 九,系统调试 1、硬件调试:按照已经设计好的电路设计图,在万能印刷电路 板上焊接各个元件。电路板制作完成以后,利用万用表检查硬件是否 焊接正常以及是否出现短路和断路的情况,并修改焊接中的错误,直 到硬件电路可以正常工作为止。 在第一次进行检测时发现显示管不会 显示数据, 经过进一步检查才发现是电源线没有焊接。 如此反复操作, 直到硬件可以正常运行。 2、软件调试:程序编好以后,先自己检查是否有逻辑错误,保
证正确后利用伟福仿真软件对所编写的程序进行编译, 检查是否有语 法错误,出现
错误时伟福系统会自动提示有错误产生,并会指定错误 的语句,这时我们需要认真检查程序,修改编译中出现的错误。程序 修改无误后,利用仿真软件,我们可以监视程序 PC 指针、P0、P1、 P2 口的变化、以及存储单元的值的变化来检查程序是否运行正常, 是否能够实现预定的控制功能。

1

本文来源:https://www.bwwdw.com/article/m4qm.html

Top