版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、设计题目基于stc90c51单片机的智能交通灯设计2、设计要求21、系统功能(1)按照交通规则,控制宝田路和前进路方向及其人行道的交通信号灯(红、黄、绿)的通断。(2)设宜信号灯的通断时间。(3)可人丁干预,使交通信号灯开启不同模式。22、性能参数:(1)电源:5vdc(2)led 灯电流:10ma(3)定吋时间:10s-200s3、总体设计根据系统功能和设计要求,系统采用单片机控制的方案,基于hc6800s开发板,由stc90c51, 74hc573,交通灯模块,动态数码显示管以及4*2独立按键组成。3. 1系统工作原理在十字路口,分为宝iii路和前进路,正常情况下,在任一时刻只有一个方
2、向通行,另一 方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如 下:(1)普通模式:状态一:宝iii路通行阶段(宝iii路及其人行道亮绿灯30秒、前进路及其人行道亮红灯30 秒);状态二:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯5秒);状态三:询进路通行阶段(询进路及其人行道亮绿灯30秒、宝山路及其人行道亮红灯30 秒);状态四:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯5秒);返冋到状态一。(2)高峰期模式(设宝田路为主干道):按下按键2 (key2),开启高峰期模式;状态一:宝田路通行阶段(宝田路及其人行道亮绿灯60秒、前进路及其人行道亮红
3、灯30 秒);状态二:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯5秒);状态三:前进路通行阶段(前进路及其人行道亮绿灯30秒、宝皿路及其人行道亮红灯30 秒);状态四:黄灯阶段(宝田路和询进路亮黄灯5秒、两侧人行道亮红灯5秒);返m到状态一;按键2释放,回到普通模式。(3)紧急模式:按下按键1 (keyl),开启紧急模式,所有道路及其人行道均红灯亮,数码管不显示。 释放按键1,回到普通模式。3. 2单片机交通控制系统的功能要求本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还 能进行倒计时显示,通行时间调整功能和紧急情况全血禁行。(1)倒计时显示倒计时显示可
4、以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者 间作出合适的选样。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为 有倒计吋显示的路口更安全。倒计吋显示是用来减少驾驶员在信号灯色改变的关键吋刻做岀 复杂判断的一种方法,它可以提醍驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通 过”两者间作出合适的选择。(2)时间的设置本设计中对时间进行了人为控制设置,正常情况下宝川路和前进路的绿灯通行与红灯禁 行时i'可均设置为30秒、黄灯等待时间设宜为5秒。假设前进路为主t道,考虑到主于道在 上下班高峰期千流量和人流量较大,人为增加开关k2。当k2开启吋,主干道前
5、进路上绿灯 通行时间和宝田路上的红灯禁行时间更改为60秒,其余设置均不变;当k1关闭时,又恢复 正常惜况下的时间设置。(3)紧急情况全面禁行本设计中在紧急情况下增加了全面禁行状态,增加开关k1。当k1开启时,宝川路和前 进路及其各自人行道均量红灯禁行;当k1关闭时,交通灯恢复正常状态。4、详细设计一硬件设计为了实现本设计要求的具体功能,选用stc90c51单片机及外围器件构成最小控制系统, 10个发光二极管分别分成两组红黄绿和两组红绿灯构成信号灯指示模块,4个led动态数码 管构成各个方向倒计时显示模式,两个按键分别用來设置高峰期模式和紧急模式。4.1、单片机系统设计单片机设计交通灯控制系统,
6、可用单片机总接控制信号灯的状态变化,基本上可以指挥 交通的具休通行,当然,接入led数码管就町以显示倒计时以提醍行使者,更具人性化。单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒 计时输入到led数码管上实时显示。hc6800s整体结构视图:tfninm计 d8.8.8.88.8.8.8p0.plp2. p3. p412/pld lze-x/l.lp2pl3pl.4pl5pl6pl.7 rst rrded "d/pll imcvw.2 ikti/pjj1wp3.4 tl/w.5kla/mjxial2xlulwliuljljmliijlilililjlil
7、jljljliljo i 3 4 3 fr ? a u.-)pmpkp违莒hp4 口4 9 jc 了 6 s 4 3 2 i 0 9 s 7 卜 £ 4 12 i h 3 : h 3 ; 3 j 3 2 *>戈 2 2 2 2二二nnnnnnnnn吕nnnnnnnnstc90c51芯片引脚图:4.2、led数码管显示屏设计led动态数码管的显示原理为:a2位8段数码管电路采用“共阳”连接驱动代码,如右图所示。段码和位码,段码即段选信号seg,它负责数码管显示的内容, 图中ag、dp组成的数据(a为最低位,dp为最高位)就是段码。 位码即位选信号dtg,它决定哪个数码管工作,哪个
8、数码管不工作。 led数码管显示代码表如下表所示:显示数值dp,g,f,e,d,c,b,a代码0011111110x3f1000001100x062010110110x5 b3010011110x4f4011001100x665011011010x6d6011111010x7d7000011010x078011111110x7f9011011110x6fhc6800s开发板中动态数码管模块原理图如下图所示:qqqqqq8765com comcom£comled iled2com comcomq q fqb fqb fqb fqb fqb q q q q q q q lj: <j
9、:ubjr ijr2jr3jr4jr?jr6jr7jrrdodid2d3d4d5 l>6 07<=><=dpdpdndll【di 2>mil /di7 /dikgnd 1 lf itvccgnd20 ccrp2m10 gndgnd4.3、交通灯设计hc6800s开发板中交通灯模块原理图如下图所示,宝田路红黄绿灯及其人行道上的红绿灯 和前进路上的红黄绿灯由jp1控制,前进路人行道上的红绿灯由j22控制。交通灯)22jp18rpb47ir47h471rpi2471|r4s471vcc执行相应程序,即高 峰期模式5、详细设计一软件设计5.1、软件开发工具和环境keil
10、c51 p vision6. 1252、软件总体设计5.2.1总体结构流程图如下执行相应程序,即紧 急模式5.2.2子结构软件设计(1)普通模式程序流程简图如下:程序源代码如下:while(l)if(s=71)s=0;厂宝田路通行,宝田路绿灯亮30秒*/if(s<31)data0=0x00;datal=0x00;data2=duan(30-s)/10;data3=duan(30-s)%10;data4=0x00;data5=0x00;data6=data2;data7=data3;display();led=oxff;redoo=1;greenoo=1;green1o=o;green11
11、=o;redoo=o;redo1=o;厂黄灯阶段,5秒*/else if(s<36)datao=oxoo;datal=oxoo;data2=duan(35-s)/10;data3=duan(35-s)%10;data4=0x00;data5=0x00;data6=data2;data7=data3;displayo;led=oxff;redoo=1;greenoo=1;red1o=o;yellow11=0;redoo=o;yellow01=0;/将所冇的灯都熄火/宝田路人行道绿灯亮宝田路绿灯亮前进路人行道红灯亮前进路红灯亮将所有的灯都熄灭宝iii路人行道红灯亮宝iii路黄灯亮而进路人行道
12、红灯亮前进路黄灯亮/*前进路通行,前进路绿灯亮30秒*/else if(s<66)datao=oxoo;datal=oxoo;data2=duan(65-s)/10;data3=duan(65-s)%10;data4=0x00;data5=0x00;data6=data2;data 7=data3;display();led=oxff;redoo=1;greenoo=1;red1o=o;red11=o;greenoo=o;greeno1=o;/*黄灯阶段,5秒*/else datao=oxoo;datal=oxoo;data2=duan(70-s)/10;data3=duan(70-s)
13、%10;data4=0x00;data5=0x00;data6=data2;data 7=data3;display();led=oxff;redoo=1;greenoo=1;red1o=o;yellow11=0;redoo=o;yellow01=0;(2) 按键检测流程图如下:所需延时子函数源代码如下:延时子函数,延时约10msvoid delayms()uint a,b;for(a=10;a>0;a-)for(b=110;b>0;b);(3)紧急模式程序流程简图如下:程序源代码如下:广按下按键1,开启紧急模式,所有红灯亮,数码管不显示*/if(keyl=o)delayms();
14、去抖延时if(keyl=o)datao=oxoo;datal=oxoo;data2=0x00;data3=0x00;data4=0x00;data5=0x00;data6=0x00;data7=0x00;display();led=oxff;redoo=1;greenoo=1;red1o=o;red11=o;redoo=o;while(!keyl);按键1释放keysca n();(4)高峰模式程序流程简图如下:程序源代码如下:厂按下按键2,开启上下班高峰期模式,主干道宝田路绿灯吋间为60秒*/void keyscan()if(key2=0)delaymsf);去抖延时if (key2=0)w
15、hile(l)讦(key2!=0) break;当按键2释放,跳岀循环if(m=101)m=0;if(m<61)datao=oxoo;datal=oxoo;data2=duan(60-m)/10;data3=duan(60-m)%10;data4=0x00;data5=0x00;data6=data2;data 7=data3;display();led=oxff;redoo=1;greenoo=1;green1o=o;green11=o;redoo=o;redo1=o;else if(m<66)datao=oxoo;datal=oxoo;data2=duan(65-m)/10;d
16、ata3=duan(65-m)%10;data4=0x00;data5=0x00;data6=data2;data7=data3;display();led=oxff;redoo=1;greenoo=1;red1o=o;yellow11=0;redoo=o;yellow01=0;else if(m<96)datao=oxoo;datal=oxoo;data2=duan(95-m)/10;data4=0x00;data5=0x00;data6=data2;data 7=data3;display();led=oxff;redoo=1;greenoo=1;red1o=o;red11=o;gr
17、eenoo=o;greeno1=o;else datao=oxoo;datal=oxoo;data2=duan(100-m)/10;data3=duan(100-m)%10;data4=0x00;data5=0x00;data6=data2;data7=data3;display();led=oxff;redoo=1;greenoo=1;red1o=o;yellow11=0;redoo=o;yellow01=0; while(!key2);等待按键释放53、定时程序设计进入主程序后,首先要对定时器和屮断有关的寄存器初始化。初始化过程如下:(1)对tmod赋值,确定定时器的工作方式;(2)计算初
18、值,并将初值写入;(3)中断方式时,则对ie赋值,开放中断;(4)使定时器运行控制端置位,启动定时器來计数。木次设计使用了定时器0的工作方式,50ms中断一次,而交通信号灯倒计时计数需要定时is,通过计算,确定th0和tl0应装入的初值为60和176,即0x3c和oxbo。定时程序源代码如下:void init()tmod=0x01;/设置定时器工作方式th0=0x3c;/装初值thl=0xb0;ea=1;开启总屮断eto=1;开启定时器中断tro=1;启动泄时器void to_time()interrupt 1th0=0x3c; 重装初值thl=0xb0;t卄;if(t=20)s+;/s 计
19、数m+;m计数t=0;秒吋间到,t清0重新再计20次5.4、数码管显示程序设计通过单片机的定时器中断程序设计,町以控制数码管在动态显示时每1秒变换一次,也就是 计数一次,根据定义的全局变最和i/o 口,在显示子函数屮实现数码管的位选和段选并能够 在主函数中调用实现倒计时循环显示。显示子函数代码如下:void display() 显示了函数 uchar i;uint j;for(i=0;i<8;i+)weixuan=weii; 送位选数据duanxuan=datai; 送段选数据j=10;扫描间隔时间设定while(j-);duanxuan=0x00; 消隐6、系统制作、调试和实验6.1、
20、系统制作1. 使用keil c 51编写程序;2. 将编好的程序“c”文件用keil c 51转换成“.hex”文件;3. 将开发板按照如图所示的连线方式连接成功;.nnn5w30at w)on 9mb30m 14. 用普屮科技自己的下载软件paisp自动下载软件将“.hex”下载到开发板上,下载步骤 如f:1) .插上usb 口,打开开发板电源开关,然后打开普中isp下载软件,在usb转串口驱动安 装成功后,打开软件应该有串口号;2) .芯片类型选择stc90c5xx;3).同时需要把开发板中jo跳线帽拔掉,设置成usb接口,加载我们要卜载到单片机里的程序,单击打开文件,选择下载的后缀为.h
21、ex的文件;下载程序4).点击下载程序,即可下载成功。4. 观察运行现象是否与设计结果相符;6.2、硬件调试硕件部分是在51单片机上完成,所以调试过程比较简单。首先按照电路原理图进行检查, 检查无误后进行按键、数码管和发光二极管的检测。6.3、软件调试首先用keil c51软件对程序进行编译和调试,经过对程序多次修改后,编译通过,结束软件 调试。6.4、联合调试硕件调试和硬件调试结束z后,将最终调试好的程序下载到单片机上,观察结果并进行调试。6.5、系统实验经过多次调试,最终可以在单片机上观察到木次设计的实验结果:(1)用发光二极管模拟的红黄绿交通信号灯有序闪烁,实验现象正确;(2)动态数码管
22、可以显示到信号灯颜色改变所剩时间,并采用倒计时方式计数;(3)按下按键1,所有道路及其人行道的红灯亮,数码管均不显示,开启紧急模式;(4)按下按键2,主干道绿灯时间变为60秒,其余均不变,开启高峰期模式。7、总结7.1.工作总结在本次智能交通信号灯的设计中,我主要负责的是软件部分以及最后的联合调试部分。主要 有:(1)编写代码。本次程序的编写我用的是c语言,一是因为z前在大一有上过c语言的 课,对c语言不会感到很陌生,二是学习过程中,教材也都是c语言教程。一开始 我们计划仅实现普通模式下的智能交通信号灯的控制。同时我们参考了单片机自带 的程序,后來经过深入学习,发现只有普通模式太过简单,所以我
23、们就打算尝试一 卜能否实现紧急模式和鬲峰期模式。(2)联合调试。由于单片机自带交通灯模块,所以我觉得调试应该比较简单,直接将程 序烧录到单片机上就可以了。没想到在这个过程屮还出现了很多了问题。比如发光 二极管一直亮或者不亮,数码显示管显示错误等。我以为是程序出了问题,就一直 在修改程序,结呆发现,很大一部分原因是山于我们a粗心了,把线接反了或者接 触不良,原来是硕件的问题。所以在联合调试的过程中,一定要同时兼顾软件和硬 件的调试。木次设计还存在一些问题如下:(1)由于我主要负责软件部分,所以在后期的联合调试部分出了很多问题,主要是由于 我对硬件部分不够熟悉,这是本次实验小我主要需要改进的地方;
24、(2)在编写代码的过程中,我还发现了一些自身存在的问题,比如说主函数写的过长, 容易造成里面的括号丢失,代码后面不加注释,代码没冇层次感,使程序看起来很 舌l, mj且在查找问题时也不方便,述有就是对语句运用不够熟悉,容易犯一些语法 错谋,这一点还盂要加以改进。(3)本次设计编译程序之后直接在单片机上调试较为麻烦,这一点需要改进,可加入仿 真调试。7.2、心得体会木次科研训练接近尾声,从一开始根本不了解科研训练是什么,需要做什么,到确定 题目,一起学习,编写程序,硬件软件调试到最后的报告撰写,我真的觉得自己收获了很多。 不仅仅是感受到了我们这个团队的合作精神,还有自己的那一份责任感,既然是小纽
25、合作完 成一个项目,那就必须要每个人确确实实的做好自己的工作,只有这样,我们的设计才是完 整的。本次科研训练我们选择的是智能交通灯的设计,说实话,老师让我们确定题门吋,我 们也不知道h己能做什么擅长做什么,其至不确定是否能完成这个项目。确定这个题目z后, 也是没有头绪,不知道要怎么开始。示来我们明确了一下分工,我主要负责软件部分,硬件 我们是用的单片机,所以我就开始学习单片机的c语言。我用的教材是郭天祥老师主编的51 单片机c语言教程,我觉得这本帖最大的好处就是通俗易懂,很适合我这样的单片机新手。 边看书学习,-边就开始编写程序,编写程序首先得确定算法,我还是没有概念,所以我 就参考了别的交通
26、信号灯的程序,我觉得编程是一件很神奇的事情,我们的很多想法靠着这 些代码就能够实现,这极人的激发了我的好奇心,就想一定要完成这个程序。我们本來是打 算做个普通模式就结束,做出來z后乂想挑战一下白己,就做了个紧急模式和高峰期模式。 在做普通模式时还觉得很简单,想着变成也不是那么难的一件事,但是在做高峰期模式时, 就出现了很多问题,反复调试了很多次还是不行,我们就去请教别人,別人一眼就发现了其 中的问题,我们也恍然大悟了。所以以后还是要不断的学习,积攒经验,才能够少犯一些低 级错误。通过这次科研训练,真的学到了很多东西,也发现了自己本身的一些局限性,希望自己 以后能够多向优秀的人学习,弥补白身不足
27、。本次科研训练使我们团队合作的结果,每一个 人都不可缺少,真的很感谢此次训练,让我体会到了团队合作的重要性,感谢我的队友们。附:交通信号灯程序源代码#include<reg5l h> #define uchar unsigned char#definc uint unsigncd int uchar code wei=/定义使用的i/o 口#definc duanxuan p0#define led p2sbi tred 10p2p;sb itgreen10二p2"l;sbitred 11=p2"2;sbityellow11=p2"3;sbitgree
28、n11二p2"4;sbitredoo=p3osbitgreenoo二p3j;sbitredoi二p2"5;sbityell0w01=p2飞;sbitgreen01=p2"7;sbitkey 1=p3'3;sbitkey2二p3"5;#dcfino weixuan pl/上人行道红灯/上人行道绿灯/右人行道红灯/右人行道绿灯oxfe, oxfd, oxfb, 0xf7, oxef, oxdf, oxbf, 0x7f) ;/位选控制uchar code duan二0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x
29、07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71; 段选显示码uchar data8;uchar t, s, m;/*声明全局函数*/void display();void in it ();void de 1ayms();void keyscan();void main() s=0;m=0;init() ;/初始化函数while(l) if(s=71)s 二0;/*宝田路通行,宝田路绿灯亮30秒*/ if(s<31)data0=0x00;data1=0x00;data2=duan(30-s)/10;data3=duan(30-s)%1
30、0;data4=0x00;data5=0x00;data6=data2;data7=data3;/将所有的灯都熄灭/宝田路人行道绿灯亮/宝iii路绿灯亮/前进路人行道红灯亮/前进路红灯亮display ();led=0xff;redoo二1;greenoo二1;green10=0;green11=0;redoo二0;redoi二0;/*黄灯阶段,5秒*/ else if (s<36) data01=0x00;datal=0x00;data2=duan(35-s)/10;data3=duan(35-s)%10;data5=0x00;data6=data2;data7=data3;displ
31、ay();led=0xff;/将所有的灯都熄火red00二1;greenoo=1;redio二0;/宝出路人行道红灯亮yellow11=0;/宝田路黄灯亮redoo二0;/前进路人行道红灯亮ye【丄 0w01二0;/前进路黄灯亮/*前进路通行,前进路绿灯亮30秒*/ else if(s<66)data0=0x00;data1=0x00;data2=duan(65s)/10;data3=duan(65_s)%10;data4=0x00;data5=0x00;data6=data2;data7=data3;display ();led二oxff;redoo"greenoo二1;re
32、dio二0;red11二0;greenoo二0;green01=0;/*黄灯阶段,5秒权else data1=0x00;data2=duan(70-s)/10;data3=duan(70-s)%10;data4=0x00;data5=0x00;data6=data2;data7=data3;display();led二oxff;redoo=1;greenoo二1;redio二0;yellow11=0;redoo二0;yell0w01二0;/*按下按键1,开启紧急模式,所有红灯亮,数码管不显示*/if (keyl=0) delayms () ;/去抖延时if (key 1=0) data0=0x
33、00;data1=0x00;data2=0x00;data3=0x00;data4=0x00;data5=0x00;data6=0x00;data7=0x00;display ();led=0xff;redoo"greenoo二1;redio二0;red11二0;redoo二0;redoi二0;while(!keyl) ;/按键 1 释放 keyscan ();)i/*按下按键2,开启上下班高峰期模式,主干道宝出路绿灯时间为60秒*/ void keyscan()if(key2=0) delayms () ;/去抖延时if (key2=0) while(1) if(key2!=o) break;/当按键2释放,跳出循环if(m=101)m=0;if(m<61)data0=0x00;data1=0x00;data2=duan(60-m)/10;data3=duan(60-m)%10;data4=0x00;da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购合同类型的设计理念3篇
- 采购合同条款详细解读3篇
- 采购合同类型的设计思路分享3篇
- 2024年养殖企业智能化养殖设备租赁贷款合同书3篇
- 采购合同文本电子版3篇
- 2024年标准场地承包经营合同模板版B版
- 采购合同跟踪的方法与技巧讲解3篇
- 采购合同评审技巧3篇
- 采购合同框架协议的设计理念3篇
- 采购合同新样式模板3篇
- 重庆市2025届高三上学期12月一诊模拟考试英语读后续写翻译练习(接受新生命)(含答案)
- 广西南宁市第三十七中学2024-2025学年七年级上学期11月第一次月考语文试题(含答案)
- 汽车吊篮使用专项施工方案
- 静脉导管维护
- 普通逻辑学智慧树知到期末考试答案章节答案2024年河海大学
- 浙江综合医院等级评审标准
- ISO9000质量管理体系培训资料
- 烟草异物智能剔除系统技术参数.
- 强制检定工作计量器具目录
- 大学基础写作--表达方式课件
- 300td高强瓦楞原纸废纸制浆工段工艺设计
评论
0/150
提交评论