52单片机交通灯课程设计

这篇博客详细介绍了使用AT89C52单片机进行交通灯课程设计的过程,包括实验目的、器件选择、设计任务、性能指标、设计方案、硬件和软件设计。通过C语言编写程序,实现红绿灯交替点亮和熄灭,以及倒计时显示,同时考虑了应急开关的中断处理,提高了道路通行的安全性和效率。
摘要由CSDN通过智能技术生成

单片机交通灯课程设计

1. 实验目的和器件

1.1实验目的

(1)通过单片机课程设计,熟练掌握C语言的编写方法,将理论联系到实际中去,提高我们的动手和动脑能力。
(2)通过交通信号灯控制系统的设计,掌握定时器/计数器及中断的使用方法,和简单的程序编写,最总提高我们的逻辑抽象能力。

2.2实验器件

AT89C52、电源、红绿灯、导线若干

2.设计任务和性能指标

2.1设计任务

东西、南北干道交与一个十字路口,各干道有一组红、黄、绿三色的指示灯,指示车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意绿灯的状态即将切换,切黄灯燃亮时间为东西南北两干道的公共停车时间。指示灯燃亮的方案如下所示。
10s 5s 3s 2s ……
东西道 红灯亮 红灯亮 红灯亮 红灯亮 ……
南北道 绿灯亮 绿灯闪 黄灯闪 红灯亮 ……

2.2性能指标

(1)利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。用控制按钮控制两个中断:1、东西红南北绿。2、南北红东西绿。
(2)当东西方向为红灯,此道车辆禁止通行,东西道行人可通行;南北道为绿灯,此道车辆通过,行人禁止通行,通行时间为15S。
(3)当东西方向为绿灯,此道车辆通行;南北道为红灯,此道车辆禁止通行,行人通行,通行时间为15S。

3.设计方案

3.1任务分析

在交通灯控制系统中,东西南北四个方向各有红黄绿三种颜色的指示灯各一盏,共计12盏指示灯,用以来指挥车辆和行人交通安全通行。当红色指示灯亮的时候表示禁止该方向的车辆和行人通行,当黄色指示灯亮的时候提示人们绿灯的状态即将切换。并且黄灯燃亮时为东西和南北两干道的公共停车时间。初始状态0为东西南北都红灯亮。然后转为状态1南北绿灯通车,东西红灯亮。过一段时间后,转为状态2,南北绿灯灭,黄灯闪几下变红灯,东西还是红灯。再转为状态3, 南北红灯亮,东西绿灯通车。过一段时间后转为状态4,东西绿灯灭,闪几下黄灯后转为红灯,南北还是为红灯亮,一段时间后,又循环至状态1。为了达到上述设计要求,可以用一片AT89C52单片机实现。可以用一个AT89C52的P1(P1.0-P1.6)别接上垂直两个道口的6盏信号灯,由AT89C52单片机的P1口送交通信号信息,在这个系统中采取的是共阴极红绿灯,所以当P1口的各引脚输出为高电平时,显示红、绿、黄灯的燃亮情况。用AT89C52的P0口显示绿、黄灯的燃亮的倒计时时间,时间由定时器来控制,由P1口作为倒计时时间的个位:数码,用四个数码管的显示用动态显示方法实现。P3口用来接应急开关K3、K4,对特殊情况的处理,当按下开关时交通显示东西红南北绿或北红东西绿,使殊车辆通过。

3.2硬件设计

根据以上的设计思路分析可以得到十字路口交通灯控制系统的硬件电路设计图。
在这里插入图片描述

3.3软件设计

1)主流程图

通过设计思路的分析,得到主流程如下。
在这里插入图片描述
在这里插入图片描述

4.程序清单

#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

sbit led1r=P1^0; //红
sbit led1g=P1^1; //绿
sbit led1y=P1^2; //黄
sbit led2r=P1^4; //红
sbit led2g=P1^5; //绿
sbit led2y=P1^6; //黄
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code SegCode[]={0x3F,0x06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X00}; //数码管段选号
u8 num=0,DisplayDate[8];
u16 i;

void delay500ms() //500ms延时函数
{
unsigned char a,b,c;
for(c=23;c>0;c–)
for(b=152;b>0;b–)
for(a=70;a>0;a–);
}

void Time1Init()
{ //定时器1
TMOD|=0x10;
TH1=0X

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值