基于单片机的智能交通灯系统的设计

这篇具有很好参考价值的文章主要介绍了基于单片机的智能交通灯系统的设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目 录

1绪论 1
2课题的设计要求和设计方案 2
2.1设计要求 2
2.1.1 题目概述 2
2.1.2 设计任务 2
2.1.3 设计要求 2
2.2设计方案 2
2.2.1供电方案 2
2.2.2输入方案 3
2.2.3显示界面方案 3
2.2.4交通灯方案 3
2.2.4.1交通灯规则方案 3
2.2.4.2 各种模式下通行时间 5
2.2.5万年历设计方案 5
3芯片的介绍及应用 7
3.1 AT89C51单片机介绍及应用 7
3.1.1单片机的引脚及功能 7
3.1.2单片机最小系统的设置 9
3.2 LCD1602芯片介绍及应用 9
3.2.1 液晶显示器的介绍 9
3.2.2 液晶显示器各种图形的显示原理 10
3.2.3 LCD1602的基本参数及引脚功能 10
3.2.4 LCD1602的指令说明及时序 11
3.2.5 LCD1602液晶显示模块原理图 14
3.3 DS1302芯片介绍及应用 15
3.3.1 DS1302引脚功能 15
3.3 .2 DS1302读写说明 15
3.3 .3 DS1302时钟采集模块原理图 18
3.4 DS18B20 芯片介绍及应用 18
3.4 .1 DS18B20 引脚功能 18
3.4.2 DS18B20 的应用及原理图 19
4 程序的设计流程 20
4.1 交通灯程序的设计流程 20
4…1.1 倒计时显示的理论分析 20
4.1.2 状态灯显示的理论分析 20
4.1.3 交通灯主程序设计流程 20
4.2 万年历的设计流程 22
4.3 万年历时间的调整流程 22
4.4 交通信号系统工作模式的工作流程 24
5 软硬件的仿真调试 26
5.1 PROTEUS仿真图 26
5.2 硬件实物图 26
结论 28
致谢 29
参考文献和资料 30
附录Ⅰ:系统源程序 31
2 课题的设计要求和设计方案
2.1 设计要求
2.1.1题目概述
道路交通信号灯是道路交通安全的产品,它可以加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。它适用于各种十字、丁字等交叉路口,由道路交通信号灯控制,指导车辆和行人安全而有序地通行。
2.1.2 设计任务
设计一种交通信号灯的控制系统。要求直观,简单。能够满足十字路口交通等的使用需求。
2.1.3 设计要求

  1. 交通路口为十字路口。
    2.马路为双向六车道,即要有左转灯,直行灯,右转灯。
    3.要考虑人行横道的信号灯。
    4.有显示设备可以显示通信时间。
    5.要求通行时间可调。

2.2 设计方案
2.2.1 供电方案
系统要在正常而稳定的状态下工作,必须要有可靠的电源。而本次基于单片机的设计需要显示的芯片较多,电源供应量大,因此本次设计了如下三种方案。
方案一:利用独立的稳压电源供电。优点是可提供稳定而可靠电源,而且可以利用220V电压转化,不受各种因素的限制;缺点是各模块都采用独立电源,会增加本次设计的难度,而且对其他电路还会造成一定的干扰。
方案二:采用USB转接口5V电压供电,这样简单明了,但是单单一个5V电源供电可能会显得电源不足,而无法满足实际的需要。
方案三:采用USB转接口5V双电源电压供电,这样把本次设计分为两大模块,一是交通信号灯控制系统,二是万年历系统,采用双电源供电,一个为交通信号灯控制系统提供电源,另一个为万年历系统提供电源。这样即简单而又可提供稳定的电源。
考虑到实际情况和电路的简洁,本设计采用了第三套方案,此方案在电路的设计上可以把系统分为两大模块,使系统设计简单化,从而又可以提供稳定而可靠电源。而且在单电源断电的情况下不影响另一模块的工作。

2.2.2 输入方案
该系统要求能手动及智能控制改变交通信号灯的通行时间和万年历时间的调整。
方案一:采用8155扩展I/O 口及键盘、显示等。该方案的优点是:使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。
方案二: 直接在I/O口线上接上按键开关。该方案优点是:编程更加简洁,使用更加简单,且成本更低。缺点就是功能有限。
综合考虑本设计的实际需要,在使用输入的时候不需要过于复杂的功能,因此直接在I/O口线上接上按键开关足以满足本次系统设计的需要,故采用方案二。

2.2.3 显示界面方案
本设计涉及到倒计时、状态灯、时间、温度等显示功能。基于功能需求,本设计考虑如下四种方案:
方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字符,无法胜任功能需求。
方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:采用LCD1602液晶显示,这种显示比较乐观,但是工作量大,而且设计复杂,再加上需要到的LCD1602较多,从经济上也不划算。
方案四:采用数码管、LED与LCD1602相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出,同时还要显示出年、月、日、时、分、秒、星期和温度。为了方便观看并考虑到实际情况,用数码管显示交通信号灯的倒计时,用LED显示交通灯的状态灯、用LCD1602显示年、月、日、时、分、秒、星期和温度。这种设计方案既满足系统功能要求,又减少了系统实现的复杂度。

2.2.4交通灯方案
2.2.4.1交通灯规则方案
本设计的交通灯以十字路口为模型,在实现基本的功能前提下增加了时间及温度的液晶显示。从而还增加了路口高峰期的智能化人工管理机制。
实际生活中交通信号灯的规则千变万化,在不同的路口上看到的交通信号灯的规则不一样,但是总体还是相差不大,也有一些根据实际的需要而设置不同的交通规则,本次系统交通规则的设置是根据现实生活中的交通规则和多加考虑各种现实因素结合起来而制定了以下交通规则。
下图所示为一种红绿灯规则的状态图:
基于单片机的智能交通灯系统的设计

   	/***********************************************************
	       十字路口交通灯控制 C 程序
	***********************************************************/
	#include <reg51.h>
	#define	uchar	unsigned char
	#define	uint	unsigned int
	/*****定义控制位*******************************************/
	sbit   Time_Show_LED2=P2^5;  //Time_Show_LED2(直行时间显示)控制位
	sbit   Time_Show_LED1=P2^4;  //Time_Show_LED1(直行时间显示)控制位
	sbit   EW_LED2=P2^3;	     //EW_LED2控制位
	sbit   EW_LED1=P2^2;	     //EW_LED1控制位
	sbit   SN_LED2=P2^1;	     //SN_LED2控制位
	sbit   SN_LED1=P2^0;	     //SN_LED1控制位
	sbit   SN_Yellow=P1^6;       //SN黄灯
	sbit   EW_Yellow=P1^2;       //EW黄灯
	sbit   EW_ManGreen=P3^0;     //EW人行道绿灯
	sbit   SN_ManGreen=P3^1;     //SN人行道绿灯
	sbit   Special_LED=P2^6;     //交通特殊指示灯
	sbit   Busy_LED=P2^7;        //交通繁忙指示灯
	sbit   Nomor_Button=P3^5;    //交通正常按键
	sbit   Busy_Btton=P3^6;      //交通繁忙按键
	sbit   Special_Btton=P3^7;   //交通特殊按键  
	sbit   EW_ManRed=P3^3;       //EW人行道红灯
	sbit   SN_ManRed=P3^4;       //SN人行道红灯
	sbit   x=P1^7;
	sbit   y=P1^3;
	bit    Flag_SN_Yellow;      //SN黄灯标志位
	bit    Flag_EW_Yellow;       //EW黄灯标志位
	char   Time_EW;        //东西方向倒计时单元
	char   Time_SN;        //南北方向倒计时单元
	uchar  EW=60,SN=40,EWL=19,SNL=19;      //程序初始化赋值,正常模式
	uchar  EW1=60,SN1=40,EWL1=19,SNL1=19;  //用于存放修改值的变量
	uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  //0-9段选码
	uchar code S[8]={0x28,0x48,0x98,0x88,0x82,0x84,0x89,0x88};  
	//交通信号灯控制代码
	/**********************延时子程序**************************/
	void Delay(uchar a)
	{
		uchar	i;
		i=a;
		while(i--){;}
	}
	
	/*****************显示子函数******************************/
	void Display(void)
	{
		uchar h,l;
		h=Time_EW/10;
		l=Time_EW%10;
	  	P0=table[l];        
		EW_LED2=1;	      //点亮EW_LED2
		Delay(2);
		EW_LED2=0;        //熄灭EW_LED2
		P0=table[h];
		EW_LED1=1;        //点亮EW_LED1
		Delay(2);
		EW_LED1=0;
	
		h=Time_SN/10;
		l=Time_SN%10;
		P0=table[l];
		SN_LED2=1;        //点亮SN_LED2
		Delay(2);
		SN_LED2=0;
		P0=table[h];
		SN_LED1=1;		  //点亮SN_LED1
		Delay(2);
		SN_LED1=0;
			
		h= EW1/10;
		l= EW1%10;
		P0=table[l];
		Time_Show_LED1=1;	 //点亮Time_Show_LED1
		Delay(2);
	   Time_Show_LED1=0;
		P0=table[h];
		Time_Show_LED2=1;	//点亮Time_Show_LED2
		Delay(2);
		Time_Show_LED2=0;
	} 
	/**********************外部0中断服务程序******************/
	
	void INT0_srv(void)interrupt 0 using 1
	{
		 EX0=0;               //关中断
	
	    if(Nomor_Button==0) //测试按键是否按下,按下为正常状态
	    {
	EW1=60;
	SN1=40;
	EWL1=19;
	SNL1=19;
	Busy_LED=0;     //关繁忙信号灯
	Special_LED =0; //关特殊信号灯
	    }
	    if(Busy_Btton==0)   //测试按键是否按下,按下为繁忙状态
	    {
	EW1=45;
	SN1=30;
	EWL1=14;
	SNL1=14;
	Special_LED=0;  //关特殊信号灯
	Busy_LED=1;     //开繁忙信号灯
			
	    }
	    if(Special_Btton==0)//测试按键是否按下,按下为特殊状态
	    {
	EW1=75;
	SN1=55;
	EWL1=19;
	SNL1=19;
	Busy_LED=0;    //关繁忙信号灯
	Special_LED =1;//开特殊信号灯
	    }					
			EX0=1;         //开中断
	}
	/**********************T0中断服务程序*******************/
	void timer0(void)interrupt 1 using 1
	{
		static uchar count;
		TH0=(65536-50000)/256;
		TL0=(65536-50000)%256;
		count++;
		
		if(count==10)
		{
		    if(Flag_SN_Yellow==1)  //测试南北黄灯标志位
		        {SN_Yellow=~SN_Yellow;}
		    if(Flag_EW_Yellow==1)  //测试东西黄灯标志位
		        {EW_Yellow=~EW_Yellow;} 
		}
		if(count==20)
		{
		    Time_EW--;
		    Time_SN--;
		    if(Flag_SN_Yellow==1)  //测试南北黄灯标志位
		        {SN_Yellow=~SN_Yellow;}
		    if(Flag_EW_Yellow==1)  //测试东西黄灯标志位
		        {EW_Yellow=~EW_Yellow;}
		    count=0;
		}
	}
	/*********************主程序开始***********************/
	void	main(void)
	{ 
	Busy_LED=0;
	Special_LED=0;
	IT0=1;	   //INT0负跳变触发
	TMOD=0x01; //定时器工作于方式1
	TH0=(65536-50000)/256; //定时器赋初值
	TL0=(65536-50000)%256;
	EA=1;  //CPU开中断总允许
	ET0=1; //开定时中断
	EX0=1; //开外部INTO中断
	TR0=1; //启动定时
	
	    while(1)
	    {				
	        /*******S0状态**********/
	SN_ManRed=0;
	SN_ManGreen=1;  //SN人行道通行
	EW_ManRed=1;	//EW人行道禁止
	EW_ManGreen=0;
	Flag_EW_Yellow=0;	   //EW关黄灯显示信号
	Time_EW=EW;
	Time_SN=SN;
	while(Time_SN>=5)
			{    
			    P1=S[0];	//SN绿灯,EW红灯
			    Display();
			}
	
			/*******S1状态**********/
			P1=0x00;
			while(Time_SN>=0)
			{
	Flag_SN_Yellow=1; //SN开黄灯信号位
	P1=P1|0x08;    //保持EW红灯
	Display();
			}
	
			/*******S2状态**********/
	SN_ManRed=1;      //SN人行道禁止
	SN_ManGreen=0;
	EW_ManRed=1;	  //EW人行道禁止
	EW_ManGreen=0;
	Flag_SN_Yellow=0; //SN关黄灯显示信号
	Time_SN=SNL;
	while(Time_SN>=5)
			{
	P1=S[2];      //SN左拐绿灯亮,EW红灯
	Display();
			}
	
			/*******S3状态**********/
			P1=0x00;
			while(Time_SN>=0)
			{
	//Flag_SN_Yellow=0;	//SN开黄灯信号位
	x=1;
	P1=P1|0x08;    //保持EW红灯
	Display();
			}
	
			/***********赋值*********/
	EW=EW1;
	SN=SN1;
	EWL=EWL1;
	SNL=SNL1;
			/*******S4状态**********/
	SN_ManRed=1;      //SN人行道禁止
	SN_ManGreen=0;
	EW_ManRed=0;
	EW_ManGreen=1;	  //EW人行道通行
	Flag_SN_Yellow=0; //SN关黄灯显示信号
	Time_EW=SN;
	Time_SN=EW;
	while(Time_EW>=5)
			{
			    P1=S[4];	  //EW通行,SN红灯
				Display();
			}
	
			/*******S5状态**********/
			P1=0X00;
			while(Time_EW>=0)
			{
	Flag_EW_Yellow=1;//EW开黄灯信号位
	P1=P1|0x80;    //保持SN红灯
	Display();
			}
	
			/*******S6状态**********/
	SN_ManRed=1;     //SN人行道禁止
	SN_ManGreen=0;
	EW_ManRed=1;	 //EW人行道禁止
	EW_ManGreen=0;
	Flag_EW_Yellow=0;//EW关黄灯显示信号
	Time_EW=EWL;
	while(Time_EW>=5)
			{
	P1=S[6];     //EW左拐绿灯亮,SN红灯
	Display();
			}
	
			/*******S7状态**********/
			P1=0X00;
			while(Time_EW>=0)
			{
	//Flag_EW_Yellow=0; //EN开黄灯信号位
	y=1;
	P1=P1|0x80;    //保持SN红灯
	Display();
			}
				
			/***********赋值********/
			EW=EW1;
			SN=SN1;
			EWL=EWL1;
			SNL=SNL1;
		}
	}


基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计
基于单片机的智能交通灯系统的设计文章来源地址https://www.toymoban.com/news/detail-404146.html

到了这里,关于基于单片机的智能交通灯系统的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于51单片机的交通灯Protues仿真设计

    目录 一、设计背景 二、实现功能 三、 硬件电路设计说明 3.1 主控模块电路设计 3.2 数码管显示电路设计 ​​​​​​​3.3 键盘电路设计 ​​​​​​​3.4 复位电路设计 ​​​​​​​3.5 时钟电路设计 三、仿真演示 四、源程序        交通是城市经济活动的生命线,

    2024年02月09日
    浏览(45)
  • 基于51单片机的简易交通灯仿真代码讲解

    J028 51单片机简易交通灯易懂版_仿真+代码+报告讲解 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 51单片机简易交通灯易懂版仿真代码讲解 状态1:南北方向绿灯通行12秒,东西红灯禁止通行15秒,分别倒计时; 状态2:南北方向黄灯提醒3秒,东西继续红灯倒计时;

    2024年02月02日
    浏览(56)
  • 基于AT89C51单片机的交通灯设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87779238?spm=1001.2014.3001.5503 源码获取 主要内容: 在日常生活中,交通灯是一项必不可少的公共设施,可 以维护道路的畅通和交通的秩序。如若交通灯发生故障,那 么后果可想而知。因此,交通灯

    2024年02月08日
    浏览(53)
  • 【超详细】基于单片机控制的十字道路口交通灯控制

    目录 最终效果 一、设计任务 二、设计报告 1 设计说明    1.1功能分析 1.1.1整体系统功能分析 1.1.2显示状态功能分析 1.1.3设置状态功能分析 1.1.4紧急状态功能分析 1.2方案比选 1.2.1车辆LED数码管倒计时显示板块 1.2.2车辆信号灯显示板块 1.2.3行人信号灯显示板块 1.2.4键盘输入板块

    2024年02月04日
    浏览(48)
  • 基于51单片机十字路口红绿灯交通灯+紧急模式

    +无黄灯+紧急 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J010 十字路口交通灯由红、绿两色LED显示器组成,LED显示器显示切换倒计时,以秒为单位,每秒更新一次;为确保安全,绿LED计数到0转红,经5秒延时(显示红色0)后,另一道开始绿色倒计时。

    2024年02月04日
    浏览(57)
  • 15-基于单片机的交通灯系统设计(原理图+仿真+说明书)

    资料包含:设计全套资料(精品) 原理图工程文件 原理图截图 仿真模型工程文件 仿真截图 说明书19236字 英文文献及翻译 答辩PPT visio流程图工程 资料链接 本设计是基于单片机的交通灯控制系统设计,通过对路口设置的交通指示灯和时间显示装置的控制,给行人和车辆的通

    2024年02月10日
    浏览(36)
  • 基于51单片机简易十字路口交通灯_5s全黄闪烁

    (程序+仿真+参考报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J007 交通灯运行状态: (1)模式1:东西向红灯与南北向绿灯亮5s; (2)模式2:东西南北方向均黄灯闪烁5s(5次); (3)模式3:东西向绿灯与南北向红灯各5s; (4)模式4:东西南

    2024年02月07日
    浏览(75)
  • 基于AT89C51单片机的交通灯设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87763760?spm=1001.2014.3001.5503 源码获取 主要内容: 设计一个能够控制十二盏交通信号灯的模拟系统,:利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。 基本要

    2024年02月08日
    浏览(49)
  • 【毕业设计】15-基于单片机的交通灯系统设计(原理图+仿真+论文)

    本设计是基于单片机的交通灯控制系统设计,通过对路口设置的交通指示灯和时间显示装置的控制,给行人和车辆的通行提供便利。 1、设计定时器或采用相关的定时芯片给系统提供时间参考信号。 2、单片机依据时间信号,控制指示灯的亮灭控制车辆和行人的通行,同时显示

    2023年04月08日
    浏览(41)
  • 基于51单片机交通灯控制器(东西通行_南北通行_按键启动)

    管制+启动+黄灯闪烁 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J012 LED灯的定时控制;数码管的显示及闪烁;独立按键的读取与判断;定时器的设置与应用。 单片机控制东西、南北这两组交通灯LED,同时在数码管上显示剩余时间,当剩余时间少于5s时

    2024年02月04日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包