at89c51单片机-交通灯控制系统(含源码及仿真图)(21页).doc
-at89c51单片机-交通灯控制系统(含源码及仿真图)-第 17 页单片微型计算机与接口技术专周报告题目班级学号 姓名 指导老师 倪继烈、姜文国完成时间 2010-12-31成都电子机械高等专科学校计算机工程系目 录一、项目名称1二、选题背景12.1 课题背景12.2 交通灯的历史1三、单片机简介23.1 单片机的发展历程23.2 单片机的特点:33.3 AT89C51单片机简介4四、设计基本要求和步骤54.1 基本要求54.2 设计步骤6五、硬件和软件设计65.1 硬件电路图65.2 程序流程图8主程序1运行过程1LED显示程序1T0中断1INT0中断15.3 P0、P1口显示状态编码表125.4 程序源代码125.5 程序运行效果图17六、心得体会19七、参考文献20微机原理与接口技术专周报告一、项目名称十字路口交通信号灯控制系统二、选题背景2.1 课题背景由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益加深等。日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。2.2 交通灯的历史1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯-煤气交通信号灯,这是城市街道的第一盏信号灯。1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。中国最早的马路红绿灯,是于1928年出现在上海的英租界。三、单片机简介3.1 单片机的发展历程单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 在MCS-51系列单片机中,有两个子系列:51子系列和52子系列。每个子系列有诺干中型号。51系列有8051、8751和8031三个型号,后来经过改进产生了80c51、87c51、80c31三个型号;52系列有5021、8752、8032三个型号,改进后的型号是80c52/87c52、80c32。改进后的型号更加省电。52系列比对应的51系列增加了定时器T2并将内部程序存贮器增加到8KB。Inter公司停止生产MCS-51系列单片机之后将生产权转让给了许多其他公司,于是出现了许多与Mcs-51兼容的单片机。现在生产mcs-51兼容单片机的公司对其进行了不同程度的改进和提高。我们现在使用比较的多的是AT89C51/AT89s51等。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗3.2 单片机的特点:(1)性价比高,开发周期短,易于产品化,(2)集成度高,可靠性好,抗干扰性强,(3)功能完善,接口多样,(4)低功耗、低电压一般电源供电电压在53V范围内单片机都能正常工作,供电的下限可达12V。(5)总线多样,易于扩展单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。外部总线增加了I2C及SPI等串行总线方式, 可根据需要进行并行或者串行扩展。3.3 AT89C51单片机简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路四、设计基本要求和步骤十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。4.1 基本要求本系统需要采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器,实现以下功能:1. 初始东西绿灯亮,南北红灯亮,东西方向通车。2. 延时27s,东西路口绿灯熄灭,黄灯闪烁3次。3. 黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。4. 延时27s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。5. 当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。当事故处理完毕(再次按中断键),重新按上述方式工作。6. 当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。4.2 设计步骤1.利用Proteus 7.5 SP3仿真软件按下列要求绘制仿真实例² 用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯² 用P0、P1口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码² P31、P32、P34P37控制数码管的位选² P20P24接收中断信号并反馈给INT0接口进行中断处理2.按照基本要求编制程序实现相应功能。五、硬件和软件设计5.1 硬件电路图硬件电路图通过Proteus 7.5 SP3仿真之后如图1所示,其中:按钮K0连接P20端口实现红灯全亮,处理交通意外按钮K1连接P21端口实现南北方向亮灯时间+1s按钮K2连接P22端口实现南北方向亮灯时间-1s按钮K3连接P23端口实现东西方向亮灯时间+1s按钮K4连接P24端口实现东西方向亮灯时间-1s整体实验连接电路如下图所示: 图1 整体连接电路图5.2 程序流程图主程序开始设置中断工作方式、触发方式、初始化是否有中断运行过程执行中断YN中断结束,退出中断,返回运行过程SN:绿灯(27),EW:红灯是否到3秒SN:黄灯亮,EW:红灯Count<10?SN:黄灯灭,EW:红灯是否到0秒NYYNNEW:绿灯(27),SN:红灯是否到3秒EW:黄灯亮,SN:红灯Count<10?EW:黄灯灭,EW:红灯是否到0秒YYYNNNLED显示缓冲区 DISPYLED显示程序Display获取当前通行剩余时间送h、lE/S/W/N状态送P0口位选码送P3口倒计时个/十位送P1口调用Delay延时i+;j+四位显示完?YN返回主程序T0中断定时计数初值50ms计数(count)加1判断1S(count=20?)到否count清0Time_SN-;Time_EW-恢复现场中断返回NY中断返回恢复现场Busy_Button=0所有路口全红灯Busy_Button=1SN_Add=0SN1+=1SN1>99NSN1=99YSN_Red=0SN1-=1SN1<20NSN1=20YEW_Add=0EW1+=1EW1>99NEW1=99YEW_Red=0EW1-=1EW1<20NEW1=20YINT0中断获取中断信息5.3 P0、P1口显示状态编码表P0编码备注P07P06P05P04P03P02P01P00111111100FEH红灯101111110BFH黄灯111101110F7H绿灯P1编码备注P17P16P15P14P13P12P11P10111100000C0H0111110010F9H1101001000A4H2101100000B0H31001100199H41001001092H51000001082H611111000F8H71000000080H81001000090H95.4 程序源代码#define uchar unsigned char#include<reg51.h>/*变量、控制位定义*/uchar code table10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/09段选码uchar code table128=0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFE,0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFE,0xFE,0xFE;/*各种状态下红绿灯段选码,状态(0-3):EW绿灯,SN红灯;状态(4-7):EW黄灯亮,SN红灯;状态(8-11):EW黄灯灭,SN红灯;状态(12-15):EW红灯,SN绿灯;状态(16-19):EW红灯,SN黄灯亮;状态(20-23):EW红灯,SN黄灯灭;状态(24-27):EWSN全红灯*/uchar code tab4=0x1E,0x2D,0x4E,0x8D;/数码管显示位选码uchar EW=30,SN=30,EW1=30,SN1=30;/初始化交通灯时间uchar count;/计时中断次数uchari,j;/循环控制变量sbitBusy_Button=P20;/交通意外控制位sbitSN_Add=P21;/SN通行时间加按钮sbitSN_Red=P22;/SN通行时间减按钮sbit EW_Add=P23;/EW通行时间加按钮sbit EW_Red=P24;/EW通行时间减按钮char Time_EW;/EW方向计时charTime_SN;/SN方向计时/*延时子程序*/void Delay(uchar a)/循环a次uchar x;x=a;while(x-);/*数码管显示子程序*/void Display(uchar j)/j控制显示table中连续位的起始点char h,l;if(j<11)/根据状态判定时间h=Time_EW/10;/EW通行时间十位l=Time_EW%10;/EW通行时间个位else if(j<23)h=Time_SN/10;/SN通行时间十位l=Time_SN%10;/SN通行时间个位for(i=0;i<4;)/按位显示通行状况及时间P0=table1j;/通行状况显示P3=tabi;/位选显示i+;j+;if(i%2)/两位计时显示P1=tablel;Delay(400);elseP1=tableh;Delay(400);Delay(5);/*INT0外部中断服务程序*/void EXINT0(void) interrupt 0/INT0外部中断EX0=0;/关中断if(Busy_Button=0)P0=0xFE;/意外按钮按下全显示红灯for(;Busy_Button!=1;)/意外按钮弹起时恢复之前状态Display(24);/*四个时间控制按钮分别控制SN、EW方向初始通行时间加减,最长不超过s,最少不低于s*/if(SN_Add=0)/SN+1SN1+=1;if(SN1>99)SN1=99;if(SN_Red=0)/SN-1SN1-=1;if(SN1<20)SN1=20;if(EW_Add=0)/EW+1EW1+=1;if(EW1>99)EW1=99;if(EW_Red=0)/EW-1EW1-=1;if(EW1<20)EW1=20;EX0=1;/开中断/*TO计时中断服务程序*/void timer0(void) interrupt 1 using 1/T0中断TH0=0x3C;TL0=0xB0;/定时计数初值count+;/中断溢出一次count+1if(count=20)Time_EW-;Time_SN-;count=0; /中断次计数s,count回,倒计时时间-1/*亮灯控制*/void Process()Time_EW=EW;/初始化东西方向通行时间while(Time_EW>3)/状态:EW绿灯,SN红灯j=0;Display(j);/调用显示函数while(Time_EW>0)/状态-3:EW黄灯闪烁if(count<10)/状态:EW黄灯亮j=4;Display(j);else/状态:EW黄灯灭j=8;Display(j);SN=SN1;/重置SN方向时间Time_SN=SN;/初始化南北方向通行时间while(Time_SN>3)/状态:EW红灯,SN绿灯j=12;Display(j);while(Time_SN>0)/状态-6:SN黄灯闪烁j=16;if(count<10)/状态:SN黄灯亮Display(j);else/状态:SN黄灯灭j=20;Display(j);EW=EW1;/重置EW初始时间/*主程序*/main()TMOD=0x01;/定时器工作方式TH0=0x3C;/定时器初始化TL0=0xB0;IT0=1;/中断触发方式为下降沿触发EA=1;/CPU开中断ET0=1;/开定时中断TR0=1;/启动定时EX0=1;/开外部INT0中断while(1)Process();5.5 程序运行效果图图2 正常状态图3 黄灯状态图4 紧急状态图5 延长通行时间六、心得体会通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决现实问题的能力。使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为一名合格的应用型人才打下良好的基础。综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更深层次的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流得到解决。还有交通灯是我们生活中非常常见的一种东西,对于我们学以致用的这种能力得到了很好锻炼,能够为我们以后的工作于学习打下基础。由于本人的水平有限,设计中难免会有一些不合理的部分,系统的稳定性还有待提高。最后,对在这个专周帮助我的所有同学和各位指导老师再次表示衷心的感谢!七、参考文献【1】李伯成:单片机及嵌入式系统,清华大学出版社,2005【2】胡汉才:单片机原理及接口技术,清华大学出版社,2000【3】王田苗:嵌入式系统设计与实例开发,清华大学出版社,2002【4】蔡伟智:LED道路交通灯的研制,液晶与显示,第20卷第五期【5】张友德:单片机原理与应用,复旦大学出版社,2002【6】倪继烈:微型计算机原理与接口技术,清华大学出版社,2005【7】李群芳:单片微型计算机与接口技术(第三版),电子工业出版社,2008【8】张大明:单片机控制实训,机械工业出版社,2007