《单片机原理及应用》课程设计-基于51单片机的交通灯模拟系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机原理及应用》课程设计设计题目:基于51单片机的交通灯模拟系统设计
院系:物理工程学院
专业:电子信息科学与技术
年级:2013级
班级:电信1班
指导教师:
学号:
姓名:
完成时间:2016-10-26
摘要
本系统由单片机系统(STC89C52)、键盘、LED 显示、数码管、交通灯演示系统组成。系统除基本交通灯功能外,还具有倒计时、紧急情况处理以及根据具体情况手动控制等功能。
本设计是单片机控制的交通灯控制系统。单片机即单片微型计算机。其集定时、计数和多种接口与一体的微控制器。它体积小、成本低、功能强,广泛的应用于只能产业和工业自动化上。而51系列单片机是各类单片机中最为典型和富有代表性的一种。
本设计的意义在于通过具体控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。能在实践教学环节中,积累设计经验,开拓思维空间,全面提高个人的综合能力。
红绿灯控制是智能交通系统的一个重要部分,本文给出了一个用单片机控制的简易交通红绿灯自动控制系统。该系统适用于十字路口,并对放行和禁行时间进行倒计时显示(秒)。
在车辆通行繁忙的十字交叉路口设置的交通灯控制系统,其特点是:道路较窄而车流量较大,主干道,支干道的车辆通行时间不等,,同时设有道路应急控制。具体的情况是:在正常的情况下,东西支干道通行时间为50秒,南北主干道通行时间为30秒,每个方向在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。
关键字:单片机红绿灯 STC89C52 倒计时
第一部分:设计思路
国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。一般来说,东西方向和南北方向的车流量是不同的,这就要求南北方向和东西方向要求车辆能通行的时间应该是不一样的。本系统的设计是基于东西方向为主干道,南北方向为支干道来设计的。
假设刚开始允许东西方向通车(此时东西方向绿灯亮其它灭),南北方向禁止通车(此时南北方向红灯亮其它灭)。这我们称为第一阶段。第二阶段东西方向绿灯灭,黄灯亮,此时南北方向依然为红灯。第三阶段,东西方向黄灯灭,红灯亮,南北方向红灯灭,绿灯亮。第四阶段东西方向依然红灯,南北方向绿灯灭,黄灯亮。此时又转为第一阶段,如此循环往复,便可控制十字路口的车辆通行。此外我还考虑到了两个特殊情况,当警车或消防车通过时,此时应该只能允许一个方向通车,本系统设计了两个独立按键,可控制只允许东西方向通车或南北方向通车。
第二部分:系统硬件选择
由于是基于51系列单片机的交通灯模拟系统设计,所以我选用了宏晶公司的STC89C52型号单片机,这款单片机性价比不错,而且买的时候赠送了很多资料,里面的老师讲解非常详细,让我受益良多。由于我设计交通灯主要是使用到了LED和数码管,所以我这里简单介绍一下它的引脚接口。LED1~LED8是接在了P1.0~P1.7引脚,低电平有效。数码管的位选是P2.7引脚。段选是P2.6引脚。数码管显示是
由P0口控制。本次我选用的是LED1、LED2、LED3分别代表东西向红、黄、绿,LED5、LED6、LED7分别代表南北向红、黄、绿。数码管选择第三第四位表示南北向倒计时,第七第八位代表东西向倒计时。下面是原理图:
第三部分:系统流程图
开始
第四部分:系统软件设计源码:#include
#include
#define uint unsigned int
#define uchar unsigned char
void delay(uint i);
void displaydx(uint i);
void displaynb(uint i);
void key_ss2();
void key_ss3();
sbit wei = P2^7;
sbit duan = P2^6;
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;
sbit key_s2 = P3^0;
sbit key_s3 = P3^1;
sbit key_s4 = P3^2;
sbit key_s5 = P3^3;
uchar code table[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x77, //"A"
0x7C, //"B"
0x39, //"C"
0x5E, //"D"
0x79, //"E"
0x71, //"F"
0x76, //"H"
0x38, //"L"
0x37, //"n"
0x3E, //"u"
0x73, //"P"
0x5C, //"o"
0x40, //"-"
0x00, //熄灭
0x00 //自定义
}; void main()