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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机交通灯课设报告.docx

1、单片机交通灯课设报告摘 要随着社会经济的发展,城市问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据检测、交通信号灯控制与交通疏通的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通灯的控制方式很多,本系统采用可编程并行I/O接口芯片STC90C516RD为中心器件来设计交通灯控制器,实现本系统的各种功能。同时,本系统实用性强,操作简单。本设计系统由LED数码显示系统、点阵显

2、示系统两大部分组成。系统除基本的交通灯功能外,还具有倒计时等功能,较好的模拟实现了十字路口可能出现的状况。软件上采用C51编程,主要编写了主程序,点阵显示程序,LED数码管显示程序,内部定时器T0中断定时程序,外部中断INT0和INT1的中断程序等。经过整机调试,实现了对十字路口交通灯的模拟。关键字:STC90C51 交通灯 LED数码管 倒计时一、引言1.1设计背景 当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信

3、号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。 电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行

4、人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进

5、入交叉路口。1.2 系统设计的意义与目的 (1)加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。 (2)用单片机模拟实现具体应用,使个人设计能够真正使用。 (3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。 (4)提高利用已学知识分析和解决问题的能力。 (5)提高实践动手能力。1.3 系统设计的基本要求和内容任务:设计一个交通信号灯的模拟控制系统设计内容与要求:(1)用8个发光二极管模拟一个十字交叉路口的红、绿灯,并设置两个紧急放行按键。(2)正常行驶时,东西或南北方向的灯按绿灯亮10秒,绿灯闪烁3秒,红灯亮12秒

6、控制。(3)当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯继续维持12秒;如果禁行方向为绿灯,则立即变为绿灯闪烁3秒;如果禁行方向为绿灯闪烁,则闪烁继续维持。 (备注:本系统采用8*8点阵来模拟十字路口,点阵只有红黄两种颜色,红点亮表示红灯亮,黄点亮表示绿灯亮,红点闪烁表示绿灯闪烁,这里我们看成黄灯闪烁)二、工作原理2.1系统框图2.1.1 LED数码管显示模块(模拟图)2.1.2 点阵模拟十字路口红绿灯显示模块(模拟图)2.2 程序原理 1、首先了解实际交通灯的变化情况和规律。假设一个十字路口如上图所示,为东南西北走向。 初始状态1:为东西绿灯亮,南北红灯亮;然后转状态2:

7、东西黄灯闪烁,南北红灯亮;过后转状态3:东西红灯亮,南北绿灯亮;再转状态4:东西红灯亮,南北黄灯闪烁。一段时间后,又循环至状态0。中间可通过中断按钮产生中断,跳入中断程序执行中断,实现南北紧急通行或实现东西紧急通行。 2、对于交通信号灯来说,应该有东西南北共四组灯,同一道上的两组的信号灯的显示情况是相同的,采用单片机的点阵模块即可来控制共12个信号灯。 3、通过编写程序,实现对发光点阵的控制,来模拟交通信号灯的管理。每延时一段时间,发光点阵的显示情况都会按交通灯的显示规律进行状态转换。 4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,用LED数码管增添其倒计时间的显示功能,实现其功能

8、的扩展。 5、通过脉冲中断编写中断程序,可实现中断。2.3 选题方案论证2.3.1 供电方式连接单片机控制芯片板和笔记本设备的USB接口,使用笔记本的电源,打开芯片板总开关正常通电。本方案的优点是系统简明扼要,节约成本;缺点是输出功率不高,笔记本要保持在通电的状态。2.3.2 显示方案采用LED数码管与有色发光点阵相结合的方法因为程序设计既要求倒计时数字显示输出,又要求有状态灯的亮灭等,为方便观看并考虑到现实情况,用LED数码管与有色发光点阵分别显示时间与交通灯的亮灭情况。三、硬件设计3.1 单片机3.1.1单片机的概述 单片微型计算机简称单片机,是典型的嵌入式微控制器(Micro contr

9、oller Unit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器、控制器、存储器、输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。3.1.2单片机的特点1.特点:(1)体积小巧,携带方便 USB接口通讯及供电,USB供电系统,直接插接到电脑USB口即可提供电源,不需另接直流电源,通讯速度快,无须外

10、接电源(2)有电源和烧写状态指示灯,可直观了解编程器当前状态(3)只需要USB供电,无需使用外部电源。周密的自保护方式,有效保证不损毁用户器件或编程器本身。2.主要部件 (1)8位数码管 可做数码管的静态扫描以及动态扫描显示实验.如:0-999计数器实验,18B20温度检测实验,遥控解码实验等都可以用数码管显示。(2)8位LED发光二极管 可做跑马灯实验。(3)一路继电器控制 通过继电器可以控制其他电器设备的工作低压控制高压等实验,不过为了安全建议不要控制电压超过30V的设备。(4)蜂鸣器 可做单片机发声实验播放音乐实验报警实验等声响实验。(5)集成一体化红外接收头 方便学习红外遥控接收,解码

11、实验。(6)字符液晶1602LCD接口,采用接插件方式方便插拔 可显示两行,每行16个,共计32任意ASCII码字符,它的功能应用比数码管丰富很多显示的信息量更大(7)点阵,采用接插件方式方便插拔 可显示任意汉字和图形。 3.2芯片介绍本设计选用了市面上较为常见的STC90C51单片机,STC90C51 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得ST

12、C90C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。3.2.1 STC90C51芯片特性主要性能:(1)与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、两个外部中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。(2)STC90C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片

13、上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU。3.2.2 交通灯的状态显示 简单的十字路口交通灯基本拥有四个状态,依次循环显示这些状态,构成基本的交通灯控制系统。(正常行驶时,东西或南北方向的灯按绿灯亮10秒,黄灯闪烁3秒,红灯亮13秒控制)。交通灯基本状态表状态1状态2状态3状态4南北向红灯时长10s东西向绿灯时长10s南北向红灯时长3s东西向黄灯时长3s南北向绿灯时长10s东西向红灯时长10s南北向黄灯时长3s东西向红灯时长3s四、软件设计4.1程序设计语言在本次设计中,采用了C语言作为程序编程的语言。4.2程序设计软件4.2.1编程软件程序设

14、计选择了Keil Vision 3.0编程环境的软件。这款软件支持众多不同公司的MCS51架构芯片,它集编辑、编译、仿真为一体,同时还支持PLM、汇编和C语言的程序设计,界面友好、简单易学,在调试程序。软件仿真方面都有很强大的功能。在初期的软件调试阶段,Keil Vision会提供非常便利的环境。4.2.2烧录软件 程序设计还使用了单片机烧录软件STC_ISP_V483.exe软件。由于STC90系列的单片机具有系统可编程特性(ISP),省去购买通用编程器。把程序烧录进芯片,无须将单片机从已生产好的拆下,通过编程器将程序代码烧录单片机内部。直接下载到单片机中显示程序结果,若现实结果与预期不一致

15、,再返回Keil软件修改程序,再次进行调试显示结果。有些程序尚未定型的产品可以一边生产,一边完善,加快了产品进入市场的速度,减小先产品由于软件缺陷带来的风险。 4.3程序设计4.3.1主要函数 /*- 主函数-*/main() 用于循环显示交通灯四种状态/*- 定时器0中断函数-*/void tim(void) interrupt 用于每种交通灯状态计时 /*- 外部中断0函数-*/void ISR_Key(void) interrupt 0 用于南北紧急放行 INT0: 通过中断接口P3.2连接的独立按键,使用电平触发/*- 外部中断1函数-*/void ISR_INT1(void) int

16、errupt 1 用于东西紧急放行 INT1: 通过中断接口P3.3连接的独立按键,使用电平触发,启用按键去抖, 适合实际按键4.4程序流程图不按紧急通行按钮时: 外部中断0程序(南北紧急放行): 外部中断1程序(东西紧急放行): 五、调试测试5.1调试 1、接硬件图接线,为了确保东西南北红黄绿灯能够对应显示,实验时,P1口连接至LED用于显示红绿灯,P0口接数码管,数码管显示时间 ,P3.0接段码B,P3.1接位码A,P3.2接按键K1,P3.3接按键K2,P2接点阵接口J4和J5从J4对齐。 2、开始运行,观察8*8点阵上对应的点是否与交通显示情况对应,如果有偏差,则单步运行或断点运行,进

17、行调试,直至满足设计要求。3、调试完灯的显示后,观察数码管显示的是否正常,如果不正常,则运用单步运行或断点运行进行分析和调试,直至满足要求。4、整体运行,观察灯显示和时间显示是否都符合要求,如果不符合,则再调试。直至满足要求。5.2测试过程5.2.1通电测试 编写程序之前检测硬件电路板是否有短路或设备连接不稳固等隐患。通电后打开电路板开关,LED数码管显示13的字样。我的程序设计中仅用到了数码管和发光点阵,通过烧录软件将磁盘中的LED循环左移程序烧录芯片中运行,结果显示LED发光二极管电路连接良好,未发生短路状况。5.2.2基本测试 编写好的程序通过Keil Vision 3.0编译生成.he

18、x文件,再用烧录软件将.hex文件烧录到芯片中,通电后程序运行:初始状态1为南北红灯亮,东西绿灯亮,双位数码管显示倒计时为13。状态2南北红灯亮,东西黄灯闪烁,数码管显示为3。状态3南北绿灯亮,东西红灯亮,数码管显示10。状态4南北黄灯闪烁,东西红灯亮,数码管显示为3。程序依次循环显示这四个状态。5.2.3复位测试 程序运行时,若在状态2、3、4显示的途中,按复位键,程序立刻回转初始状态运行。反复测试成功。六、结论6.1特点系统采用了STC90C51芯片的硬件设计,简便、实用性强、操作简单、程序设计简便;同时采用了C语言作为程序编程的语言,可读性和可移植性高于汇编语言。该系统设计有一定的新颖性

19、,采用STC90C51芯片点阵来显示东西南北向的红绿灯;两位LED数码管动态显示倒计时,显示南北向的倒计时。普通交通灯模拟系统仅用一直排的灯来显示东西南北的红绿灯,不够直观和美观,6.2存在的问题程序设计过程中东西南北时间为固定值,若考虑到车流高峰时,固定设置的红绿灯时间可能会造成交通更加堵塞,易发生交通事故。程序过于简单,只能适用于一些车流简单的小路段使用。6.3需要改进的地方在各个方向加上一个指示转弯的指示灯。再通过程序实现对定时的改变,便可使此交通灯系统实现全方位的指示。参考文献1张友德涂时亮赵志英:单片微型机原理、应用于实验 上海:复旦大学出版社,2012,3附录程序代码/*- P1口

20、连接至LED用于显示红绿灯,P0口接数码管,数码管显示时间 ,P3.0接B,P3.1接A,P3.2接k1,P3.3接K2,P2接J4,J5从J4对齐INT0: 通过中断接口P3.2连接的独立按键,使用电平触发 INT1: 通过中断接口P3.3连接的独立按键,使用电平触发,启用按键去抖,适合实际按键-*/ #include /包含头文件,头文件包含特殊功能寄存器的定义#include /*- 硬件端口定义-*/sbit LATCH = P23; /数码管管脚定义sbit SRCLK= P22;sbit SER = P21;sbit LATCH_B = P27;sbit SRCLK_B= P26;

21、sbit SER_B= P25;sbit LACTCH1=P30; / 段锁存sbit LACTCH2=P31; /位锁存sbit north=P30; sbit east=P17; /*- 全局变量-*/bit red,green,yellow,red2,green2,yellow2,turnred;/定义红绿黄灯标志位unsigned char second; /秒数code unsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阴数码管 0-9 unsigned char segout8=0x01,0

22、x02,0x04,0x08,0x10,0x20,0x40,0x80; /8列unsigned char code tab1= 0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00, ;/1 南北红 unsigned char code tab2= 0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x00, ;/2 南北黄 unsigned char code tab3= 0x00,0x01,0x00,0x00,0x00,0x00,0x80,0x00, ;/ 3 南北绿 unsigned char code tab4= 0x40,0x00,0x00

23、,0x00,0x00,0x00,0x00,0x02, ; /4 东西绿 unsigned char code tab5= 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x04, ;/5 东西黄 unsigned char code tab6= 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x08, ;/6 东西红 unsigned char code tab10= 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /10 空 ;unsigned char code tab11= 0x00,0x00,0x00,0

24、x00,0x00,0x00,0x00,0x00, /11 黄灯闪 ;unsigned char Dis_Shiwei;/定义十位unsigned char Dis_Gewei; /定义个位/*- -*/void delay(unsigned int cnt) while(-cnt);/*/*- uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) whil

25、e(-t);/*- mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); /*- 发送字节程序 带有方向参数,可以选择从高位节写入或者低位写入-*/void SendByte(unsigned char dat,bit direction) unsigned char i,temp; if(direct

26、ion=0) temp=0x80; else temp=0x01; for(i=0;i8;i+) SRCLK=0; SER=dat&temp; if(direction=0) dat=1; SRCLK=1; /*- 发送双字节程序-*/void Send2Byte(unsigned char dat1,unsigned char dat2,bit direction) SendByte(dat1,direction); SendByte(dat2,direction); /*- 595锁存程序-*/void Out595(void) LATCH=0; _nop_(); LATCH=1;/*- 发送位码字节程序 使用另外一片单独595-*/void SendSeg(unsigned char dat

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

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