• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的智能控制交通灯设计(一)

04/17 08:42
1452
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

仿真版本:Proteus8.6及以上版本

程序编译:Keil5 C51

编程语言:C语言

设计编号:【M04】

1.? 简介

? 本文提出了一种基于51单片机的智能控制交通灯设计。该设计在硬件方面主要采用AT89C51单片机作为主控核心,结合独立按键、数码管、LED灯,实现不同的红绿灯切换时间,并且具有倒计时的功能。

2.? 主要功能

a.当主干道通行亮绿灯时,支干道亮红灯,而支干道亮绿灯时,主干道亮红灯。

b.主支干道交替通行,主干道每次放行30s、支干道25s,设计30s和25s计时显示电路

c.在过程中间,要亮5s的黄灯作为过渡,设置5s计时显示电路。

d.有紧急车辆要求通过时,系统要能禁止东西或南北两条路上所有的车辆通行。

e.夜间模式:东西南北方向黄灯闪烁。

f.禁止模式:东西南北方向红灯亮起,禁止通行。

g.支持对东西、南北方向的倒计时时间调整。

3.? 源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

uchar data buf[4];             //秒显示的变量
uchar data sec_dx=25;          //东西数默认
uchar data sec_nb=25;          //南北默认值
uchar data set_timedx=25;      //设真东西方向的时间
uchar data set_timenb=25;     //设置南北方向的时间
int n;
uchar data countt0,countt1;   //定时器中断次数
//定义6组开关
sbit k4=P3^7;                   //切换方向
sbit k1=P3^5;                   //时间加
sbit k2=P3^6;                  //时间减
sbit k3=P3^4;                  //确认
sbit k5=P3^1;                  //禁止
sbit k6=P3^0;                  //夜间模式
sbit Red_nb=P2^6;             //南北红灯标志
sbit Yellow_nb=P2^5;          //南北黄灯标志
sbit Green_nb=P2^4;           //南北绿灯标志.

sbit Red_dx=P2^3;             //东西红灯标志
sbit Yellow_dx=P2^2;         //东西黄灯标志
sbit Green_dx=P2^1;          //东西绿灯标志

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_to2();
void key_to3();
void display();
void key();
void logo();
//主程序
void main()
{
	TMOD=0X11;
	TH1=0X3C;
	TL1=0XB0;
	TH0=0X3C;
	TL0=0XB0;
	EA=1;
	ET0=1;
	ET1=1;
	TR0=1;
	TR1=0;
	EX0=1;
	EX1=1;
	logo();
	P2=0Xc3;
	sec_nb=sec_dx+5;
	while(1)
	{
		key(); 
		display();
	}
}
void key(void)                     //按键扫描子程序
{
	if(k1!=1)    //时间加
	{
		display();
		if(k1!=1)
		{
		TR0=0;
		shanruo=0;
		P2=0x00;
		TR1=0;
		if(set==0)
			set_timedx++;
		else
			set_timenb++;
		if(set_timenb==100)
			set_timenb=1;
		if(set_timedx==100)
			set_timedx=1;
		sec_nb=set_timenb;
		sec_dx=set_timedx;
		do
		{
			display();
		}
		while(k1!=1);
	}
}

4.? 仿真proteus8.6

? 本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

初始界面:

东西通行:

南北通行:

夜间模式:

禁止模式:

5.? 设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。

6.? 资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

7.? 资料获取链接

百度网盘下载链接:【M04】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载

相关推荐