当前位置:文档之家› 《单片机原理及应用》课程设计-基于51单片机的交通灯模拟系统设计

《单片机原理及应用》课程设计-基于51单片机的交通灯模拟系统设计

《单片机原理及应用》课程设计设计题目:基于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 <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charvoid 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(){uint i=0,j=50,k=55;TR1 = 1;TMOD = 0x10;TH1 = 0x4b;TL1 = 0xfc;while(1){j=50,k=55;while(j>0)//第一阶段东西绿灯南北红灯{key_ss2();key_ss3();LED1 = 1;LED2 = 1;LED3 = 0;LED4 = 1;LED5 = 0;LED6 = 1;LED7 = 1;LED8 = 1;displaydx(j);displaynb(k);if(TF1==1){TH1 = 0x4b;TL1 = 0xfc;TF1=0;i++;}if(i==50){i=0;j--;k--;}}j = 5;k = 5;while(j>0)//第二阶段东西黄灯南北红灯{key_ss2();key_ss3();LED1 = 1;LED2 = 0;LED3 = 1;LED4 = 1;LED5 = 0;LED6 = 1;LED7 = 1;LED8 = 1;displaydx(j);displaynb(k);if(TF1==1){TH1 = 0x4b;TL1 = 0xfc;TF1=0;i++;}if(i==50){i=0;j--;k--;}}//第三阶段东西红灯南北绿灯k = 30;j = 35;while(k>0){key_ss2();key_ss3();key_ss2();LED1 = 0;LED2 = 1;LED3 = 1;LED4 = 1;LED5 = 1;LED6 = 1;LED7 = 0;LED8 = 1;displaydx(j);displaynb(k);if(TF1==1){TH1 = 0x4b;TL1 = 0xfc;TF1=0;i++;}if(i==50){i=0;j--;k--;}}k = 5;j= 5;//第四阶段东西红灯南北黄灯while(k>0){key_ss2();key_ss3();key_ss2();LED1 = 0;LED2 = 1;LED3 = 1;LED4 = 1;LED5 = 1;LED6 = 0;LED7 = 1;LED8 = 1;displaydx(j);displaynb(k);if(TF1==1){TH1 = 0x4b;TL1 = 0xfc;TF1=0;i++;}if(i==50){i=0;j--;k--;}}}}void delay(uint i) {uint z,y;z=i;for(;z>0;z--)for(y=120;y>0;y--); }void displaydx(uint i) {P0 = 0xff;wei = 1;P0 = 0x7f;wei = 0;duan = 1;P0 = table[i%10]; duan = 0;delay(2);P0=0xff;wei = 1;P0 = 0xbf;wei = 0;duan = 1;P0 = table[i/10]; duan = 0;delay(2);}void displaynb(uint i) {P0 = 0xff;wei = 1;P0 = 0xf7;wei = 0;duan = 1;P0 = table[i%10]; duan = 0;delay(2);P0=0xff;wei = 1;P0 = 0xfb;wei = 0;duan = 1;P0 = table[i/10]; duan = 0;delay(2);}void key_ss2(){if(key_s2==0){delay(5);if(key_s2==0){while(!key_s2);while(1){LED1 = 1;LED2 = 1;LED3 = 0;LED4 = 1;LED5 = 0;LED6 = 1;LED7 = 1;LED8 = 1;wei = 1;P0 = 0xff;wei = 0;}}}}void key_ss3(){if(key_s3==0)delay(5);if(key_s3==0){while(!key_s3);while(1){LED1 = 0;LED2 = 1;LED3 = 1;LED4 = 1;LED5 = 1;LED6 = 1;LED7 = 0;LED8 = 1;wei = 1;P0 = 0xff;wei = 0;}}}第五部分:实验结果及分析实验结果非常正确,模拟交通灯的情况非常符合现实。

刚开始东西绿灯亮50秒,南北红灯亮55秒,然后绿灯灭,黄灯亮。

再然后黄灯亮五秒,东西黄灯灭,红灯亮35秒,南北红灯灭,绿灯亮30秒。

然后南北绿灯灭,黄灯亮。

然后黄灯亮5秒,南北黄灯灭,红灯亮55秒,东西绿灯亮50秒.如此循环往复。

按下S2键,只允许东西向通车,按下S3键,只允许南北向通车。

第六部分:实验心得体会本系统就是充分利用了AT89C51芯片的I/O引角。

系统统采用MSC-51系列单片机为中心器件来设计交通灯控制器,实现了能根据实际车流量通过单片机芯片的P1口控制红、黄、绿灯的燃亮与熄灭;P0口外接数码管来显示各个信号灯的时间。

相关主题