基于单片机的智能交通灯控制系统设计与实现本科学位论文.doc

上传人:可****阿 文档编号:91724693 上传时间:2023-05-27 格式:DOC 页数:31 大小:601.63KB
返回 下载 相关 举报
基于单片机的智能交通灯控制系统设计与实现本科学位论文.doc_第1页
第1页 / 共31页
基于单片机的智能交通灯控制系统设计与实现本科学位论文.doc_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《基于单片机的智能交通灯控制系统设计与实现本科学位论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的智能交通灯控制系统设计与实现本科学位论文.doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于单片机的智能交通灯控制系统设计与实现目 录一选题背景11本设计的目的及意义12本设计应解决的主要问题1二方案介绍21设计原理22方案选择33分析问题4三设计过程51 硬件设计51.1系统硬件总电路构成51.2单片机最小系统51.3 LED显示71.4数码管显示71.5信号显示驱动电路91.6键盘输入电路91.7红外接收原理102.软件设计112.1定时器的设置112.2中断程序的设置11四结果分析121断电调试122通电调试133功能部分的测试13五结论13参考文献14附录15一选题背景当今社会,科技不断的发展,作为微控技术其中一部分的单片机也紧跟着脚步,正在迅速发展,普遍运用到了人们生活

2、的各个领域。它的出现使传统的控制技术发生了本质上的转变。可以说单片机的创造对于以往的控制技术来说就像是一场革命。无论在日常生活中,还是在工业领域的自动化控制,电子领域的数据收集等等,都能看到单片机存在的身影,在微控领域占据了极高的地位。所以单片机的开发应用是高科技领域的一个里程碑。所以我们有必要更加深入掌握有关单片机的知识以及其应用技术。本文正是运用单片机来制作一个模拟的智能交通灯,通过此交通灯来智能控制十字路口的交通,有效、科学的控制引导过往的车辆和人流。11本设计的目的及意义本设计的目的是制作一个比较符合实际情况,价格低廉而不乏性能的交通灯智能操控系统。通过对现在的交通灯的了解和研究,本人

3、打算使用红外线检测传感、根据实际情景来改变智能化控制的技术。系统除了一般的交通灯的功能之外,还可以通过检测十字路口车的数量的多少来控制红绿灯时间的改变。不仅如此,除了自动控制红绿灯的变化之外,在紧急的特殊情况下,还可以手动的变换红绿灯来使一些特殊的车辆快速通过交通路口等。总的来说,本设计意义有如下4个方面:(a)用单片机这个完善的控制系统在交通灯应用的这个方面来实现与运用。(b)从人性话的角度来设计交通灯。(c)探究全新的交通灯管理系统。(d)通过红外线传感器来检测车流量,以达到自动调整红绿灯时间的功能。这次除了运用单片机,还运用了可编程并行输入输出接口芯片当作中心件来完成交通灯控制器的设计,

4、对交通十字路口路口进行管理。通过单片机来控制硬件电路,进行现实情况的模拟,实现红绿灯之间的转换,使之按次序点亮。通过LED数码管来显示倒计时的时间,红绿灯采用红、黄、绿3种发光二极管来显示,而特殊紧急车辆的通过通过实时中断来实现。用红外线作为检测车流量的方法,根据车流量的多少来智能的计算倒计时时间。2本设计应解决的主要问题本设计将设计并制作一个智能交通灯控制系统。设计的内容是:A、熟练掌握单片机的用法与最小系统的搭建。B、完成智能交通灯控制系统的硬件与软件设计。C、应具有智能判断车流量功能。D、应具有根据车流量智能设定红绿灯时间功能。E、在制作的单片机系统上实现所设计的功能,并完成演示。F、其

5、他可扩展功能。目前,限制单片机智能交通灯设计的因素主要有以下两个:a、根据各道路路口车流量的大小自动调节通行时间,因为这个问题就关系到了通过运用什么技术来检测。正常情况下车流量检测器通过传感器加单片机,再加上一些其他器件来运行。考虑到整体情况,本人这次用红外线来检测车流量。b、考虑特殊车辆通行情况,设计紧急切换开关。例如消防车、救护车、警车等等,遇到这些紧急情况的话就要考虑到这些车辆的迅速通行,因为这都是性命攸关的时刻,所以设计紧急切换开关是必须的。而这个紧急切换开关就关系到了程序的设计,这个问题的实现难度对于本人来讲也是一项挑战。二方案介绍1设计原理本设计所用的部件包括以下这几样:STC89

6、C52RC单片机及其最小系统,除此之外,还有74HC245的驱动电路和外围的按键和用来看数字的数码管,通过这些来完成本人的这次毕业设计。在一定的时间内增加车辆安全通过的数量和质量。而且在车流量密集的时候通过系统的设定来改变主次干道的通过车辆的时间,减少交通密集和堵塞现象。除此之外,针对紧急特殊情况,系统还具备了紧急处理按钮,通过这些按钮可以让一些如警车、救火车、救护车等快速通过,提高对特殊紧急状况的应变能力。通过单片机来掌控交通灯的运行,可以让单片机改变信号灯的轮流点亮,能满足一般情况下的车辆运行,当然,接入LED数码管就能够显示倒计时以提醒行使者,更具人性化。这次设计在这样基础之上,单片机控

7、制系统对这种情况进行了全面的整改,按实际情况掌控并指挥交通的运作。系统总体框图如图2.1所示:键盘设置部分可以对模式进行选择,智能时间出现问题时还可以对时间进行人工调整,当系统开始正常运行时,在调整交通灯的正常运作显示的时候,还将相对应的时间数字灌输到数码管上,通过数码管展现出来。与此同时,还应该时刻能够检查违规的车辆和具有突发的按键处理,实现应对紧急情况处理的目的。急停按钮以及违法检验立即调用中断。图2.1 系统的总体框图根据这种情况,此次设计把单片机作为根本,以按键部分和红外接受模块部分作为输入,交通灯显示模块和数码管通过驱动电路进行输出。系统的总体框图如图2.1所示。2方案选择a、控制器

8、方案作为交通智能控制的中心,控制器的选择十分重要。方案一:用FPGA进行控制。方案二:用PLC进行控制。方案三:51 系列单片机,这是一种较为实用的系统。经过各方面的综合因素考虑。上面的3 种控制方案都能够漂亮的实现智能交通灯的运行,虽然PLC 以及FPGA进行操作的时候比较容易,但是它们的价格确实昂贵的。而本人的这次设计选的是方案三(51 系列单片机),因为它不但能够完成智能通交通灯的控制,而且它的性能也非常好,价格也很便宜,是个非常好的选择。所以本人选择了用的比较常用的89C52单片机当作控制器。b、供电方案为了能够让交通灯在正常的状态下运作,应该有一个稳定的电源。本人的这次设计想到了两种

9、电源方案:方案一:使用相对稳定的外接电源。这个方案的好处是性能比较稳定安全,并且还有各种相对完美的电路;缺陷是每一个部分都使用独立的电源,令系统变得更加复杂,并且有几率改变电路电平。方案二:通过单片机控制模块进行电源的供给。优势是系统比较简单,省资金;缺陷是输出的功率低,导致电路不稳定。综合考虑到了本设计的情况,本人采用了第一套方案。c、显示界面方案这次设计的运用到了倒计时和红绿灯等显示。本人想到了以下几个方案:方案一:全部通过数码管来显示。但是这样只能实现部分符号和数字,并不能实现全部功能。方案二:全部通过点阵式LED 显示。缺点是这种方案比较复杂,而且程序比较难;但是功能全面,基本上能实现

10、所需的功能。方案三:通过数码管和点阵LED 一起显示。从实际状况等各方面综合因素考虑,本人选用方案三数码管与LED灯一起来显示时间与状态灯。这个方案不但实现了全部需求,实现起来又比较简单。d、输入方案根据实际情况,本人想到了两种方案:方案一:使用8155扩展输入输出口以及键盘、显示等。这种方案的优势是:比较灵活,而且含有RAM和计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。方案二:通过在输入输出口线上接上按钮开关。该方案优势是:编程比较容易,使用起来比较方便,而且成本更加低。缺点就是功能有限。从各方面因素考虑之后,本人使用方案二来实现输入。3分析问题我们假设设在一个十字路口上,

11、分别有东西南北四个方向,在任意时候只可以让其中一个方向的车辆通过,另外一个方向禁止通过,经过一定时间后,将两个方向互换。说明:黑色代表灯亮,白色代表灯灭。一开始红绿灯的状态如下图(a),然后到(b)、(c)、(d),最后按照这个顺序重复循环,交通状态如图2.2所示:下面是具体的每一个交通灯的状态显示: (a) (b) (c) (d)图2.2 交通状态(a)东西方向红灯亮,车辆禁止通行,南北方向绿灯亮,车辆可以通行,倒计时13秒(时间只是方便演示)。(b)东西方向红灯亮,禁止通行,南北方向黄灯亮,车辆应该等待通行,倒计时5秒(时间只是方便演示)。(c)南北方向红灯亮,静止通行,东西方向绿灯亮,车

12、辆允许通行,倒计时24秒(时间只是方便演示)。(d)南北方向红灯亮,车辆禁止通行,东西方向黄灯亮,倒计时5秒(时间只是方便演示)。等待时间倒计时,紧接着回到状态(a)下面我们可以用图表表示灯状态和行止状态的关系如下:表2.1 交通状态及红绿灯状态状态a状态b状态c状态d东西向禁行等待变换通行等待变换南北向通行等待变换禁行等待变换东西红灯1100东西黄灯0001东西绿灯0010南北红灯0011南北绿灯1000南北黄灯0100东西南北四个交通口都含有红绿灯以及数码管,无论是哪一个交通口,凡是看到红灯的应该禁止通行,看见转了绿灯就可以通过,如果黄灯亮了表示红绿灯状态即将发生变化。各方向的状态以及红绿

13、灯状态如上表2.1。(说明:0表示灭,1表示亮)三设计过程1 硬件设计 1.1系统硬件总电路构成为了满足这次的交通灯设计所需要实现的功能,本人选用了STC89C52RC芯片和外围设备组成的最小系统,代表红、绿、黄三种颜色的led交通灯总共14个,4个2位LED数码管和包括复位键、紧急控制按键等,红外线接受器,驱动电路模块,若干导线、电阻和电容。构成了此次设计的各个模块。本系统把单片机最小系统作为关键核心,由各个硬件模块软件为控制主体组成一个处理、智能控制为一体的封闭操控系统。其中P0用来送显LED数码管的段选和位选,P1用来操控红绿灯的亮暗,12MHz晶振接在单片机芯片引脚的XTAL1和XTA

14、L2上,REST引脚接连接复位电路,P3端口用来实现按钮的控制。1.2单片机最小系统单片机的应用系统可以分为硬件部分和软件部分。软件部分指挥各个硬件执行烧录进单片机内的程序,如果没有程序那么它显然是无法工作的的。但如果它仅仅只是烧录了程序,它还是同样无法工作。原因是除了单片机和软件部分外,要使单片机能够正常工作,还需要时钟电路和复位电路。芯片加上时钟和复位电路,这样才是完整的最小单片机系统。在XTAL1引脚和XTAL2引脚间跨接一定频率的晶振构成时钟电路为单片机的正常工作提供基本时钟,机器周期则由晶振频率决定。复位电路则将系统恢复初始化。就如同此系统中,将系统恢复至东西通行,南北禁止的刚启动系

15、统的状态。为了实现单片机的同步工作,系统必须有唯一的时钟信号,并在这个时钟信号下严格的按时序进行状态转换和工作。这个时钟信号可以外部时钟也可以芯片自带的时钟信号。这种时钟信号由时钟电路提供。在本系统中,在STC89C51单片机XTAL1和XTAL2之间接的是晶振频率为12MHz的晶振。机器周期是晶振频率的十二分频,所以机器周期为1us。适当编写程序,则可以定时1ms或者1s的时间。单片机与计算机相同,都有可能会出现故障死机或断电的情况,这时候则需要和计算机一样有一个复位键将系统重启,单片机的复位电路也是使CPU和系统中的其他功能部件都恢复到一个确定的初始状态。实现复位的条件就是RST引脚输入持

16、续2次机器周期的高电平。复位后PC=0000H,即是从新从程序存储器的第1个单元取指令进行译码。若持续高电平则会循环复位。按键复位和上电自动复位是复位电路经常采用的两种不同的方式。本系统所使用的是按键复位。按键在其余4个按键的中间,接芯片的RST引脚。按键瞬间RST引脚端电位与Vcc一致,随着电容C1的充电,充电电流的减少,导致RST引脚的高电位下降。只要RST引脚的高电位能够保证在2个机器周期以上,单片机就会进行复位操作,使系统复位。上电复位则要求接上电源之后能够自动实现系统的复位,原理相同,不再赘述。单片机最小系统原理图如图3.1所示:图3.1 单片机最小系统原理图1.3 LED显示发光二

17、极管简称为LED。它是一种半导体二极管。它的可见光是由空穴和电子结合时辐射而出的,因此它可以把电能转化为光能。主要由镓(Ga)与砷(As)、磷(P)、氮(N)、铟(In)等化合物制成这种半导体二极管。三极管具有2个PN结,而发光二极管是由一个PN结组成的,它具有单向导电性。正向压降低,反向压降则要相对高得多。它改变了白炽灯钨丝发光与节能灯三基色粉发光的原理,而采用电场发光。因此它也是非常有发展前景的绿色照明光源。它的功耗低,寿命长,辐射低的特点使其得到了广泛的应用。不仅如此,它的光效率高,亮度大,同时可以回收利用的优点也使它成为非常受瞩目的新一代光源。它的运用简单,信号稳定,所以选择发光二极管

18、作为我们系统非常关键的模拟交通灯灯源。本系统所选用的是普通单色发光二极管。它具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长且价格低廉等优点,非常适合单片机交通灯系统的模拟交通灯。连接时也要注意LED灯的单相导电性,接反将会导致交通灯无法正常使用。模拟交通灯利用发光二极管来显示不同颜色的信号指示灯。LED灯如图3.2所示: 图3.2 LED灯显示电路1.4数码管显示数码管是一种半导体发光器件,在单片机系统中运用广泛,可以显示单片机的工作状态。就如同本系统中的数码管用来显示红绿黄灯状态的持续时间和跳转时间,是人机对话非常重要的输出设备。其基本单元是发光二极管。数码管显示是分段

19、实现的,通过点亮不同段来显示不同的数字。其中按段数分为七段LED数码管和八段LED数码管,其中八段LED数码管比七段LED数码管多了一个LED灯在右下角作为数字的小数点。数码管按结构还可分为共阴极数码管和共阳极数码管。在此系统中所采用的则是八段共阳极数码管结构。八个LED灯构成的共阳极数码管是将所有LED灯的阳极连接在一起接在高电平上作为公共控制端。阴极作为“段”的控制端,当其中一“段”的控制端接低电平时,该段对应的发光二极管就会点亮。通过点亮不同的段从而显示出各种数字。本系统的共阳极数码管的公共控制端接到+5V高电平上。共阴数码管是指将LED灯的阴极接到一起形成公共阴极(COM)的数码管,与

20、阳极不同的是要接在低电平阴极上。而阳极作为段选端,要点亮某段时则需要输入高电平。LED数码管的显示方式可以分为静、动态显示两种。虽然静态显示相对于动态显示用较小的电流就能使数码管的亮度加强、CPU运算时间少,编程也更简便,节省存储空间且显示便于检测和控制。但其占用的I/O口太多,只适合少位数码管使用。不适合此系统,所以选用动态显示,下面重点介绍数码管的动态显示。此系统用动态显示方式点亮4个2位数码管,各个共阳极数码管相应的段选控制端并联在一起由P0口控制,并用驱动器驱动。各位数码管的公共端,也称为“位选端”由单片机的P1口控制。数码管显示如图3.3所示:图3.3数码管显示1.5信号显示驱动电路

21、74HC245译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC245特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。利用这种复合使能特性,仅需4片74HC245芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC245亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。74HC245作用原理

22、于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在 高性能存贮器系统中,用这种译码器可以提高译码系统的效率。将快速赋能电路用于高速存贮器时,译码器的延迟时间和存贮器的赋能时间通常小于存贮器的典型存取时间,这就是说由肖特基钳位的系统译码器所引起的有效系统延迟可以忽略不计。HC138 按照三位二进制输入码和赋能输入条件,从8 个输出端中译出一个 低电平输出。两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器,扩展成24 线译码器不需外接门;扩展成32 线译码器,只需要接一个外接倒相器。在解调器应用中,赋能输入端可用作数据输入端。74HC245电路图如图3.

23、4所示:图3.4 74HC245电路图1.6键盘输入电路单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/O 口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用了独立式键盘接法。独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O 口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O 口与地短路迫使I/O 口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持

24、高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般10200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10200毫秒以避开抖动(经

25、典值为20毫秒),延时结束后再读一次I/O 口的值,这一次的值如果为1 表示低电平的时间不到10200 毫秒,视为干扰信号。当读出的值是0时则表示有按键按下,调用相应的处理程序。键盘控制电路图如图3.5所示:图3.5 键盘控制电路图1.7红外接收原理红外线接收头的运作原理:它里面的有一个接收管,作用是把红外线发射装置所发射出去的光信号转变成较弱的电信号,这个电信号再通过IC 里面的放大器处理,把信号增大,紧接着经过一系列的自动增益控制、带通滤波、解调变、波形整形后转化为遥控器发射出来的原始编码,再经过接收头的信号输出脚输入到电器上的编码识别电路。红外接收图如图3.6所示:图3.6 红外接收电路

26、图2.软件设计跟C语言比起来,汇编语言所编写的代码生成的速率很快,但是程序看起来会十分复杂,很难读懂,然后用C 语言所编写的代码在速率方面跟汇编语言差不多,但是却比汇编容易更容易读懂,可移植性也很强,不仅如此, 在编写高时效性的代码的时候,C 语言还能够嵌入汇编语言来完成。在开发周期的方面,如果一般中大型的软件,编写都是用C 语言来实现,因为它的开发周期比汇编语言的要少许多。综上所述,本人在这次的毕业设计当中选了C语言作为程序编程语言。而这次的毕业设计的程序用Keil Vision 2.0这款软件进行编写。因为这个编程软件不但支持各种公司的芯片,还具有编译、编辑以及仿真等功能,不仅是C语言,它

27、还支持PLM、汇编这两种语言的编写和设计,界面非常简洁,让人容易上手。在程序的调试和软件的仿真这两个方面都很优秀。所以这次的编程的软件本人选的是Keil Vision。系统总的流程图如图3.7所示:设置字型码和字位码,完成显示初始化外部中断定义状态数组宏定义返回while(1)函数进入while(1)循环I/O初始化定义字位码函数定义共阴极字型编码表调用显示控制函数void display()进入主函数main()定义函数变量并初始化定时器0初始化调用Buzzer()函数 图3.7 系统总的流程图2.1定时器的设置定时器的工作方式可以分为4种,工作方式0是13位的定时计数器; 16位的定时计数

28、器可以用工作方式1来实现;工作方式2是8位的定时计数器;工作方式3情况较复杂,定时计数器T0才可以在此工作方式下工作,T0被分解成独立的两个8位定时计数器。而在此系统的程序,所采用的是工作方式1。具体用代码TMOD=0x11来设置2个定时计数器T0,T1都工作在工作方式1下。2.2中断程序的设置在中断情况下,本系统的程序中断思路流程图如图3.8所示,采用外部中断0进入只允许东西通行的特殊情况;采用外部中断1进入只允许南北通行的特殊情况;在自然情况下,外部中断0的优先级高于外部中断1,系统无特别要求可不设置外部中断的优先级。中断响应关定时器特殊情况(紧急情况)中断返回图3,8 程序中断思路流程图

29、本系统的设计所用的定时中断程序是非常重要的,定时计数器启动之后,它就开始在初始值上的加1计数,程序设定给TL0和TH0装载合适的初值,假设需要设定系统定时50ms,计50000个数后,定时计数器将会溢出,此时的时间就是50ms并且会进入中断系统,当需要设定系统时间1s时,程序设计时只要设置20次50ms的定时中断就是1s,这样便可精确控制定时时间同时利用中断系统完成数码管输出数据刷新和处理不同状态的切换。定时中断系统的程序流程图具体情况如图3.9所示。定义1s定时中断入口设置字型码和字位码,完成数码管倒计时显示启动定时器中断 关闭定时器0初始化定时器0 计数变量自加1 图3.9定时中断流程图四

30、结果分析1断电调试以保安全,避免硬件被烧坏,本人一开始先进行的是断电测试。首先用万能表检查电路是不是有短路的情况出现,然后看看设计的原理是不是对的,每一个线路电压有没有出现错误。经过检查,断电测试没有问题。2通电调试A、插入电源后,按了开关,发现电路没有反应,经过一系列的测试排除后发现输入电压最少应该为6.5V,经过处理,换了一个9V的电源,问题终于得到了解决。B、 测试系统的时钟是不是正确的,本人的方法是用万能表来测试。把万能表调到直流电压档这个档位,然后把两线分别接在XTAL1与AXTAL2之间,显示出来的数字是2.4,没有问题。C、复位电路经过检测没有出现问题。D、数码管显示有时显示不正

31、常,经过一系列排查处理之后,恢复正常。LED灯表现也正常。3功能部分的测试A、接上电源后,交通灯开始运作,运作正常。运行1分钟,按复位键,恢复到了开始状态,表现正常。B、按紧急停止按键,四个红灯一起亮了,再按一次,退出该模式,表现正常。C、按显示车流量按键,数码管显示倒计时停止,红外线每检测到一个信号,计数加1,再按一次,退出该模式,表现正常。D、按单向通行按键,按一次为东西通行,按两次为南北通行,按第三次退出该模式,表现正常。E、按夜间模式按键,按一次路口全为黄灯,按第二次退出该模式,表现正常。F、按调时按键,调节东西方向的红灯和绿灯时长,按一次为调节红灯时长,按两次为调节绿灯时长,再按时间

32、加减两个按键,时间按照按键的次数加减,再按一次,退出该模式,表现正常。五结论通过这次课程设计,我学到了许许多多的东西。总结有以下几条:(1)首先,学习到最明显的就是word的运用。在这次课程设计以前,除了几次基本的文字编辑之外,其它的功能根本就没有用过。通过这篇论文的修改,我学会了很多功能的运用,包括段落、页面、页眉、等各种编辑功能。虽然我知道word的功能远远不止这些,但是这次起码让我学习到了我以前不会的东西,这就是一种进步的表现。(2)在这次课程设计中,我对单片机有了更深的理解,学习到了更多关于单片机的知识。通过深入的研究和思考,在程序编写方面也有自己独特的一套思路,编写的时候更加熟练,灵

33、巧。(3)增强了查阅资料和自学的能力。在这次课程设计当中,我遇到了很多不会的问题,然后我就开始自己上网搜索,查找或者翻阅书本查找,经过自学之后,如果还是不懂,我就会问同学和老师,最后通过自己的理解逐渐的把问题解决了。这让我体会到了什么叫学无止境,知识是无限的,我们只有通过不断的学习,提升自己的知识面,才能更好的运用到实际当中,使生活更加美好,思想境界更加广阔。 参考文献l边海龙,孙永奎. 单片机开发与典型工程项目实例详解J.电子工业出版社,2008,(10):143-160.2王为青,邱文勋. 51单片机开发案例精选J.人民邮电出版社,2001,(5):45-47.3张鑫,华臻,陈书谦. 单片

34、机原理及应用J.电子工业出版社,2008(5).4张洪润,张亚凡.单片机原理及应用J. 清华大学出版社,2005,(4).5黄智伟.凌阳单片机课程设计指导J. 北京航空航天大学出版社,2007,(6)6蒋辉平,周国雄. 基于Proteus的单片机系统设计与仿真实例M.机械工业出版社,2009.7张毅坤. 单片微型计算机原理及应用,M西安电子科技大学出版社 1998 8余锡存 曹国华.单片机原理及接口技术M.陕西:西安电子科技大学出版社,2000.79雷丽文 等.微机原理与接口技术M.北京:电子工业出版社,1997.10张萌单片机应用系统开发综合实例第二版清华大学出版社2005年11何立民单片机

35、应用文集第一版北京航空航天大学出版社2004年12张一工现代电力电子技术原理与应用第一版科学出版社2002年13欧阳文ATMEL89系列单片机的原理与开发实践第一版中国电力出版社2007年附录附录1程序源代码#include REG52.H#include delay.h#include seg.h#define SMG_DATA P0sbit botton1 = P16;sbit botton2 = P17;sbit botton3 = P34;sbit botton4 = P35;sbit botton5 = P36;sbit botton6 = P37;sbit S1=P27;u8 ti

36、mebreak0 = 0; u8 i = 0; /定时器计数变量u16 dx_redtime = 14,dx_gretime = 20,nb_redtime,nb_gretime,yeltime = 5; /红绿灯时间设置s16 count_time = 0; /时间调节量u16 num_stop = 0,flag_stop = 0;/是否需要紧急暂停u8 count_settime = 0; /调时键模式计数u8 count_oneway = 0; /单向通行键模式计数u8 breakflag = 0; /是否有异常情况的出现u16 break_count = 0; /计数变量u8 car_

37、time = 0; /车流量计时u8 car_number = 0; void initled(); /初始化交通灯ledvoid initnumber(); /初始化数码管void initcross(); /初始化路口交通灯void stop(); /紧急中断路口为红灯void displaycount(); /显示车流量void autsettime();/自动调时void oneway();/单向通行void night(); /夜间模式void addtime(); /时间加void cuttime(); /时间减void settime(); /路口调时void breakfunc

38、tion();/异常情况处理/*第一排左边第一个按键为复位按键,第二个按键为紧急停止按键,按一次为路口红灯四方向停止通行,按两次退出该模式;第二排左边第一个按键为显示车流量按键,按一次显示车流量,按两次退出;第二个按键为单向通行按键,按一次为东西通行,按两次为南北通行,按三次退出;第三个按键为夜间模式按键,按一次路口全为黄灯,按两次退出夜间模式;第四个按键为调时按键,调节东西方向的红灯和绿灯时长,按一次为调节红灯时长,按两次为调节绿灯时长;第五个按键为加时按键,按一下时间增加一秒;第六个按键为减时按键,按一下时间减少一秒*/void main() S1=0;/初始化时间 nb_redtime

39、= dx_gretime + yeltime;nb_gretime = dx_redtime - yeltime;/设置中断TMOD = 0X01;TH0 = (65536 - 50000)/256;TH0 = (65536 - 50000)%256;EA = 1;EX0 = 1;EX1 = 1;IT0 = 1;IT1 = 1;ET0 = 1;TR0 = 1; while(1)initcross();i = dx_redtime;while(i 0 )breakfunction();/异常情况的处理if(breakflag)/如果有异常情况,恢复时重新启动breakflag = 0;i = d

40、x_redtime;/正常路口通行(东西红灯)dx_red = 0; /东西红灯display_2(DONG,i - 1);display_2(XI,i - 1);if(i yeltime + 3)/南北绿灯nb_gre = 0;display_2(NAN,i - yeltime - 1);display_2(BEI,i - yeltime - 1);else if(i yeltime) /南北绿灯闪烁display_2(NAN,i - yeltime - 1);display_2(BEI,i - yeltime - 1);if(timebreak0 0 )breakfunction();if

41、(breakflag)breakflag = 0;i = nb_redtime;/正常路口通行 (南北红灯)nb_red = 0; /南北红灯display_2(NAN,i - 1);display_2(BEI,i - 1);if(i yeltime + 3) /东西绿灯dx_gre = 0;display_2(DONG,i - yeltime - 1);display_2(XI,i - yeltime - 1);else if(i yeltime) /东西绿灯闪烁display_2(DONG,i - yeltime - 1);display_2(XI,i - yeltime - 1);if(

42、timebreak0 10)dx_gre = 1;else dx_gre = 0;else /东西黄灯dx_gre = 1;dx_yel = 0;display_2(DONG,i - 1);display_2(XI,i - 1);initled();/定时器中断void time0() interrupt 1TH0 = (65536 - 50000)/256;TL0 = (65536 - 50000)%256;timebreak0 +;if(timebreak0 = 20) /一秒定时i -;car_time +;timebreak0 = 0;if(car_time = 300)/5分钟记录一

43、次车流量car_number = break_count;break_count = 0;car_time = 0;/紧急中断void Exit_0() interrupt 0initcross();num_stop +;if(num_stop % 2)flag_stop = 1; /第一次中断为禁止通行TR0 = 0;timebreak0 = 0;breakflag = 1;else /第二次中断为恢复正常通行flag_stop = 0;TR0 = 1;dx_red = 1;nb_red = 1;/紧急中断路口为红灯void stop()if(flag_stop)initled();while(f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁