ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:25.22KB ,
资源ID:4340805      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4340805.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整版基于STC90C51单片机的智能交通灯设计doc.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整版基于STC90C51单片机的智能交通灯设计doc.docx

1、完整版基于STC90C51单片机的智能交通灯设计doc精心整理基于 STC90C51单片机的交通灯设计1、 设计题目基于 STC90C51单片机的智能交通灯设计2、设计要求2.1、系统功能(1)按照交通规则, 控制宝田路和前进路方向及其人行道的交通信号灯(红黄绿)的通断。(2)设置信号灯的通断时间。(3)可人工干预,使交通信号灯开启不同模式。2.2、性能参数:(1)电源: 5VDC(2) LED灯电流: 10mA(3)定时时间: 10s-200s3、总体设计根据系统功能和设计要求,系统采用单片机控制的方案,基于 HC6800S开发板,由 STC90C51,74HC573,交通灯模块,动态数码显

2、示管以及 4*2精心整理独立按键组成。3.1 系统工作原理在十字路口,分为宝田路和前进路,正常情况下,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下: ?( 1)普通模式 :状态一:宝田路通行阶段(宝田路及其人行道亮绿灯 30 秒、前进路及其人行道亮红灯30 秒);状态二:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯 5 秒);状态三:前进路通行阶段(前进路及其人行道亮绿灯 30 秒、宝田路及其人行道亮红灯30 秒);状态四:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯 5 秒);返回到状态一。(2)高峰期模式(设

3、宝田路为主干道) :按下按键 2( key2),开启高峰期模式;状态一:宝田路通行阶段(宝田路及其人行道亮绿灯 60 秒、前进路及其人行道亮红灯30 秒);精心整理状态二:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯 5 秒);状态三:前进路通行阶段(前进路及其人行道亮绿灯 30 秒、宝田路及其人行道亮红灯30 秒);状态四:黄灯阶段(宝田路和前进路亮黄灯5秒、两侧人行道亮红灯 5 秒);返回到状态一;按键 2 释放,回到普通模式。(3)紧急模式 :按下按键 1( key1),开启紧急模式,所有道路及其人行道均红灯亮,数码管不显示。释放按键1,回到普通模式。3.2? 单片机交通控制系统

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

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

6、, 10 个发光二极管分别分成两组红黄绿和两组红绿灯构成信号灯指示模块, 4 个 LED动态数码管构成各个方向倒计时显示模式,两个按键分别用来设置高峰期模式和紧急模式。4.1、单片机系统设计单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,当然,接入 LED数码管就可以显示倒计时以提醒行使者,更具人性化。精心整理单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到 LED数码管上实时显示。HC6800S整体结构视图:STC90C51内部结构图:精心整理STC90C51芯片引脚图:4.2、LED数码管显示屏设计LED动态

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

8、f9011011110x6fHC6800S开发板中动态数码管模块原理图如下图所示:4.3、交通灯设计HC6800S开发板中交通灯模块原理图如下图所示,宝田路红黄绿灯及其人行道上的红绿灯和前进路上的红黄绿灯由 JP1控制,前进路人行道上的红绿灯由 J22 控制。5、详细设计软件设计5.1、软件开发工具和环境keilC51 Vision6.125.2、软件总体设计5.2.1 总体结构流程图如下开主程序,即精心整理检测N Y是否检测N Y按键执行相应5.2.2 子程结序构,软即件设计(1)普通模式程序流程简图如下:开初设红灯黄灯绿灯黄灯结程序源代码如下:检测Y N是否检测Y N按键执行相应程序,即精

9、心整理while(1)if(S=71)S=0;/* 宝田路通行,宝田路绿灯亮if(S31)Data0=0x00;Data1=0x00;Data2=duan(30-S)/10;Data3=duan(30-S)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();30 秒 */led=0xFF; / 将所有的灯都熄灭RED00=1;GREEN00=1;精心整理GREEN10=0; GREEN11=0; RED00=0; RED01=0;/ 宝田路人行道绿灯亮/ 宝田路绿灯亮/ 前进路人行道红灯亮/ 前进路红灯亮/* 黄灯阶段, 5

10、秒*/elseif(S36)Data0=0x00;Data1=0x00;Data2=duan(35-S)/10;Data3=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;

11、b0;b-);(3)紧急模式程序流程简图如下:开普按精心整理N紧急程序源代码如下:Y/* 按下按键 1,开启紧急模式,所有红灯亮,数码管不显示 */if(key1=0)delayms(); / 去抖延时if(key1=0)Data0=0x00;Data1=0x00;Data2=0x00;Data3=0x00;Data4=0x00;Data5=0x00;Data6=0x00;Data7=0x00;Display();精心整理led=0xFF;RED00=1;GREEN00=1;RED10=0;RED11=0;RED00=0;RED01=0;while(!key1); / 按键 1 释放keysc

12、an();(4)高峰模式程序流程简图如下:开普按精心整理N高峰程序源代码如下:Y/* 按下按键 2,开启上下班高峰期模式, 主干道宝田路绿灯时间为 60 秒*/voidkeyscan()if(key2=0)delayms(); / 去抖延时if(key2=0)while(1)if(key2!=0)break; / 当按键 2 释放,跳出循环 if(M=101)M=0;if(M61)Data0=0x00;Data1=0x00;Data2=duan(60-M)/10;精心整理Data3=duan(60-M)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Da

13、ta3;Display();led=0xFF;RED00=1;GREEN00=1;GREEN10=0;GREEN11=0;RED00=0;RED01=0;elseif(M66)Data0=0x00;Data1=0x00;精心整理Data2=duan(65-M)/10;Data3=duan(65-M)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();led=0xFF;RED00=1;GREEN00=1;RED10=0;YELLOW11=0;RED00=0;YELLOW01=0;elseif(M96)Data0=0x00;精心整

14、理Data1=0x00;Data2=duan(95-M)/10;Data3=duan(95-M)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();led=0xFF;RED00=1;GREEN00=1;RED10=0;RED11=0;GREEN00=0;GREEN01=0;else精心整理Data0=0x00;Data1=0x00;Data2=duan(100-M)/10;Data3=duan(100-M)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();l

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

16、 60 和 176,即0x3C 和 0xB0。精心整理定时程序源代码如下:voidinit()TMOD=0x01;/ / 设置定时器工作方式TH0=0x3C; /装初值TH1=0xB0;EA=1; / 开启总中断ET0=1; / 开启定时器中断TR0=1; / 启动定时器voidT0_time()interrupt1TH0=0x3C; /重装初值TH1=0xB0;T+;if(T=20)S+;/ /S 计数M+; /M 计数T=0;/ /1 秒时间到, T 清 0 重新再计 20 次精心整理5.4、数码管显示程序设计通过单片机的定时器中断程序设计,可以控制数码管在动态显示时每 1 秒变换一次,也

17、就是计数一次,根据定义的全局变量和 I/O 口,在显示子函数中实现数码管的位选和段选并能够在主函数中调用实现倒计时循环显示。显示子函数代码如下:voidDisplay() / / 显示子函数uchari;uintj;for(i=0;i8;i+)Weixuan=weii; / 送位选数据Duanxuan=Datai;/ 送段选数据j=10; / 扫描间隔时间设定精心整理while(j-);Duanxuan=0x00;/ 消隐6、系统制作、调试和实验6.1、系统制作1.使用 keilC51 编写程序;2.将编好的程序“.C ”文件用 KeilC51 转换成“.hex ”文件;3.将开发板按照如图所

18、示的连线方式连接成功;4.用普中科技自己的下载软件 PAISP自动下载软件将“ .hex ”下载到开发板上,下载步骤如下:1). 插上 USB口,打开开发板电源开关, 然后打开普中ISP 下载软件,在 usb 转串口驱动安装成功后,打开软件应该有串口号;2). 芯片类型选择 STC90C5XX;3). 同时需要把开发板中 J0跳线帽拔掉,设置成 USB 接口,加载我们要下载到单片机里的程序,单击,选择下载的后缀为 .Hex 的文件;4). 点击下载程序 ,即可下载成功。精心整理4.观察运行现象是否与设计结果相符;6.2、硬件调试硬件部分是在 51 单片机上完成,所以调试过程比较简单。首先按照电

19、路原理图进行检查,检查无误后进行按键、数码管和发光二极管的检测。6.3、软件调试首先用 keilC51 软件对程序进行编译和调试, 经过对程序多次修改后,编译通过,结束软件调试。6.4、联合调试硬件调试和硬件调试结束之后,将最终调试好的程序下载到单片机上,观察结果并进行调试。6.5、系统实验经过多次调试,最终可以在单片机上观察到本次设计的实验结果:(1) 用发光二极管模拟的红黄绿交通信号灯有序闪烁,实验现象正确;精心整理(2) 动态数码管可以显示到信号灯颜色改变所剩时间,并采用倒计时方式计数;(3) 按下按键 1,所有道路及其人行道的红灯亮,数码管均不显示,开启紧急模式;( 4) 按下按键 2

20、,主干道绿灯时间变为60 秒,其余均不变,开启高峰期模式。7、总结7.1、工作总结在本次智能交通信号灯的设计中,我主要负责的是软件部分以及最后的联合调试部分。主要有:( 1) 编写代码。 本次程序的编写我用的是 C 语言,一是因为之前在大一有上过 C 语言的课,对 C语言不会感到很陌生, 二是学习过程中, 教材也都是 C 语言教程。一开始我们计划仅实现普通模式下的智能交通信号灯的控制。 同时我们参考了单片机自带的程序, 后来经过深入学习, 发现精心整理只有普通模式太过简单, 所以我们就打算尝试一下能否实现紧急模式和高峰期模式。(2) 联合调试。由于单片机自带交通灯模块,所以我觉得调试应该比较简

21、单, 直接将程序烧录到单片机上就可以了。 没想到在这个过程中还出现了很多了问题。比如发光二极管一直亮或者不亮,数码显示管显示错误等。 我以为是程序出了问题,就一直在修改程序, 结果发现, 很大一部分原因是由于我们太粗心了, 把线接反了或者接触不良,原来是硬件的问题。 所以在联合调试的过程中,一定要同时兼顾软件和硬件的调试。本次设计还存在一些问题如下:(1) 由于我主要负责软件部分,所以在后期的联合调试部分出了很多问题,主要是由于我对硬件部分不够熟悉,这是本次实验中我主要需要改进的地方;精心整理(2) 在编写代码的过程中,我还发现了一些自身存在的问题,比如说主函数写的过长,容易造成里面的括号丢失

22、,代码后面不加注释,代码没有层次感,使程序看起来很乱,而且在查找问题时也不方便,还有就是对语句运用不够熟悉,容易犯一些语法错误,这一点还需要加以改进。(3) 本次设计编译程序之后直接在单片机上调试较为麻烦,这一点需要改进,可加入仿真调试。7.2 、心得体会本次科研训练接近尾声,从一开始根本不了解科研训练是什么, 需要做什么, 到确定题目, 一起学习,编写程序,硬件软件调试到最后的报告撰写,我真的觉得自己收获了很多。不仅仅是感受到了我们这个团队的合作精神,还有自己的那一份责任感,既精心整理然是小组合作完成一个项目,那就必须要每个人确确实实的做好自己的工作,只有这样,我们的设计才是完整的。本次科研训练我们选择的是智能交通灯的设计,说实话,老师让我们确定题目时,我们也不知道自己能做什么擅长做什么,甚至不确定是否能完成这个项目。确定这个题目之后,也是没有头绪,不知道要怎么开始。后来我们明确了一下分工,我主要负责软件部分,硬件我们是用的单片机,所以我就开始学习单片机的 C语言。我用的教材是郭天祥老师主编的 51 单片机 C语言教程,我觉得这本书最大的好处就是通俗易懂,很适合我这样的单片机新手。一边看书学习,一边就开始编写程序,编写程序首先得确定算法,我还是没有概念,所以我就参

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1