单片机交通灯课程设计

单片机交通灯设计(含箭头指示)

大家好,我是Alex,这篇文章是我做课程设计总结后想拿出来跟大家分享。我在完成交通灯的基本显示后,我对任务提出了更高的要求,增加了交通灯箭头显示,由于我对扩展芯片不熟悉,时间紧迫,我采用了增加AT89C51芯片的方法来对LED点阵进行控制。
在编程过程中发现了平时学习遗漏的问题,将所学的知识运用到实践中是非常关键的。编写程序是一个需要试错的过程,尝试不同种方法寻找最优解。有些复杂的程序也是通过不断的完善,由实现简单功能到实现多种功能。编程非常考验耐心,要坚持下来问题才有突破的可能。
希望你看了这篇文章后能有收获。

设计概况

(1)用P1.0、P1.1、P1.2控制东西通道的红、黄、绿灯;用P1.3、P1.4、P1.5控制南北通道的红、黄、绿灯;
(2)开始时,南北红灯亮并保持25秒,同时东西绿灯亮,保持20秒,20秒钟到了之后,东西绿灯闪烁3次(周期为1秒)后熄灭。继而东西黄灯亮并保持2秒,到2秒后,东西黄灯灭,东西红灯亮并保持25秒,同时南北红灯灭,南北绿灯亮20秒,20秒到了之后,南北绿灯闪烁3次(周期为1秒)后熄灭。继而南北黄灯亮并保持2秒,到2秒后,南北黄灯灭,南北红灯亮,同时东西红灯灭,东西绿灯亮。到此完成一个循环。
(3)出现紧急情况时,用中断方式实现南北、东西红灯持续亮10秒。注意保护现场。其中,要求使用P3.2引脚接收紧急控制信号,通过外部中断0实现紧急情况的交通灯控制操作。
实现在两位LED数码管上显示时间。

Proteus仿真模型

这里我使用的Proteus是ISIS7的版本和keil5进行C语言的编程。

序号 名称 数量
1 两位数共阳极数码管 4
2 AT89C51芯片 3
3 按键 4
4 电容器 9
5 12MHZ晶振 3
6 LED-Green 4
7 LED-Red 4
8 LED-Yellow 4
9 电阻 15
10 8x8点阵-Green 4
11 8接口电阻排 1

仿真效果截图

效果图
主芯片

东西走向点阵接线

南北走向点阵

东西走向局部


南北走向局部

主芯片代码

#include<reg51.h>
unsigned char count=0;//count计数变量time倒计时初始值
unsigned int time;//time倒计时初始值
unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管段选
void delay(unsigned int i)
{unsigned int k;for(k=0;k<i;k++);
}
void time0_5() interrupt 3
{TH1=(65536-50000)/256;TL1=(65536-50000)%256;count++;
}
void init0()   //定时器初始函数
{TMOD=0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;
}
void disp()
{delay(50);P2=0x01;         //十位位选P0=led[time/10];delay(50);P0=0xff;         //段选关闭P2=0x02;          //个位位选P0=led[time%10];delay(50);
}void init1()//南北红灯20秒,东西绿灯20秒
{time=20;init0();  //初始化while(1){P0=0xff;P1=0x0c;if(count==20)//1S到{count=0;   //计数清零time--;if(time==0){time=20;break;}                }disp();}
}
void init2()//东西绿灯闪3次,南北红灯3秒
{time=3;init0();  //初始化while(1){P0=0xff;P1=0x08;       //东西绿灯灭,南北红灯亮if(count==10)  //0.5S到{P1=0x0c;}else if(count==20){P1=0x08;count=0;time--;if(time==0){time=3;break;}}disp();}
}
void init3()//东西黄灯,南北红灯2秒
{time=2;init0();  //初始化while(1){P0=0xff;P1=0x0a;if(count==20)//1S到{count=0;   //计数清零time--;if(time==0){time=2;break;}              }disp();}
}
void init4()//东西红灯20秒,南北绿灯20秒
{time=20;init0();  //初始化while(1){P0=0xff;P1=0x21;if(count==20)//1S到{count=0;   //计数清零time--;if(time==0){time=20;break;}                }disp();}
}
void init5()//南北绿灯闪3次,东西红灯3秒
{time=3;init0();  //初始化while(1){P0=0xff;P1=0x01;       //南北绿灯灭,东西红灯亮if(count==10)  //0.5S到{P1=0x21;}else if(count==20){P1=0x01;count=0;time--;if(time==0){time=3;break;}}disp();}
}
void init6()//南北黄灯,东西红灯2秒
{time=2;init0();  //初始化while(1){P0=0xff;P1=0x11;if(count==20)//1S到{count=0;   //计数清零time--;if(time==0){time=2;break;}          }disp();}
}
void emergency() interrupt 0  //紧急情况,禁止通行
{unsigned char L,m,n,o;EA=0;L=P1;m=TH1;n=TL1;o=time;P1=0x09;time=10;while(1){TH1=(65536-50000)/256;TL1=(65536-50000)%256;while(!TF1){disp();}TF1=0;count++;if(count==20){count=0;time--;}if(time==0)break;}EA=0;P1=L;TH1=m;TL1=n;time=o;EA=1;
}
void main()
{TMOD=0x10; //定时器工作方式1TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;      //总中断PX0=1;     //外部中断0位高优先级EX0=1;     //外部中断0IT0=1;     //外部中断0下降沿触发ET1=1;    //T1中断允许P1=0x00;while(1)  {init1();//南北红灯20秒,东西绿灯20秒init2();//东西绿灯闪3次,南北红灯3秒init3();//东西黄灯,南北红灯2秒init4();//东西红灯20秒,南北绿灯20秒init5();//南北绿灯闪3次,东西红灯3秒init6();//南北黄灯,东西红灯2秒}
}

##副芯片代码1

#include<reg51.h>
unsigned char w,i,count=0;
unsigned int time;
void delay(unsigned int i)
{unsigned int k;for(k=0;k<i;k++);
}void time0_5() interrupt 3
{TH1=(65536-50000)/256;TL1=(65536-50000)%256;count++;
}
void init0()   //定时器初始函数
{TMOD=0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;
}
void init1()//东西绿灯,直行右转10s
{unsigned char led[]={0x7f,0x7b,0x79,0x00,0x79,0x1b,0x3f,0x7f};  init0();time=10;while(1){w=0x01;for(i=0;i<8;i++){P1=w;     //行P2=led[i];//列delay(20);w<<=1;}if(count==20)//1S到{count=0;   //计数清零time--;if(time==0){time=10;break;}             }}
}
%
此处省略**行void init3()//关灯函数
{P1=0x00;P2=0xff;init0();time=30;while(1)    {if(count==20)//1S到{count=0;   //计数清零time--;if(time==0){time=30;break;}               }}
}
void emergency() interrupt 0  //紧急情况,禁止通行
{unsigned char k,L,m,n,o;EA=0;k=P1;L=P2;m=TH1;n=TL1;o=time;time=10;while(1){delay(20);       TH1=(65536-50000)/256;TL1=(65536-50000)%256;while(!TF1){unsigned char led[]={0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e};w=0x01;for(i=0;i<8;i++){P1=w;      //行P2=led[i]; //列delay(20);w<<=1;}}TF1=0;count++;if(count==20){count=0;time--;}if(time==0)break;}EA=0;P1=L;TH1=m;TL1=n;time=o;EA=1;
}void main()
{%此处省略**行%while(1){init1();//东西直行右转10sinit2();//东西左转10sinit3();//间隔30s}
}

结束语

希望我的分享对你的学习有帮助。
加油学习人!!!
从简单的程序入手不断尝试,多试几次就可以了,最后祝你学习进步天天开心。

单片机交通灯设计(含箭头指示)相关推荐

  1. 基于51单片机交通灯设计时间可设置仿真红绿灯十字路口

    演示视频:https://www.bilibili.com/video/BV1Tt4y1y7s8/ 将链接复制至IE浏览器打开!!! 功能操作说明: 从上到下,设置键,加键,减键,特殊键.单独一个按键 ...

  2. 52单片机交通灯课程设计

    单片机交通灯课程设计 1. 实验目的和器件 1.1实验目的 (1)通过单片机课程设计,熟练掌握C语言的编写方法,将理论联系到实际中去,提高我们的动手和动脑能力. (2)通过交通信号灯控制系统的设计,掌 ...

  3. 基于单片机的交通灯设计

    摘要 本系统由单片机系统.键盘.LED 显示.交通灯演示系统组成.系统包括人行道.左转.右转.以及基本的交通灯的功能.系统除基本交通灯功能外,还具有倒计时.时间设置.紧急情况处理.分时段调整信号灯的点 ...

  4. 基于红外技术的交通灯设计

    目录 基于红外技术的交通灯设计 1 摘 要 1 Abstract 2 1 引言 1 1.1基于红外技术的交通灯的选题背景 1 1.2基于红外技术的交通灯选题的现实意义 1 1.3国内外研究现状及其发展 ...

  5. 简易交通灯控制系统设计c语言,基于单片机交通灯控制系统设计毕业设计.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 基于单片机交通灯控制系统设计毕业设计.doc30页 本 ...

  6. 基于51单片机交通灯控制系统

    51单片机交通灯控制系统 可调时间+紧急+行人+黄灯5s 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J008 目录标题 51单片机交通灯控制系统 ...

  7. 51单片机交通灯(定时器+38译码器+中断)

    51单片机交通灯这个实例主要用到的知识点有: >如何点亮LED >38译码器位选与段选 >定时器控制 >中断控制 #include <reg52.h>/****** ...

  8. 【FPGA】EDA技术综合设计 交通灯设计

    交通灯设计: 1.设计原理 (1)对项目进行模块划分.对各模块的功能及其端口进行说明. ①分频器部分 降低实验板固有频率,分出频率用来计数和数码管动态扫描. ②状态机部分 0,1,2,3四个基础状态以 ...

  9. 微型计算机接口与技术的交通灯,微机原理与接口技术课程设计——交通灯设计.doc...

    微机原理与接口技术课程设计--交通灯设计.doc 1 任务及要求 1.1设计任务 交通信号灯的控制: (1)通过8255A并口来控制LED发光二极管的亮灭. (2)A口控制红灯,B口控制黄灯,C口控制 ...

  10. ewb交通灯报告和文件_基于EWB的交通灯设计

    本文着眼于目前普遍应用在城市道路上的交通灯控制系统,从课程设计的题目要求出发,设计了一个十字路口主次街道的交通灯控制电路. 首先进行交通灯状态变换的分析和交通灯总体框架的设计,接着提出了2种电路设计方 ...

最新文章

  1. linux,mac,unix 系统下cd 进入有空格的目录或者打开有空格的文件
  2. git学习4:分支管理
  3. Java-进阶:Java-File--IO—2
  4. erwin模型导入mysql_使用erwin进行mysql建模
  5. 【Java例题】1.3给朋友的贺卡
  6. mysql存储过程删除_MySQL 存储过程删除大表
  7. mysql从一个表查询插入另一个表存在时更新_漫谈MySQL的锁机制
  8. R中读取文件,找不到路径问题 No such file or directory
  9. CF 504E Misha and LCP on Tree——后缀数组+树链剖分
  10. X5 浏览器内核调研报告
  11. 简单的jsp代码(登录界面)
  12. 判断USB打印机离线状态
  13. 清理C盘——这个操作让你的C盘多出20G空间
  14. 诺基亚5320XM 上的最好的手机浏览器,UCWEB 6
  15. Deecamp夏令营面试及结营体验
  16. 中企海外周报 | 华为在德国发布mate30系列手机;一汽新车亮相法兰克福车展
  17. SUMX2MY2函数,你知道什么意思吗?
  18. 数字信号处理——绪论总结
  19. 操作系统中的进程调度策略有哪几种
  20. 基于PID控制的电机速度闭环控制系统演示和讲解

热门文章

  1. 0204UNIFORM SIZE=10M?index?insert分裂
  2. donet 微服务开发 学习-AOP框架基础
  3. jenkins+donet core持续集成环境搭建
  4. 基于android个人记账本的软件设计,基于Android的个人记账软件的设计与实现-开题报告...
  5. 基于微信小程序的毕业设计题目(19)php菜谱美食小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  6. Rwordseg包如何加载本地词典
  7. 论文总结(3):Intelligent Traffic Monitoring Systems for Vehicle Classification: A Survey
  8. windows下安装yarn
  9. 非线性拟合(C++版)
  10. 麦克风阵列语音增强(二)