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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

51单片机交通灯课设推荐文档.docx

1、51单片机交通灯课设推荐文档 西安石油大学单片机控制临时交通灯班级:电信1502 小组成员: 赵勃 权伟力 艾克拜尔 2017.12.7临时交通灯设计原因随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。单片机的应用正在不断深入,单片机可以用来仿真各个系统。在自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,

2、仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?对于路口信号灯出现问题或者需要进行道路施工,时,临时信号灯就变得非常重要,在没有红绿灯的交通路口也可以放置临时信号灯,来调节交通,对于社会有很大帮助。 1.课题任务及主要实现内容本系统由单片机系统、数码管显示、交通灯显示系统组成。系统除基本的交通功能外,还具有倒计时。东西、南北两个干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换。程序开始运行先南北段通行、东西

3、段禁止60s,后东西段通行、南北段禁止60s,依此循环。 系统分三种工作模式:正常模式、繁忙模式、特殊模式,并且通过三个按钮“正常”、“繁忙”、“特殊”可相互转化。正常模式:直行时间显示数码管显示60。此时南北段直行通行(绿灯)、东西段禁止(红灯)60s,倒计时到3s时,黄灯亮,提醒人们注意了。然后是东西段通行(绿灯),南北段禁行(红灯),一直循环下去。繁忙模式:南北段、东西段的通行时间改为30s,其它与正常模式类似。特殊模式:特殊模式红灯全亮,倒计时20s,到最后3秒黄灯闪3次后并转入正常模式。2. 原理分析交通灯显示的理论分析倒计时显示的理论分析:利用定时器中断,设TH0=TH1(6553

4、6-50000)/256,即每0.05秒中断一次。每到第20次中断即过了20*0.05秒1秒时,产生一次参数传递,使时间的计数值减1,便实现了倒计时的功能。3.单片机选择与外围接口部件根据课题任务的要求,该系统具有交通灯的显示功能,倒计时功能,改变时间设定功能,所以把系统分为几个模块,包括倒计时显示器、交通信号灯、控制模块。系统硬件框图如下图2-1: 交通灯发光源选取发光二极管简称为LED,在此处设计中我们用他来模拟红绿黄交通灯,普通单色发光二极管具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长等优点,可用各种直流、交流、脉冲等电源驱动点亮。它属于电流控制型半导体器件,使用

5、时需串接合适的限流电阻。LED显示器由七个发光二极管组成,因此也称之为七段LED显示器,此外,显示器中还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七段发光二极管的不同组合,可以显示多种数字、字母或者其他符号。动态显示采用多路复用技术的动态扫描显示方式,利用人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素。. 发光二极管模拟红绿灯 它是半导体二极管的一种,可以把电能转化成光能,常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的

6、电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。 发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。单片机c51管脚目前在单片机系统中,应用较广泛的微处理器芯片主要为8XC5X系列单片机。该系列单片机均采用标准MCS-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛。若采用89C51芯片作为硬件核心,采用Flash R

7、OM,内部具有4KB ROM存储空间,能于3V的超低电压工作,而且与MCS-51系列单片机完全兼容, 图3-1 STC89C51引脚图引脚如图3-1所示:VCC:40号管脚 供电电压。 GND:20号管脚接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流

8、。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。 P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容

9、。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流这是由于上拉的缘故。 P3口也可作为STC89C52的一些特殊功能口,如下表3-1所示: P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH编程期间,此引脚用于输入编程脉

10、冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(

11、0000H- FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 看门狗设置 在单片机构成的系统中,由于单片机的工作有可能受到外界的干扰,造成程序跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入瘫痪状态,发生不可预料的后果,所以出于对单片机程序的运行的状态进行实时的监控,便考虑一种的专用的监测芯片用于监

12、测单片机程序运行状态的芯片,俗称“看门狗”(Watch Dog)。 加入看门狗电路的目的是使单片机可以在无人的状态下实现连续的工作,其工作的过程如下:看门狗的芯片和单片机的一个I/O口连接,每隔一定的时间单片机给芯片送个脉冲,是看门狗的定时器复位;如果超过时间不送脉冲,看门狗的芯片会使单片机复位,从头开始执行程序,这样便实现了监视单片机的目的。 选用设备STC89c52单片机一片,共阴极的七段两位数码管两个,红、黄、交通灯各四个,绿发光二极管7个,按键三个、电容两个22pF,电阻十六个470,晶体振荡器一个,连线若干。振荡电路单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器

13、,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。单片机晶振的作用是为系统提供基本的时钟信号。单片机的时钟电路设计有两种方式,一种是内部时钟方式,一种是外部时钟方式。在内部时钟方式下单片机内部的高增益、反相放大器通过XTAL1、XTAL2外接作为反馈元件的外部晶体管振荡器与电容组成的并联谐振回路构成一个稳定的自激振荡器,向内部时钟电路提供振荡时钟。振荡器的频率主要取决于晶体的振荡频率。MCS-51单片机的晶体振荡频率可以再1-12MHz范围内选择,电容C1、C2的选择范围是15-45

14、pF,电容的大小会影响振荡器的稳定性和起振速度。外部时钟方式是把外部已有的时钟信号引入到单片机内。此方式常用于多片单片机同时工作,以便于各单片机的同步。一般要求外部信号高电平的持续时间大于20s,且为频率低于12MHz的方波。本设计采用内部时钟方式,采用12MHz的晶振和两个22pF的电容。如图3-2所示。 按键模块 程序开始运行先南北段通行、东西段禁止60s,后东西段通行、南北段禁止60s,依此循环。 系统分三种工作模式:正常模式、繁忙模式、特殊模式,并且通过三个按钮“正常”、“繁忙”、“特殊”可相互转化。按键图如3-7所示: 图 3-7 按键模块 这里用到了二极管做开关,是为了防止有一按键

15、被按下3根线同时低,中断无效。二极管在正向电压作用下电阻很小,处于导通状态,相当于一只接通的开关;在反向电压作用下,电阻很大,处于截止状态,如同一只断开的开关。利用二极管的开关特性,可以组成各种逻辑电路。 4.软件编译环境 C语言C语言是一种通用的计算机程序设计语言,它既可以用来编写计算机的系统程序也可以用来编写一般的应用程序。以前计算机的系统软件主要用汇编语言编写,单片机应用系统更是如此。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序不但周期长,而且调试和排错也比较困难,为了提高单片机应用程序的开发效率,改善程序的可读性和可移植性,采用高级语言无疑是一种最好的选择。

16、C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作,表达和运算能力也较强,许多以前只能采用汇编语言来解决的问题现在都可以用C5.实验模拟语言来解决。综上所述,C语言在功能上、结构性、可读性、可维护性上有明显的优势,故本课题采用C语言实现软件功能。交通灯的主要用途是指示通行和显示时间,因此主要检测发光二极管模块和数码管显示模块,按键模块。按照本设计的功能需求,进行相应的实验模拟(1)软件采用proteus8进行电路图的仿真模拟, 2、软件部分首先应用keil u4软件对程序进行编译和调试,调试成功后,利用Proteus软件进行在线仿真,经过对程序多次地修改后,仿真效果达到了预期的要求

17、。 3、将最终调试好的程序烧录到单片机内,观察效果。 本系统以STC89C51单片机为核心,采用7段数码管并应用74LS245对数码管进行驱动,可以很直观地显示红绿灯的开放及关闭时间;功能完善,不仅有普通交通灯的指示功能,还增加了特殊模式和繁忙模式。其控制功能与效果与真实道口管理红绿灯一致。6.参考文献1童诗白.模拟电子技术基础(第四版)高等教育出版社2阎石.数字电子技术基础 (第五版) 高等教育出版社3C语言程序设计科学教育出版社451单片机的基础教程 电子工业出版社5单片机原理及应用基于Proteus和Keil C(第二版)电子工业出版社6郭天祥.51单片机C语言教程-入门、提高、开发、拓

18、展全攻略 电子工业出版社7.实验程序 单片机控制交通灯的C源程序开始按钮开始交通灯的控制,然后选择模式三种模式:正常模式东西行,南北断60s;东西断,南北行60s;繁忙模东式西行,南北断20s;东西断,南北行20s;特殊模式四路全为红灯,20秒后转到正常模式正常模式和繁忙模式可任意转到特殊模式;正常模式和繁忙模式转换需要在倒计时结束转换;#include#define uint unsigned int#define uchar unsigned charuchar i,a;uint counter,ge,shi,temp;/*定义控制位*/*定义控制端口*/sbit A_0=P20; /南北

19、红 sbit A_1=P21; /南北黄 sbit A_2=P22; /南北绿sbit B_0=P23; / 东西红 sbit B_1=P24; / 东西黄 sbit B_2=P25; / 东西绿sbit WE1=P26; / 十位位选 sbit WE2=P27; / 个位位 sbit number=P30; / 正常模式开sbit busy=P31; / 繁忙模式开sbit special=P33; / 特殊模式开sbit number1=P10; / 正常指示灯sbit busy1=P11; / 繁忙指示灯sbit special1=P12; / 特殊指示灯sfr WDT=0xe1; /

20、看门狗特殊寄存器设置uchar code table= 0x3F,0x06,0x5B, 0x4F, 0x66, 4 0x6D, 0x7D, 0x07 0x7F, 0x6F; void delay(uint time); /延时函数声明void initial(); /初始化函数声明void status1(); / 状态1函数声明void status2(); / 状态2函数声明/*显示函数*/void display() P0=tableshi; WE1=0;delay(1); WE1=1; P0=0xff;/delay(1); P0=tablege; WE2=0;delay(1); WE2

21、=1;/*主函数*/void main() /if(on=0) /*大循环*/ WDT=0x34; initial(); while(1) counter=temp; status1(); / WDT=0x37; counter=temp; status2();/ WDT=0x37; /*初始化函数*/void initial() TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; /开总中断 ET0=1; TR0=1; EX0=1; IT0=1; /边沿触发 temp=60; a=0;/*状态函数1*/void sta

22、tus1() A_1=1;B_1=1; while(counter) if(temp=60) number1=0;busy1=1;special1=1; else if(temp=30) number1=1;busy1=0;special1=1; elseif(temp=20) number1=1;busy1=1;special1=0; display(); if(a=1) A_0=0;A_2=1; B_0=0;B_2=1; else A_0=0;A_2=1; / 东西行,南北断 B_0=1;B_2=0; /东西断,南北行if(counter=3) if(i=10) B_1=0; A_1=0;

23、 else B_1=1;A_1=1; if(counter=2) if(i=10) B_1=0;A_1=0; else B_1=1;A_1=1; if(counter=1) if(i=10) B_1=0;A_1=0; else B_1=1;A_1=1; if(a=1&counter=0)temp=60;a=0; /*状态函数1*/void status2() A_1=1;B_1=1; while(counter) if(temp=60) number1=0;busy1=1;special1=1; else if(temp=30) number1=1;busy1=0;special1=1; el

24、seif(temp=20) number1=1;busy1=1;special1=0; display(); if(a=1) A_0=0;A_2=1; B_0=0;B_2=1; else A_0=1;A_2=0; / 东西行,南北断 B_0=0;B_2=1; /东西断,南北行if(counter=3) if(i=10) B_1=0; A_1=0; else B_1=1;A_1=1; if(counter=2) if(i=10) B_1=0;A_1=0; else B_1=1;A_1=1; if(counter=1) if(i0;time-) for(a=10;a0;a-); /*定时器中断0*

25、/void timer() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; i+; if(i=20) counter-; WDT=0x34; i=0; shi=counter/10; ge=counter%10;/*外部中断0*/void EXTR0() interrupt 0 if(number=0) temp=60; if(busy=0) temp=30; if(special=0) temp=20; counter=temp; number1=1;busy1=1;special1=0; a=1; 实验结论(心得体会)此次

26、课程设计我们小组选定的课题是临时交通灯,刚开始的时候,几乎没有一点头绪,不知从何下手,可是真正完成了之后,觉得其实也并不是特别困难,只要找到线头,顺着它一步步往下走,就可以顺利到达终点。通过这一学期对单片机的学习,已经对单片机有了基本的了解,但那要说真正理解,我觉得差的还不是一点点,毫无疑问,这次的设计就给了我们一个深入学习。在确定了设计题目为交通灯后,我便跑到图书馆搜索了有关课程设计的参考资料,并且同时去同学请教了一些关于单片机的知识,几天后给跟据我自己的想法画出了控制系统的电路原理图,在我和我们组的另外一个同学的商讨及修改后最终确定了我们本次设计的硬件电路图。这次课程设计还是让我收获挺多的

27、不管是软件,硬件还是团结协作方面。当然,任何事情都不是一次就能成功的,必须经过多次的尝试并改善才能得到最好的。在这次设计中,我们也不可避免的遇到了同样的问题,虽然我们的作品很简单,扩展功能也不多,也许在所有同学的作品里面并不是很惊艳,但不管如何,这是我们通过自己的努力做出来的,我们也收获了自己想要的,不管最终的成绩如何,我们知道自己努力过了就好了。总之,通过这次课程设计,我学到了很多东西,对单片机及其应用有了更深的了解,这次课程设计对我们团队来说获益匪浅,通过亲自动手设计,使我们学会了很多以前没弄懂的理论知识,还学会了几个软件,像Keil u4,Proteus 等,也使我了解到单片机的实用价值,

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

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