点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87763760?spm=1001.2014.3001.5503
源码获取
主要内容:
设计一个能够控制十二盏交通信号灯的模拟系统,:利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。
基本要求:
1、通过单片机课程设计,了解并掌握汇编语言的编程方法,将理论联系实践,提高动脑和动手的能力。
2、通过该控制系统的设计,掌握定时计数器及中断的使用方法,和简单程序的编写,提高自己的逻辑抽象能力。
3、完成系统基本的硬件和软件设计,并进行仿真调试。
主要参考资料:
[1]刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.
[2]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.
[3]马忠梅等.单片机的C语言应用程序设计.北京航空航天大学出版社,2003.
[4]王晋凯.简简单单学通51单片机开发 [M].清华大学出版社,2014.
[5]夏继强.单片机实验[M].北京: 航空航天大学出版社,2001
完 成 期 限:12 月 11 日 - 12 月 26 日
指导教师签名:
课程负责人签名:
摘 要
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显作用。本系统采用单片机89C52为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。
本设计采用51系列单片机ATMEL89C51为核心控制器件来设计已经简单的交通灯控制器。本系统由单片机I/0口扩展系统、交通灯状态显示系统、LED 数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外,还具有倒计时功能,较好的模拟实现了十字路口可能出现的状况。
软件上采用KEILC编程,主要编写了主程序,LED 数码管显示程序,中断程序延时程序等。经过Proteus 8整机调试,实现了对十字路口交通灯的模拟。
关 键 词:AT89C51;LED;交通灯
目 录
摘 要 1
1 概述 1
1.1设计背景 1
1.2设计目的 1
2 技术介绍 2
2.1 keil 2
2.2 proteus 2
3 总体方案与硬件设计 3
3.1硬件电路各元件介绍 3
3.1.1核心芯片AT89C51单片机的说明 3
3.1.2两位共阴七段数码管 4
3.1.3二极管 4
3.2复位电路 5
3.3振荡电路 5
3.2总体电路工作原理 5
4 系统程序设计 7
4.1系统电路图 7
4.2程序源代码 7
5 仿真测试 11
5.1软件调试 11
5.2仿真调试 12
5.2.1所需软件查询展示 12
5.2.2四种状态展示 12
5.3结果分析 14
6 总结 15
参考文献 16
1 概述
1.1设计背景
当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19世纪就已经出现了。
1858年,在英国伦敦主要街头安装了以燃某气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦孰威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组
成。红色表示“停止”,绿色表示“注意”。
电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。红k灯亮表示“停止”,绿灯亮表示“通行”。
信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一利中标志禁止某一利梓专向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越城过停车线。但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!
1.2设计目的
本设计是由单片机控制的交通信号灯,运用89c51单片机实现交通灯的控制,实现红绿灯自动跳变,倒计时显示,黄灯蜂鸣器警示灯功能。在这次设计作品中,不仅可以增加对整套系统运行的合理安排,为未来做大的项目打下基础,也可以增加对软硬件的在系统中的作用的了解,同时也培养了我们团队的合作能力。1.3设计思路
模拟交通灯控制器就是使用单片机来控制一些LED灯和数码管,模拟真实交通灯的功能。当南北主干道通车时绿灯亮,而东西次干道干道红灯亮;当25s通车时间到后,主干道绿灯熄灭,黄灯亮,黄灯亮5s后由主干道切换到次干道通车。此时主干道黄灯熄灭,红灯亮,而次干道红灯熄灭,绿灯亮,次干道开始通车;25s通车时间到后,次干道绿灯熄灭,黄灯亮,黄灯亮5s后由次干道切换到主干道通车。此时次干道黄灯熄灭,红灯亮;而主干道红灯熄灭,绿灯亮,如此不断循环。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通。片机中,运行系统。设计好后通过proteus软件仿真,并调试。
2 技术介绍
2.1 keil
Keil C51是一款兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,[1]因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil的优势。
2.2 proteus
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译.
3 总体方案与硬件设计
3.1硬件电路各元件介绍
3.1.1核心芯片AT89C51单片机的说明
1.AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammable and Erasable Read Only Memory )的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活
性高且价廉的方案。
图3-1 AT89C51
2.引脚说明
1)电源引脚
VCC(40口) +5v直流电
VSS (20口)接地
2)复位引脚
RST(9口) 复位输入信号
3)时钟引脚
XTAL1(19口) 晶振输入口
XTAL2 (18口) 晶振输入口
4)控制引脚
ALE(30口)地址锁存允许信号
PSEN (29口) 外部存储器选通信号
EA(31口)EA引脚表示存取外部程序代码之意,低电平动作,当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。EA引脚必须接低电平,因为其内部无程序存储器空间。
5)I/O口引脚
P0# : P0.0~P0.7
P1# : P1.0~P1.7
P2# : P2.0~P2.7
P3# : P3.0~P3.7
6)P3口复用引脚
P3.0串口输入;
P3.1串口输出;
P3.2外部中断0;
P3.3外部中断1;
P3.4计数器输入0;
P3.5计数器输入1;
P3.6外部存储器写信号;
P3.7外部存储器读信号;
3.1.2两位共阴七段数码管
两位共阴七段式数码管其实就是将两个一位八段式数码接相应的电路组合在一起。并引出两控制端1和2,同过其电平的高低来控制两个数码管的高低位
工作。
图3-2 两段共阴七段数码管
3.1.3二极管
交通信号灯:采用红、黄、绿三种颜色的二极管组成三色交通信号。
图3-3 三色二极管
3.2复位电路
本设计中的单片机采用了外接的复位电路,并且采用了一种上电复位和手动复位的组合。自动上电复位电路保证在上电开机时对AT89C51单片机进行正确的复位,手动复位可在上电复位基础上并接一个复位开关,这样既保证上电复位,又可手动复位。单片机复位后,内部特殊功能寄存器复位后的状态为确定值。
图3-4复位电路
3.3振荡电路
AT89C51的XTAL 1和XTAL 2引脚分别为单极片内反相放大器的输入/输出端,其频率范围为1.2~1 2 MHz。XTAL2又是内部时钟发生器的输入端,这个内部反相器可与外部元件组成皮尔斯振荡器。
图3-5振荡电路
3.2总体电路工作原理
十字路口要有数字显示装置,作为时间提示,以便人们更直观地把握时间。具体要求为:当某方向绿灯亮时,置定时器为某一个数值,然后以每秒减1的计数方式工作,直至减到数为0,十字路口红、绿灯交换,一次工作循环结束,进入另一个方向的工作循环。数码显示管就是用来显示东西和南北两个道口的红黄绿三种颜色的灯的倒计时时间。
南北路处于禁止通行的状态,东西路处于允许通行的状态。南北路亮红灯时,东西路亮绿灯;南北路亮绿灯时,东西路亮红灯。南北路亮红灯时,东西路亮绿灯;当绿灯时间减完之后,东西路换为黄灯,南北路仍为红灯.这样东西路与南北路的时间同时减完。减完之后,东西路换为红灯,南北路换为绿灯,再经过一个绿灯时间,南北路换为黄灯,东西路仍为红灯。这时东西路与南北路时间相同,同时减完。减完后,南北路为红灯,东西路为绿灯。如此隔环下去。
整个设计满足了任务的要求,即完成了四个状态的转换,完成了倒计时数码管的显示,所以这个系统的设计足以控制十字路口的交通灯正常变换,保证各道车辆的畅通运行。
4 系统程序设计
4.1系统电路图
图4-1 系统电路图
4.2程序部分代码
#include<reg51.h>
sbit led_red = P1 ^ 0;
sbit led_yellow = P1 ^ 1;
sbit led_green = P1 ^ 2;
sbit led_red1 = P1 ^ 3;
sbit led_yellow1 = P1 ^ 4;
sbit led_green1 = P1 ^ 5;
unsigned int i = 0;
unsigned int j = 0;
unsigned char code LedChar[] ={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 }; //0 1 2 3 4 5 6 7 8 9
static unsigned int sec = 5;
static unsigned char togle_flag = 0;
static unsigned char rg_flag = 0;
static unsigned char skip_yellow = 0;
static unsigned char fs = 0;
void timer0(){
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void tcount() interrupt 1 {
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
i++;
}
void display(){
//P0 = 0x01;
P0 = 0x05;
P2 = LedChar[sec % 10]; //
P3 = LedChar[(sec + 5) % 10];
5 仿真测试
5.1软件调试
(1)生成hex文件::
图5-1生成hex文件
(2)将hex文件导入AT89C51中:
图5-2导入hex文件
5.2仿真调试
在keil中调试完成后,生成文件,再到proteus中进行仿真。
5.2.1所需软件查询展示
图5-3所需元件展示图
5.2.2四种状态展示
1)点击play键,电路开始进行仿真,此时红绿灯显示的情况为:南边方向为绿灯亮,东西方向为红灯亮。南边方向通行时间为25秒,东西禁止通行时间为25秒,交通灯显示状态如图所示。
图5-4状态一
2)在开始仿真经过25秒后,黄灯开始闪烁,闪烁时间为5秒,红绿灯的状态将发生变化,南边方向黄灯闪烁,显示情况如图所示。
图5-5状态二
3)此时红绿灯显示的情况为:东西方向为绿灯亮,南北方向为红灯亮。南边方向禁止通行时间为30秒,南北通行时间为25秒,交通灯显示状态如图所示。
图5-6状态三
4)在开始仿真经过25秒后,黄灯开始闪烁,闪烁时间为5秒,红绿灯的状态将发生变化,东西方向黄灯闪烁,显示情况如图所示。
图5-7状态四
5.3结果分析
经过测试,本次简单交通灯设计基本满足了所需要的要求,可以进行简单的红绿黄灯计时显示,避免出现拥挤、堵车等现象,但设计也有不足,由于程序设计较为简便,无法对具体的的路况进行适时地调整,无法通过对当前道路的状况进行智能化调节。比如;早高峰和晚高峰期间的人流和车辆较多,可以适当增加绿灯时间,减少红灯时间,以此来减少道路拥挤。
6 总结
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计C语言的掌握方面都能向前迈了一大步。本次课程设计的过程是艰辛的,不过收获却是很大的.本次课程设计用到了许多单片机上所学的知识,使书本上所学的知识得到了实际应用,同时也发现了很多自己的不足之处。经过多次查阅相关书籍和资料,一些自己不是很有把握的地方得到了补充,不仅完成了课程设计的任务,更增长了自己的知识面,填补了很多知识的空白之处,使我又有了新的长进,学到了新的知识。
通过本次的课程设计,使我学到了很多新的知识,经历了将理论转化为实践的过程,知道了如何让将所学的理论知识转化为生活中所常见的东西,所学知识得到了充分应用。大学的课堂是给我们学习专业知识的,而我们更应该把自己所学到的书面知识应用到生活中去。课程设计给了我们这样一个化理论为实践的机会,自己独立的完成这么一个任务,看起来很难,但当你深入到这个过程中去时,每一点点的成功都会让自己欣喜若狂,这是一个享受成功的过程,也是一个良好的学习机会.当然,也遇到了很多困难,让我认识到了很多不足,我会在以后的学习生活当中不断磨练自己、完善自己,为自己以后的职业生活储备更多的知识,做一个生活的强者。
参考文献
[1] 何立民.单片机高级教程[M].北京: 航空航天大学出版社,2001.
[2] 王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.
[3] 马忠梅等.单片机的C语言应用程序设计.北京航空航天大学出版社,2003.
[4] 王晋凯.简简单单学通51单片机开发 [M].清华大学出版社,2014.
[5] 夏继强.单片机实验[M].北京: 航空航天大学出版社,2001.