基于STC90C51单片机的智能交通灯设计_第1页
基于STC90C51单片机的智能交通灯设计_第2页
基于STC90C51单片机的智能交通灯设计_第3页
基于STC90C51单片机的智能交通灯设计_第4页
基于STC90C51单片机的智能交通灯设计_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精心整理基于STC90C5单片机的交通灯设计1、设计题目基于STC90C51单片机的智能交通灯设计2、设计要求-2.1、系统功能(1) 按照交通规则,控制宝田路和前进路方向 及其人行道的交通信号灯(红、黄、绿)的通断。(2) 设置信号灯的通断时间。(3) 可人工干预,使交通信号灯幵启不同模式。2.2、性能参数:(1) 电源:5VDCL I(2) LED 灯电流:10mA(3) 定时时间:10s-200s3、总体设计根据系统功能和设计要求,系统采用单片机控制的方案,基于 HC6800胡发板,由STC90C5174HC573交通灯模块,动态数码显示管以及4*2精心整理独立按键组成。3.1系统工作原

2、理在十字路口,分为宝田路和前进路,正常情况下,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁 行方向对换。其具体状态如下:?; I(1)普通模式:状态一:宝田路通行阶段(宝田路及其人行道 亮绿灯30秒、前进路及其人行道亮红灯 30秒);状态二:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯 5秒);状态三:前进路通行阶段(前进路及其人行道 亮绿灯30秒、宝田路及其人行道亮红灯 30秒);状态四:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯 5秒);返回到状态一。(2)高峰期模式(设宝田路为主干道): 按下按键2( key2),开启高峰期模式;

3、 状态一:宝田路通行阶段(宝田路及其人行道亮绿灯60秒、前进路及其人行道亮红灯 30秒);精心整理状态二:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯 5秒);状态三:前进路通行阶段(前进路及其人行道 亮绿灯30秒、宝田路及其人行道亮红灯 30秒);状态四:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯 5秒);返回到状态一;按键2释放,回到普通模式。(3)紧急模式:按下按键1( keyl),开启紧急模式,所有道路及其 人行道均红灯亮,数码管不显示。释放按键 1,回 到普通模式。3.2?单片机交通控制系统的功能要求 ?本设计能模拟基本的交通控制系统,用红绿黄L I灯表示禁行,通行

4、和等待的信号发生,还能进行倒计时显示,通行时间调整功能和紧急情况全面禁 行丁。(1)倒计时显示?倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合精心整理适的选择。驾驶员和行人普遍都愿意选择有倒计时 显示的信号控制方式,并且认为有倒计时显示的路 口更安全。倒计时显示是用来减少驾驶员在信号灯 色改变的关键时刻做出复杂判断的一种方法,它可 以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择?。?(2)时间的设置?本设计中对时间进行了人为控制设置,正常情 况下宝田路和前进路的绿灯通行与红灯禁行时间均 设置为30秒、黄灯等待时间设置为5

5、秒。假设前进 路为主干道,考虑到主干道在上下班高峰期车流量 和人流量较大,人为增加开关 K2。当K2开启时, 主干道前进路上绿灯通行时间和宝田路上的红灯禁 行时间更改为60秒,其余设置均不变;当 K1关闭 时,又恢复正常情况下的时间设置。(3)紧急情况全面禁行精心整理本设计中在紧急情况下增加了全面禁行状态,增加开关K1。当K1开启时,宝田路和前进路及其 各自人行道均量红灯禁行;当K1关闭时,交通灯恢 复正常状态。4、详细设计一硬件设计 I为了实现本设计要求的具体功能,选用STC90C51单片机及外围器件构成最小控制系统,10个发光二 极管分别分成两组红黄绿和两组红绿灯构成信号灯 指示模块,4个

6、LED动态数码管构成各个方向倒计 时显示模式,两个按键分别用来设置高峰期模式和 紧急模式。4.1、单片机系统设计I I单片机设计交通灯控制系统,可用单片机直接 控制信号灯的状态变化,基本上可以指挥交通的具 体通行,当然,接入LED数码管就可以显示倒计时 以提醒行使者,更具人性化精心整理单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入 到LED数码管上实时显示HC6800S整体结构视图:STCWC5 RC/RD-魯诃!内部堆 +:J tfi 阳STC90C51内部结构图:RAM搭址KR_M書存黔=PIIII堆哎卅卜WDTI咛丫什k(蝕enConlrolPori

7、. (X1 工3 并UpneIt存品JPim n.iTT-X.cNT斗EEPJtOM nr精心整理STC90C51芯片引脚图:I溯厲 12LX/PIJPLJ iL4PLPtjbPL?KhiisFi/iNItVPLiXTAL2I 乂 TALI Iw- 1 -T* 3 J- s fr ?d uI i* 3 4 s 6 _7 Q- I I I I t I I L 112)pmphptsmjlMIZIJ.9 M 7 6 5 4 J 1* I O 4囂一 _7 b J -4 J i* + ij J 1 ? J J J J J * 2呷-一4.2、LED数码管显示屏设计LED动态数码管的显示原理为:2位8

8、段数码管电路采用“共阳”连 接驱动代码,如右图所示。段码和位码,段码即段选信号 SEG 它负责数码管显示的内容,图中 ag、dp 组成的数据(a为最低位,dp为最高位)就是段码。 位码即位选信号DIG,它决定哪个数码管工作,哪 个数码管不工作。LED数码管显示代码表如下表所 示:显示数值dp,g,f,e,d,c,b,a代码0011111110x3f1000001100x062010110110x5b3010011110x4f4011001100x665011011010x6d6011111010x7d7000011010x078011111110x7f9011011110x6fHC6800S开

9、发板中动态数码管模块原理图如下图 所示:4.3、交通灯设计Z: 1 i| f IHC6800S开发板中交通灯模块原理图如下图所 示,宝田路红黄绿灯及其人行道上的红绿灯和前 进路上的红黄绿灯由JP1控制,前进路人行道上 的红绿灯由J22控制。5、详细设计一软件设计L I5.1、软件开发工具和环境keilC51 卩 Vision6.125.2、软件总体设计5.2.1总体结构流程图如下(1) 普通模式程序流程简图如下:”红灯V3灯 ;绿灯黄灯I结 程序源代码如下:while(1)精心整理if(S=71)S=0;/*宝田路通行,宝田路绿灯亮30秒*/if(S31)Data0=0x00;Data1=Ox

10、0O;Data2=duan(30-S)/10;Data3=duan(30-S)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;1i- - -Display。; led=0xFF; /将所有的灯都熄灭 RED00=1;GREEN00=1;GREEN10=0;/宝田路人行道绿灯亮GREEN1仁0;/宝田路绿灯亮精心整理REDOO=O;/前进路人行道红灯亮RED01=0;/前进路红灯亮/*黄灯阶段,5秒*/elseif(S36):丄 1 I .、 Data0=0x00; I9Data1=0x00;Data2=duan(35-S)/10;Data3=

11、duan(35-S)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();led=0xFF; /将所有的灯都熄灭RED00=1;GREEN00=1;RED10=0;/宝田路人行道红灯亮/宝田路黄灯亮YELLOW11=0;RED00=0;前进路人行道红灯亮YELLOW01=0;/前进路黄灯亮/*前进路通行,前进路绿灯亮30秒*/elseif(S0;a)for(b=110;b0;b-);I 介、- ”* *(3) 紧急模式程序流程简图如下:if(key1=0)程序源代码如下:/*按下按键1,开启紧急模式,所有红灯亮,数码管不显示*/

12、o=toa3d-o=ooa3d -0=PLa3d -0=0La3d Boon羽占9 -P=ooa3d iddxo=pa| OAeidsiQ 00X0=ze)ea 00X0=9e)ea 00X0=9e)ea :OOxo=加 旳 :00X()=砂 EQ :OOxo=乙砂 eg 00X0=pe)ea 00X0=0e)ea (O=kAe|)4! 闻再甘:()sw血qp精心整理while(!key1); / 按键 1 释放 keyscan();(4) 高峰模式程序流程简图如下:程序源代码如下:I I/*按下按键2,开启上下班高峰期模式,主干道宝田路绿灯时间为60秒*/voidkeyscan()if(ke

13、y2=0)議疇輻 de-aymso; /讯草肩耳N(key2HH0Hwhi-eu)宀N(key20)break2辅需漠圧喩学 n(mhhi)、 一 mho;N(MC61)宀Dasrolloxoo;Dasrnlloxoo;Daf2 一Hdua(6M)M;Daf3 一Hd ua(6M) 亠;Dasr【4lloxoo; 一 TDasr【5lloxoo;DasraHDasrKSl;Daf7 Daf3Disp-ayo;-edHOXFF;REDOO 丄精心整理GREEN0O=1;GREEN1O=0;GREEN1 仁0;REDO0=O;RED01=0; elseif(M66) Data0=0x00;Data

14、1=0x00; Data2=duan(65-M)/10;Data3=duan(65-M)%10; Data4=0x00;r X ! i ii iData5=0x00;IData6=Data2;Data7=Data3;Display();led=0xFF;RED00=1;精心整理GREEN0O=1;RED10=O;YELLOW11=0;RED00=0;YELLOW0 仁0; elseif(M96) Data0=0x00;Data1=0x00;Data2=duan(95-M)/10;Data3=duan(95-M)%10; Data4=0x00;r X ! i ii iData5=0x00;IDa

15、ta6=Data2;Data7=Data3;Display();led=0xFF;RED00=1;精心整理GREEN0O=1;RED10=O;RED1 仁0;GREEN00=0;GREEN01=0; elseData0=0x00;Data1=0x00;Data2=duan(100-M)/10;Data3=duan(100-M)%10; Data4=0x00; X ! I1 | Data5=0x00;IData6=Data2;Data7=Data3;Display。;led=0xFF;RED00=1;精心整理GREEN0O=1;RED10=O;YELLOW11=0;RED00=0;YELLOW0

16、 仁0; I f Iwhile(!key2);/等待按键释放5.3、定时程序设计进入主程序后,首先要对定时器和中断有关的寄存 I I器初始化。初始化过程如下:(1)对TMOD赋值,确定定时器的工作方式;(2)计算初值,并将初值写入;(3)中断方式时,则对IE赋值,开放中断;(4)使定时器运行控制端置位,启动定时器来计精心整理数。本次设计使用了定时器 0的工作方式,50ms中断一 次,而交通信号灯倒计时计数需要定时1s,通过计算,确定TH0和TL0应装入的初值为 60和176, 即 0x3C 和 0xB0。定时程序源代码如下:; Ivoidinit()TMOD=0x01; /设置定时器工作方式T

17、H0=0x3C; 装初值TH1=0xB0;EA=1;/开启总中断X i Ii1 I一一ET0=1;/开启定时器中断TR0=1;/启动定时器voidT0_time()interrupt1TH0=0x3C; 重装初值TH1=0xB0;精心整理T+;if(T=20)S+; S计数M+; /M 计数T=0; /1秒时间到,T清0重新再计20次I 么 ; I95.4、数码管显示程序设计通过单片机的定时器中断程序设计,可以控制数码 管在动态显示时每1秒变换一次,也就是计数一次, 根据定义的全局变量和I/O 口,在显示子函数中实 现数码管的位选和段选并能够在主函数中调用实现I倒计时循环显示。显示子函数代码如

18、下:voidDisplay() 显示子函数 uchari;uintj;精心整理for(i=0;i8;i+)Weixuan=weii; / 送位选数据Duanxuan=Datai; 送段选数据j=10;/扫描间隔时间设定while(j-);二 1 I .、Duanxuan=0x00; 消隐; I96、系统制作、调试和实验6.1、系统制作1. 使用keilC51编写程序;2. 将编好的程序“ .C ”文件用KeilC51转换成“ .hex 文件;3. 将开发板按照如图所示的连线方式连接成功;4. 用普中科技自己的下载软件 PAISP自动下载软件 将“ .hex ”下载到幵发板上,下载步骤如下:1)

19、 .插上USB口,打开开发板电源开关,然后打开普 中ISP下载软件,在usb转串口驱动安装成功后, 打开软件应该有串口号;2) .芯片类型选择STC90C5XX ;3) .同时需要把幵发板中J0跳线帽拔掉,设置成 USB接口,加载我们要下载到单片机里的程序,单 击呢可,选择下载的后缀为 旧%的文件;下載程序4) .点击下载程序,即可下载成功。4.观察运行现象是否与设计结果相符;6.2、硬件调试硬件部分是在51单片机上完成,所以调试过程比较简单。首先按照电路原理图进行检查,检查无误后进行按键、数码管和发光二极管的检测。6.3、软件调试首先用keilC51软件对程序进行编译和调试,经过对程序多次修

20、改后,编译通过,结束软件调试。I6.4、联合调试硬件调试和硬件调试结束之后,将最终调试好的程序下载到单片机上,观察结果并进行调试。6.5、系统实验经过多次调试,最终可以在单片机上观察到本次设精心整理计的实验结果:(1)用发光二极管模拟的红黄绿交通信号灯有序 闪烁,实验现象正确;(2)动态数码管可以显示到信号灯颜色改变所剩 时间,并采用倒计时方式计数;(3)按下按键1,所有道路及其人行道的红灯亮,数码管均不显示,开启紧急模式;(4)按下按键2,主干道绿灯时间变为60秒,其 余均不变,开启高峰期模式。7、总结7.1、工作总结在本次智能交通信号灯的设计中,我主要负责的是* I软件部分以及最后的联合调

21、试部分。主要有:(1)编写代码。本次程序的编写我用的是 C语言, 一是因为之前在大一有上过 C语言的课,对C 语言不会感到很陌生,二是学习过程中,教材也都是C语言教程。一幵始我们计划仅实现普通 模式下的智能交通信号灯的控制。同时我们参考 了单片机自带的程序,后来经过深入学习,发现 只有普通模式太过简单,所以我们就打算尝试一 下能否实现紧急模式和高峰期模式。(2)联合调试。由于单片机自带交通灯模块,所 以我觉得调试应该比较简单,直接将程序烧录到 单片机上就可以了。没想到在这个过程中还出现 了很多了问题。比如发光二极管一直亮或者不 亮,数码显示管显示错误等。我以为是程序出了 问题,就一直在修改程序

22、,结果发现,很大一部 分原因是由于我们太粗心了,把线接反了或者接* I触不良,原来是硬件的问题。所以在联合调试的 过程中,一定要同时兼顾软件和硬件的调试。本次设计还存在一些问题如下:(1)由于我主要负责软件部分,所以在后期的联精心整理合调试部分出了很多问题,主要是由于我对硬 件部分不够熟悉,这是本次实验中我主要需要 改进的地方;(2)在编写代码的过程中,我还发现了一些自身 存在的问题,比如说主函数写的过长,容易造 成里面的括号丢失,代码后面不加注释,代码 没有层次感,使程序看起来很乱,而且在查找 问题时也不方便,还有就是对语句运用不够熟 悉,容易犯一些语法错误,这一点还需要加以 改进。(3)本

23、次设计编译程序之后直接在单片机上调试 较为麻烦,这一点需要改进,可加入仿真调试。7.2、心得体会本次科研训练接近尾声,从一幵始根本不了解科研 训练是什么,需要做什么,到确定题目,一起学习, 编写程序,硬件软件调试到最后的报告撰写,我真精心整理的觉得自己收获了很多。不仅仅是感受到了我们这 个团队的合作精神,还有自己的那一份责任感,既 然是小组合作完成一个项目,那就必须要每个人确 确实实的做好自己的工作,只有这样,我们的设计 才是完整的。本次科研训练我们选择的是智能交通灯的设计,说 实话,老师让我们确定题目时,我们也不知道自己 能做什么擅长做什么,甚至不确定是否能完成这个 项目。确定这个题目之后,

24、也是没有头绪,不知道 要怎么开始。后来我们明确了一下分工,我主要负 责软件部分,硬件我们是用的单片机,所以我就开 始学习单片机的C语言。我用的教材是郭天祥老师I I主编的51单片机C语言教程,我觉得这本书最 大的好处就是通俗易懂,很适合我这样的单片机新 手。一边看书学习,一边就开始编写程序,编写程 序首先得确定算法,我还是没有概念,所以我就参 考了别的交通信号灯的程序,我觉得编程是一件很 神奇的事情,我们的很多想法靠着这些代码就能够 实现,这极大的激发了我的好奇心,就想一定要完 成这个程序。我们本来是打算做个普通模式就结束, 做出来之后又想挑战一下自己,就做了个紧急模式 和高峰期模式。在做普通

25、模式时还觉得很简单,想 着变成也不是那么难的一件事,但是在做高峰期模 式时,就出现了很多问题,反复调试了很多次还是 不行,我们就去请教别人,别人一眼就发现了其中 的问题,我们也恍然大悟了。所以以后还是要不断 的学习,积攒经验,才能够少犯一些低级错误。通过这次科研训练,真的学到了很多东西,也发 现了自己本身的一些局限性,希望自己以后能够多 向优秀的人学习,弥补自身不足。本次科研训练使 我们团队合作的结果,每一个人都不可缺少,真的 很感谢此次训练,让我体会到了团队合作的重要性,精心整理感谢我的队友们附:交通信号灯程序源代码#include#defineucharunsignedchar#defin

26、euintunsignedint#defineWeixuanP1 / 定义使用的 I/O 口1 X I#defi neDua nxua nPO#defineledP2sbitRED10=P2A0;/上人行道红灯 sbitGREEN10=P2A1;/ 上人行道绿灯 sbitREDI 仁卩2人2;“_仝 Isbit YELLOW11=P2A3;sbitGREEN11=P2A4;sbitRED00=P3A0; /右人行道红灯 sbitGREEN00=P3A1; / 右人行道绿灯 sbitREDO 仁卩2人5;精心整理sbitYELLOWO 仁P2W;sbitGREENO仁P27;sbitkey1=P

27、3A3;sbitkey2=P3A5;ucharcodewei=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位选控制ucharcodeduan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;选显示码ucharData8;ucharT,S,M;/*声明全局函数*/voidDisplay();voidinit();精心整理voiddelayms();voidkeysca n();voidmai n()S=0;M=0;init();/初始化函数whil

28、e(1)if(S=71)S=0;30 秒 */*宝田路通行,宝田路绿灯亮if(S31)Data0=0x00;Data1=0x00;Data2=dua n (30-S)/10;Data3=dua n (30-S)%10;Data5=0x00;精心整理Data5=0x00;Data6=Data2;Data7=Data3;Display。;led=OxFF; /将所有的灯都熄灭REDOO=1; IGREEN00=1;GREEN10=0;/宝田路人行道绿灯亮GREEN1仁0;/宝田路绿灯亮RED00=0;/前进路人行道红灯亮RED01=0;/前进路红灯亮2I II/*黄灯阶段,5秒*/elseif(S

29、36)Data0=0x00;Data1=0x00;Data2=dua n (35-S)/10;Data3=dua n (35-S)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display。;led=OxFF; /将所有的灯都熄灭RED00=1;GREEN00=1;RED10=0;/宝田路人行道红灯亮2厂_仝I |YELLOW11=0;/宝田路黄灯亮RED00=0;/前进路人行道红灯亮YELLOW0仁0;/前进路黄灯亮/*前进路通行,前进路绿灯亮 30秒*/精心整理elseif(S66)DataO=OxOO;Data1=OxOO;Data

30、2=dua n(65-S)/10;Data3=dua n(65-S)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();led=0xFF;RED00=1;GREEN00=1;RED10=0;RED1 仁0;GREEN00=0;GREEN01=0;/*黄灯阶段,5秒*/elseData0=0x00;Data1=0x00;Data2=dua n(70-S)/10;Data3=dua n(70-S)%10;Data4=0x00;Data5=0x00;Data6=Data2; rData7=Data3;Display();led=0xFF;RED00=1;GREEN00=1;精心整理RED10=0;YELLOW11=0;RED00=0;YELLOW0 仁0;/*按下按键1,开启紧急模式,所有红灯亮, 数码管不显示*/if(key1=0)delayms(); / 去抖延时if(key1=0) Data0=0x00;. 1 Data1=0x00;Data2=0x00;Data3=0x00;Data4=0x00;Data5=0x00;精心整理Data7=0x00;Data7=0x0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论