设计方案

(末尾附文件)
采用单片机的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单片机的交通灯仿真方案原理图设计一个数码管相关推荐

  1. 【019】基于51单片机的交通灯Proteus仿真设计

    一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...

  2. 基于51单片机十字路口交通灯_5s黄灯闪烁

    基于51单片机十字路口交通灯_5s黄灯闪烁 目录标题 基于51单片机十字路口交通灯_5s黄灯闪烁 功能要求 仿真图 程序 主要程序代码 程序讲解 倒计时的产生 红黄绿灯状态处理 倒计时显示处理 资料清 ...

  3. 基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s

    基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s (程序+仿真+参考报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号J011 目录标题 基于5 ...

  4. 基于51单片机的交通灯控制系统课程设计(含proteus仿真图及代码)

    一.设计要求: 1,十字路口的交通控制系统指挥着人和各种车辆的安全运行,对交叉口实行科学的管理与控制是交通控制工程的重要研究课题,是保障交叉口的交通安全和充分发挥交叉口的通行能力的重要措施,是解决城市 ...

  5. 基于51单片机的交通灯(资源链接见末尾)

    1.控制要求   (1) 东西南北双向红绿灯显示,红灯30s,绿灯27s,黄灯闪烁3s. (2)夜间模式:黄灯闪烁 (3)禁行模式:一侧红灯,一侧绿灯 (4)时间调节:改变红绿灯时间 2.仿真 (1) ...

  6. 基于51单片机的无线遥控门铃仿真程序原理图设计

    硬件设计 (末尾附文件) 原理图: 包含了发射和接收部分 仿真图:发射部分用按键模拟 程序设计 // //51单片机无线遥控门铃程序 // #include<REG51.H> #defin ...

  7. 基于51单片机的温度监测控制系统仿真程序原理图设计

    整体方案设计 3.1.1 系统概述 整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统.其它个模块围绕着单片机最小系统展开.其中包括,传感器采用DS18B20,负 ...

  8. 51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总

    51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总 浏览必读: 使用关键词搜索可以达到事半功倍的效果. 电脑浏览器CTRL+F可以使用搜索查找 设计编号J000 功能说明: 1.四路交通 ...

  9. 基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警)

    基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J013 目录标题 基于51单片机十字路口 ...

  10. 【毕业设计】15-基于单片机的交通灯系统设计(原理图+仿真+论文)

    [毕业设计]15-基于单片机的交通灯系统设计(原理图.仿真.源代码工程+答辩论文+答辩PPT) 文章目录 [毕业设计]15-基于单片机的交通灯系统设计(原理图.仿真.源代码工程+答辩论文+答辩PPT) ...

最新文章

  1. Cocos2d-x 学习笔记一 HelloWorld
  2. php cgi windows7安装,PHP For Windows64位
  3. mysql 8.0 慢查询_MySQL慢查询分析
  4. Spring CommonsMultipartResolver 上传文件
  5. 配置redis自启动脚本
  6. 工厂模式例子之计算器的实现
  7. leetcode刷题集:栈与队列
  8. 五行代码终极完美解决从IE6到Chrome所有浏览器的position:fixed;以及闪动问题
  9. ASP.NET Core 源码学习之 Logging[3]:Logger
  10. 00058 imp_IMP-00058: ORACLE error 12154 encountered
  11. C#/.NET整数的三种强制类型转换(int)、Convert.ToInt32()、int.Parse()的区别
  12. 软件测试之黑盒测试白盒测试
  13. 2018DeeCamp面试问答
  14. 三种数据流分析的方程、用途
  15. win10突然复制粘贴用不了了
  16. 使用 Gitee 进行代码管理
  17. 图像处理基础——空间域处理之灰度变换
  18. linux中感叹号的作用,Linux - 感叹号
  19. 房屋装修合同书范本【收藏备用】
  20. three.js 事件交互

热门文章

  1. 你还在用命令看日志?快用 Kibana 吧,一张图片胜过千万行日志!
  2. 4244. 【五校联考6day2】yi (Standard IO)
  3. python中摄氏度华氏度相互转换
  4. F1 Delta Time 将停止运营,玩家的奖励如何?
  5. golang 格式化时间总结
  6. QCY T3 蓝牙耳机连接电脑 声音断续卡顿
  7. 什么是软件EV代码签名证书
  8. 验证是不是合法的18位身份证号码代码
  9. android blowfish加密算法,blowfish 现在哪种加密算法安全?A
  10. vs code设置默认浏览器