基于51单片机的交通灯仿真方案原理图设计一个数码管
设计方案
(末尾附文件)
采用单片机的I/O口P0口通过上拉电阻和交通灯相连接,P3.0、P3.1口接到数码管控制位上,控制数码管的显示,程序放在STC89C52RC单片机的ROM中,在十字路口的四组红、黄、绿交通灯中,由单片机的P1.0-P1.2 、P1.5-P1.7、P2.0-P2.2、P2.5-P2.7控制,由于交通灯为发光二极管且阳极通过限流电阻和电源正极相连,因此I/O口输出低电平时,与之相连的指示灯会亮,并通过数码管显示时间倒计时。I/O口输出高电平时,相应指示灯会灭。
总体设计
功能概述
本设计由单片机、LED数码显示模块和按键等构成。单片机是集成的IC芯片STC89C52单片机,只需根据实际选型。其他部分都需要根据应用要求和性能指示设计。
①本系统交通灯控制规则如下:
1)系统设置四组红、黄、绿交通指示灯,并配置四队LED显示器。正常情况下两个干线上的红、黄、绿灯进行转换。
2)东西方向和南北方向交替通行,东西方向每次放行30秒,南北方向每次放行30秒。
3)绿灯亮表示可以通行,红灯亮表示禁止通行,每次绿灯变红灯前,黄灯亮5秒钟。
4)十字路口要有倒计时显示,以便人们更方便直观的把握时间,具体要求东西方向、南北方向通行时间及黄灯亮的时间均以秒为单位作减计数。
系统构成
整个系统的构成以STC89C52RC单片机为核心,由I/O口扩展,LED数码管显示,还有复位电路、时钟电路等组成。单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机、晶振电路、复位电路等组成。
行车方向指示采用LED发光二极管,可有红、绿两种颜色指示放行与禁止,黄灯作为红绿转换的提示,形象直观。系统采用双数码管倒计时计数功能,最大显示数字99。
原理图:
系统软件设计
4 系统软件设计
根据实际交通灯的变化情况和规律。假设一个十字路口为东南西北走向。初始状态1东西绿灯通车,南北红灯亮。过30s,转状态2,东西绿灯灭黄灯亮,南北红灯灭黄灯亮,过5s,再转状态3,南北绿灯通车,东西红灯亮。过30s,转状态4,南北绿灯灭黄灯亮,东西红灯灭黄灯亮,过5s,又循环至状态1。对于交通信号灯来说东西南北共四组灯,由于同一道上的两组的信号灯的显示情况是相同的,因此,采用单片机内部的I/O口来控制12个信号灯。通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。
4.1 软件总体流程图
软件总体设计及流程图见图3-1,主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作是对系统的初始化,发送显示数据,同时对按键进行扫描,等待外部中断,以及根据所需要的功能进行相应的操作。其流程图如图4.1
#include<reg51.h>
#include<intrins.h> //包含库文件
sbit smg1=P3^0; //定义南北方向数码管低位
sbit smg2=P3^1; //定义南北方向数码管高位
sbit N_green=P2^0; //定义北向绿灯端口
sbit N_red=P2^1; //定义北向红灯端口
sbit N_yellow=P2^2; //定义北向黄灯端口 sbit S_green=P2^7; //定义南向绿灯端口
sbit S_red=P2^6; //定义南向红灯端口
sbit S_yellow=P2^5; //定义南向黄灯端口sbit W_green=P1^0; //定义西向绿灯端口
sbit W_red=P1^1; //定义西向红灯端口
sbit W_yellow=P1^2; //定义西向黄灯端口 sbit E_green=P1^7; //定义东向绿灯端口
sbit E_red=P1^6; //定义东向红灯端口
sbit E_yellow=P1^5; //定义东向黄灯端口int js=0,djs=30; //初始倒计时时间
int table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40}; //共阴极数码管段值
/************以下为函数声明*************/
void jtd();
void jtda();
void jtdb();
void djsxs();
void yj();
void jj();
void jtday();
void jtdby();/*****************************************************/
/* 函数名:delayms */
/* 功能:产生毫秒级延时 */
/*****************************************************/
void delayms(int x)
{
char i;
while(x--){for(i=150;i>0;i--); }
}
/*****************************************************/
/* 函数名:Timer0_init() */
/* 功能:定时器0初始化 */
/*****************************************************/
void Timer0_init()
{js=0;TMOD=0x01; //定义定时器0工作模式 TH0=0x4c; //赋初值高位TL0=0x00; //赋初值低位TR0=1; //启动定时器ET0=1; //开中断EA=1; //开全局中断
}
/*****************************************************/
/* 函数名:timer0() interrupt 1 using 1 */
/* 功能:定时器0中断服务函数 */
/*****************************************************/
void timer0() interrupt 1 using 1
{TF0=0;TH0=0x4c;TL0=0x00; //重新赋高地位初值js++;if(js==22) { js=0;djs--;}
}
/*****************************************************/
/* 函数名:djsxs11() */
/* 功能:数码管动态显示 */
/*****************************************************/
void djsxs11() //此函数注视同djsxs22()
{ int b1,b2;b1=djs/10; //将倒计时时间的高位赋予b1b2=djs%10; //将倒计时时间的低位赋予b2P0=table[b1];smg1=0;delayms(3);smg1=1; //显示b1P0=table[b2];smg2=0;delayms(3);smg2=1; //显示b2
}/*****************************************************/
/* 函数名:qm() */
/* 功能:使所有的交通信号灯全部熄灭 */
/*****************************************************/
void qm()
{
N_green=1;
N_red=1;
N_yellow=1; S_green=1;
S_red=1;
S_yellow=1;W_green=1;
W_red=1;
W_yellow=1; E_green=1;
E_red=1;
E_yellow=1;
}
/*****************************************************/
/* 函数名:jtdb() */
/* 功能:交通灯东西方向绿灯亮,红灯灭 */
/* 交通灯南北方向红灯亮,绿灯灭 */
/*****************************************************/
void jtdb()
{
qm(); //所有信号灯灭
W_green=0; //西向绿灯亮
E_green=0; //东向绿灯亮
N_red=0; //北向红灯亮
S_red=0; //南向红灯亮
while(1)
{if(djs>5) //当倒计时时间大于5秒时,执行{djsxs11(); //数码管时间显示}if(djs<=5) //当倒计时时间小于5秒时,执行{jtdby(); //调用函数}
}
}
.
链接:https://pan.baidu.com/s/1Xtg0ivpiVkyYXBmySrQUww
提取码:lcbh
.
基于51单片机的交通灯仿真方案原理图设计一个数码管相关推荐
- 【019】基于51单片机的交通灯Proteus仿真设计
一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...
- 基于51单片机十字路口交通灯_5s黄灯闪烁
基于51单片机十字路口交通灯_5s黄灯闪烁 目录标题 基于51单片机十字路口交通灯_5s黄灯闪烁 功能要求 仿真图 程序 主要程序代码 程序讲解 倒计时的产生 红黄绿灯状态处理 倒计时显示处理 资料清 ...
- 基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s
基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s (程序+仿真+参考报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号J011 目录标题 基于5 ...
- 基于51单片机的交通灯控制系统课程设计(含proteus仿真图及代码)
一.设计要求: 1,十字路口的交通控制系统指挥着人和各种车辆的安全运行,对交叉口实行科学的管理与控制是交通控制工程的重要研究课题,是保障交叉口的交通安全和充分发挥交叉口的通行能力的重要措施,是解决城市 ...
- 基于51单片机的交通灯(资源链接见末尾)
1.控制要求 (1) 东西南北双向红绿灯显示,红灯30s,绿灯27s,黄灯闪烁3s. (2)夜间模式:黄灯闪烁 (3)禁行模式:一侧红灯,一侧绿灯 (4)时间调节:改变红绿灯时间 2.仿真 (1) ...
- 基于51单片机的无线遥控门铃仿真程序原理图设计
硬件设计 (末尾附文件) 原理图: 包含了发射和接收部分 仿真图:发射部分用按键模拟 程序设计 // //51单片机无线遥控门铃程序 // #include<REG51.H> #defin ...
- 基于51单片机的温度监测控制系统仿真程序原理图设计
整体方案设计 3.1.1 系统概述 整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统.其它个模块围绕着单片机最小系统展开.其中包括,传感器采用DS18B20,负 ...
- 51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总
51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总 浏览必读: 使用关键词搜索可以达到事半功倍的效果. 电脑浏览器CTRL+F可以使用搜索查找 设计编号J000 功能说明: 1.四路交通 ...
- 基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警)
基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J013 目录标题 基于51单片机十字路口 ...
- 【毕业设计】15-基于单片机的交通灯系统设计(原理图+仿真+论文)
[毕业设计]15-基于单片机的交通灯系统设计(原理图.仿真.源代码工程+答辩论文+答辩PPT) 文章目录 [毕业设计]15-基于单片机的交通灯系统设计(原理图.仿真.源代码工程+答辩论文+答辩PPT) ...
最新文章
- Cocos2d-x 学习笔记一 HelloWorld
- php cgi windows7安装,PHP For Windows64位
- mysql 8.0 慢查询_MySQL慢查询分析
- Spring CommonsMultipartResolver 上传文件
- 配置redis自启动脚本
- 工厂模式例子之计算器的实现
- leetcode刷题集:栈与队列
- 五行代码终极完美解决从IE6到Chrome所有浏览器的position:fixed;以及闪动问题
- ASP.NET Core 源码学习之 Logging[3]:Logger
- 00058 imp_IMP-00058: ORACLE error 12154 encountered
- C#/.NET整数的三种强制类型转换(int)、Convert.ToInt32()、int.Parse()的区别
- 软件测试之黑盒测试白盒测试
- 2018DeeCamp面试问答
- 三种数据流分析的方程、用途
- win10突然复制粘贴用不了了
- 使用 Gitee 进行代码管理
- 图像处理基础——空间域处理之灰度变换
- linux中感叹号的作用,Linux - 感叹号
- 房屋装修合同书范本【收藏备用】
- three.js 事件交互