交通灯设计制作

本文介绍了一个采用STC89C51单片机的交通灯控制系统设计,该系统包括四个数码管显示时间,12个发光二极管指示交通灯状态,并具备紧急模式。数码管通过74HC245芯片驱动增强亮度,可分别设置主干道和支干道的通行时间,同时具有按键操作和倒计时显示功能,增加了交通管理的人性化。
摘要由CSDN通过智能技术生成

一、硬件设计

本设计采用单片机作为主控制器。东西和南北方向各有两个数码管,分别显示时间,东西和南北的时间是不一样的哦,要相差黄灯的时间才是正确的。74HC245芯片驱动数码管,使数码管更亮,白天看的很清楚哦~~数码管倒计时显示时间。可以分别设置主干道和支干道的通行时间。有紧急模式,可以特种车辆优先通行或交通事故应急处理。

二、设计功能

本设计能模拟基本的交通控制系统共四个二位阴极数码管,东南西北各一个显示时间,四个数码管的阴极都接到STC89C51的P1口,阳极接到74HC245芯片上,通过P0口控制74HC245芯片,起到驱动放大作用。共12个发光二极管,四个路口每个路口各有一个红(禁行)、黄(警告)发光二极管,四个路口的二极管接到P2口,按键接P3口。本系统采用STC89C51单片机以及单片机最小系统和74HC245驱动电路以及外围的按键和数码管显示等部件,设计一个基于单片机的交通灯设计。本单片机控制交通灯系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。

三、设计原理图

四、软件程序

1、软件流程图

2、主程序源码

#include <reg51.h> //头文件

#define uchar unsigned char

#define uint  unsigned int //宏定义

uchar data buf[4]; //秒显示的变量

uchar data sec_dx=20;   //东西数默认

uchar data sec_nb=30; //南北默认值

uchar data set_timedx=20; //设置东西方向的时间

uchar data set_timenb=30; //设置南北方向的时间

int n;

uchar data countt0,countt1;//定时器0中断次数

//定义6组开关

sbit  k4=P1^4;      //切换方向

sbit  k1=P1^5; //时间加

sbit  k2=P1^6; //时间减

sbit  k3=P1^7; //确认

sbit  k5=P3^4; //禁止

sbit  k6=P3^5; //夜间模式

sbit smg_we1 = P1^2;   //数码管位选定义

sbit smg_we2 = P1^1;

sbit smg_we3 = P2^7;

sbit smg_we4 = P2^6;

sbit Red_nb=P2^3; //南北红灯标志

sbit Yellow_nb=P2^4; //南北黄灯标志

sbit Green_nb=P2^5;     //南北绿灯标志

sbit Red_dx=P2^0; //东西红灯标志

sbit Yellow_dx=P2^1; //东西黄灯标志

sbit Green_dx=P2^2; //东西绿灯标志

sbit Buzz=P1^0;

bit set=0; //调时方向切换键标志 =1时,南北,=0时,东西

bit dx_nb=0; //东西南北控制位

bit shanruo=0; //闪烁标志位

bit yejian=0; //夜间黄灯闪烁标志位

uchar code table[11]={ //共阴极字型码

0x3f,  //--0

0x06,  //--1

0x5b,  //--2

0x4f,  //--3

0x66,  //--4

0x6d,  //--5

0x7d,  //--6

0x07,  //--7

0x7f,  //--8

0x6f,  //--9

0x00   //--NULL

};

//函数的声明部分

void delay(int ms); //延时子程序

void key(); //按键扫描子程序

void key_to1(); //键处理子程序

void key_to2();

void key_to3();

void display(); //显示子程序

void logo();    //开机LOGO

void Buzzer();

//主程序

void main()

{

TMOD=0X11;     //定时器设置

TH1=0X3C;

TL1=0XB0;

TH0=0X3C; //定时器0置初值 0.05S

TL0=0XB0;

EA=1; //开总中断

ET0=1; //定时器0中断开启

ET1=1;    //定时器1中断开启

TR0=1; //启动定时0

TR1=0;   //关闭定时1

EX0=1; //开外部中断0

EX1=1; //开外部中断1

    logo(); //开机初始化

P2=0Xcc; // 开始默认状态,东西绿灯,南北黄灯   

    sec_nb=sec_dx+5;  //默认南北通行时间比东西多5秒

while(1)   //主循环

{  

key();  //调用按键扫描程序

display();  //调用显示程序

}

}

完整资料:交通灯设计制作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值