基于单片机的交通灯设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的交通灯设
计
集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)
郑州航空工业管理学院
单片机课程设计说明书
2014 级专业班级
题目
学号
姓名
指导教师
二О一六年十二月十五日
一、交通灯的基本原理
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。近年来随着科技的飞速发展,单片机的应用正在不断地走向深入。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
交通灯是城市交通的重要指挥系统,与人们的日常生活密切相关。随着经济的快速发展,城市中的车辆逐渐增多,交通拥堵和堵塞现象日趋严重,引起交通事故频发等一系列问题,因此设计一个灵活、稳定、便捷的多功能交通灯控制系统具有必要性和现实性。本次设计的意义在于通过对具体的控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。在实践设计过程中,积累设计经验,开拓思维空间,全面提高个人的综合能力。
本系统由单片机硬/软件系统,8位8段数码管和LED灯显示系统。和电路控制电路等组成,较好的模拟了交通路面的控制。
倒计时电路主要是由双位共阴数码管和74HC573N驱动模块组成,控制信号通过单片机的端口P1口进行信号的传输。倒计时电路负责的是显示红绿灯持续显示的时间。当绿灯或者红灯持续显示时,数码管显示该状态的持续时间,在黄灯闪烁显示时,起到倒计时秒数的作用。
红绿灯功能电路主要是由各色的发光二极管和74HC573N驱动模块组成,控制信号跟数码管一样都是通过P1口进行传输。红绿灯电路负责的是各个车行道和人行道通行状态的显示。
系统经初始化可以开始自动运行,数码管有倒计时显示功能,即
1、具有直行、左转、右转、停止四个指示灯;
2、指示灯有倒计时显示功能,直行+右转20秒,左转+右转10秒,停止+右转30秒,按此规律不断循环;
3、直行和左转灯灭掉前3秒能够闪烁提示(每秒两次);
4、能够调整直行、左转、停止指示灯的时间。
二、交通灯的硬件设计
本设计单片机主要是用于控制交通灯的演示系统,故只需要单片机最小系统即可完成。此电路由单片机、时钟电路、电源、复位电路4个组成部分组成。下图分别为单片机原理图、交通灯系统电路图。
图1 单片机系统原理图
图2 交通灯系统原理图
2.1 复位电路
复位方式有多种,本设计采用按键复位。接线图如图3复位电路,
在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。在设定的定时时间内必须在RST引脚产生一个由高到低的电平变化,以清内部定时器.
图3 复位电路图
2.2 晶振电路
选取原则:传统做法,但能够实现所需,即最简单也最是实用。电容选取30pF,晶振为12MHz。
图4 晶振电路图
供电电路由主电源和备用电源组成。主电源主要是由变压器、6A整流桥、4个二极管, 2个104pf电容,二个电解电容以及7805三端稳压管组成。这个部分为系统提供主要的供电,输出电压为5V直流。备用电源主要是由4位的5号电池盒组成。这个部分在主电源断电时能够几乎瞬时的为系统提供电源,输出电压也是5V直流。该电源直接接到单片机的电源端。
图5 主电源和备用电源切换功能电路
2.4 原件清单
三、交通灯的软件设计
3.1交通灯程序
#include
#include
#define uchar unsigned char #define uint unsigned int unsigned char code
Tab[]={ 0xc0,0xf9,0xa4,0xb0,0x
99,0x92,0x82,0xf8,0x80,0x90,0x bf,0xff,0xce};
sbit up=P3^1;
sbit down=P3^2;
sbit set=P3^3;
sbit S8 = P2^0;
sbit S7 = P2^1;
sbit S6 = P2^2;
sbit S5 = P2^3;
sbit S4 = P2^4;
sbit S3 = P2^5;
sbit S2 = P2^6;
sbit S1 = P2^7;
uchar
fenduan1=20,fenduan2=10,fendua n3=3;
uchar times=0;
uchar second=0;
uchar bsecond=0;
uchar sss=0;uchar
disData[8]={7,12,1,10,11,11,6, 7};
void keydisplay();
void display();
void Delay()
{
unsigned char i;
for(i=0;i<255;i++);
}
void ISR_Timer0(void) interrupt 1
{
TH0=0x3c;
TL0=0xb0;
times++;
if (times == 10)
{
bsecond++;
times=0;
}
}