基于89c51的智能交通灯软件设计.doc_第1页
基于89c51的智能交通灯软件设计.doc_第2页
基于89c51的智能交通灯软件设计.doc_第3页
基于89c51的智能交通灯软件设计.doc_第4页
基于89c51的智能交通灯软件设计.doc_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江苏技术师范学院毕业设计说明书(论文)目 录引言.1第1章 交通管理方案论证.32.1 设计任务.32.2 方案介绍.3第2章 交通灯控制系统硬件设计.72.1 单片机概述.72.2 系统构成.82.3芯片选择与介绍.9 2.3.1 STC89C51芯片.9232 89系列单片机的优点.9233 ATMEL89系列单片机的分类.10234 I/O口的功能.10235 结构框图.11236 引脚描述.12第3章 交通灯控制系统软件设计3.1 程序设计流程图.203.2延时的设定.223.2.1 计数器初值计算.223.2.2 相应程序代码.233.3 MATLAB的运用.243.4 MAX232实现单片机与PC机之间的通讯.313.5 程序的主控制循环调用.353.6 对现有程序的扩充.36第4章 系统测试4.1实验平台.384.2实验步骤.384.2.1 编写程序代码.384.2.2 按照系统硬件连线图连接好系统并调试.38结论.41参考文献.42附录1 .44附录2.49附录3.51附录4.53第 2页 共65 页引言今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两块以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,当车辆接近时,红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。道路拥挤现象日趋严重,造成的经济损失越来越大,并一直保持大比例的增长。现在交通系统已不能满足经济发展的需求。由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。 中国车辆数量不断增加,交通管制的工作量越来越大,利用计算机代替人进行高效交通管理是必然的发展趋势,而让计算机控制的交通灯拥有类似人类的感知智能,具有很强的现实意义,比如通过摄像机让交通灯控制系统获得视觉感知功能,就可以代替人类的眼睛,使系统根据所“看到”交通情况自适应改变管制策略,提高了交通管理的自动化水平,使得交通更高效、更顺畅。第1章 交通管理方案论证2.1 设计任务东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、左转绿、绿三个指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。红灯的设计时间为40秒,绿灯及左转绿灯各为20秒,并通过图像处理来检测是否闯红灯,如果有闯红灯,通过报警灯报警。设A道和B道的车流量相同。2.2 方案介绍把设计任务细化为四个状态,其对应状态:如图1-1: A道为40秒红灯,B道绿灯20秒A道为20秒红灯,B道左转20秒绿灯A道为20秒绿灯,B道为40秒红灯A道左转20秒绿灯,B道为20秒红灯图1-1 状态转换图整个交通灯控制由四个状态组成,可以用程序设计实现,也可用时序逻辑实现.以下方案就是分别用了这两种方法。方案1设计思想:采用分模块设计的思想,程序设计实现的基本思想是一个计数器 , 选择一个单片机,其内部为一个计数,是十六进制计数器,模块化后,通过设置或程序清除来实现状态的转换, 由于每一个模块的计数多不是相同, 这里的各模块是以预置数和计数器计数共同来实现的,所以要考虑增加一个置数模块,其主要功能细分为,对不同的状态输入要产生相应状态的下一个状态的预置数, 如图中A道和B道,分别为次干道的置数选择和主干道的置数选择。以主干道为例,简述其设计思想。如前分析,已经确定该系统有四个状态,而置数子模块可定要将下一状态的预置数准备好,所以很容易得到主干道的置数表如表1-1:表1-1 置数表状态主干道预置数次干道预置数004020012020(左转)1020401120(左转)20由该表,就可以通过程序循环的方法设计该模块,主要思想是通过数据判断指令、跳转指令实现,由主控制器计时和中断产生的四个状态去译码,从而得到不同的输出,即预置数,由上分析可用一个计数器和跳转指令去完成的预置数。而红绿灯的显示也是一样,由状态分析可以得出红绿灯的变化表如表1-2:表1-2 红绿灯变化表状态主干道灯显示次干道灯显示00红灯绿灯01红灯左转绿灯10绿灯红灯11左转绿灯红灯通过这张表就可以用组合电路实现该功能了,可以用数据选择器的思想,在本系统中,直接通过门电路的译码,接下来就是计数模块了,其主要的功能细分为,要从预置数开始递减计数,一个状态结束,通过判断,通知主控制模块,使之进入下一模块。还有一个必须考虑到的就是,预置数必须在下一个状态来之前准备好,而红绿灯的状态变化,必须和计数状态同步,于是引起预置数变化的程序要超前于系统本身的状态变化,所以,系统中的两个状态转换时,在上一状态结束时设置预置数,而控制红绿灯的是随着系统本身状态的变化而变化,体现在本子电路中就是有两组电路去判断符合的状态。方案2 设计思想:状态转换表如表1-3:表1-3 状态转换表状态主干道灯显示次干道灯显示00(15S)红灯绿灯01(05S)红灯黄灯10(15S)绿灯红灯11(05S)黄灯红灯本方案分三步:(1)要建立三路信号灯的控制系统,本设计采用7408 芯片通过组合逻辑控制三路灯的显示关系。(2)建立显示控制系统,本设计采用74190 芯片倒计时控制,每个方向用两片相连实现,另外用74153芯片,因为分析中设置的时间末位均为5,所以只要用一片74153 对高位置位,将低位的初值预置锁定为5,而高位则根据需要由反馈部分提供预置值。(3)建立反馈和细节连接部分,本部分主要解决显示和灯控的同步问题本系统采用倒计时系统减为0,如当系统减为0 时通过两个D触发器得到两个变量,即为开头分析中的状态,通过它的变化得到不同的逻辑关系,驱动74153 控制哪组灯亮(对应关系如表所示),另外他还要同步反馈到显示系统的置数环节。注意:本实验中若采用更复杂的四片74190控制主干道的两组灯,再用八片74153分别对74190置数可实现任意数值的交通灯系统。另外对7408 片子的控制红灯的端口用一个与门将一端再接一个频率一定的方波,使一边为黄灯时,另一边的红灯在闪烁。方案比较:方案1(以下称1)用了模块设计,而方案2(以下称2)采用的是一般设计,相比之下1有较强的可读性和较强的可修改性,而2则在设计上显得较简单,设计纯朴,便于测试,它的优势则在于提供了一条较为便捷的解决方案。2首先将许多逻辑关系简化到极点,而后将其一起集成用较少的芯片去完成所需功能。我们从中可以得出的是,我们最终的设计应该尽量使用模块化设计。对工程设计人员来说,将来的产品无论从修改还是升级考虑对有好处,但另外我们又需将设计简单化,因此我觉得在设计初期尽可能的简单化设计,而一旦设计的各项测试通过了,在有可能的条件下将设计模块化,所以本设计以第一方案为主进行。第2章 交通灯控制系统硬件设计2.1 单片机概述单片机是由运算器、控制器、存储器、输入设备以及输出设备共五个基本部分组成的。单片机是把包括运算器、控制器、少量的存储器、最基本的输入输出口电路、串行口电路、中断和定时电路等都集成在一个尺寸有限的芯片上。通常,单片机由单个集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压、低功耗。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。它主要是作为控制部分的核心部件。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。2.2 系统构成电路板一块,STC89C51单片机一片,74HC164芯片八片,七段数码管八个。74LS04反向器一片,发光二极管13个(8个绿的,4个红的用于交通控制,1个用于标识电源),7805三端稳压电源一个,一个按键,一条数据下载线。系统结构框图如图2-1: 复位键STC89C51单片机系统LED 显示模块模 拟 串 行接 口电 路74HC164基于pc机的图像检测串 行接口电 路图2-1 系统结构框图系统各部分工作:(1)程序设置初始时间,通过STC89C51单片机寄存器实现。(2) 由STC89C51单片机就通过P3.0口向74HC164的数据端口送信息,由74HC164的输出口显示红、绿、黄灯的点亮时间情况;由STC89C51的P1.0、P1.1、P1.2、P1.3口显示每个灯的点亮情况。(3) STC89C51通过程序设置各个信号灯的点亮时间,通过程序设置左转绿、绿、红时间依次为20秒、20秒、40秒循环,由AT89S51的 P3口向74HC164的数据口输出。(4)通过STC89C51单片机的P3口来控制系统是工作。(5)74HC164的A、B口用于串行输出时间位,经过串并转换送到七段数码管的八的引脚。而P1口用于输出控制信号而通过74LS04反向器实现控制各个灯的情况它采用5V的直流电来驱动二极管。(6)STC89C51本身集成了看门狗指令,当系统出现异常看门狗将发出溢出中断。通过专用端口输出,引起RESET复位信号复位系统。2.3芯片选择与介绍2.3.1 STC89C51芯片ATMEL 89系列单片机是以8031为结构的,所以,它和8051系列单片机是兼容的系列。232 89系列单片机的优点89系列单片机对于一般的用户来说,存在下面很明显的优点:1. 含有FLASH存储器因此在系统的开发过程中可以十分容易进行修改,这就大大缩短了系统的开发周期。同时,在系统工作过程中,能有效地保持一些数据信息,即使外界损坏也不影响到信息的保持。2. 和80C51插座兼容89系列单片机的引脚是和80C51一样的,所以,当89系列单片机取代80C51时,可以进行代换。(1)静态时钟方式89系列单片机采用静态时钟方式,所以可以节省电能,这对于降低便携式产品的功耗十分有用。(2)错误编程亦无废品产生一般的OPT产品,一旦错误编程就成了废品。而89系列单片机内部采用了FLASH存储器,所以,错误编程后可以重新编程,直到正确为止,故不存在废品。(3)可进行反复系统试验用89系列单片机设计的系统,可以反复进行系统试验;每次试验可以不同的程序,这样可以保证用户的系统设计达到最优。而且随用户的需要和发展,还可以进行修改,使系统不断能追随用户的最新要求。3. 89系列单片机内部结构89系列的内部结构和89C51相近,它主要含有如下一些部件。(1)8031CPU(2)振荡电路(3)总线控制部件(4)重点控制部件(5)片内FLASH存储器(6)片内RAM(7)并行I/O接口(8)定时器(9)串行I/O接口233 ATMEL89系列单片机的分类ATMEL89系列单片机可分成标准型号、低档型号和高档型号三类。89系列单片机的标准型有STC89C51等4种型号,它们基本结构和89C51是类似的,是80C51的兼容产品,89系列单片机的低档型有STC89C1051等2种型号,它们的CPU和89C51是相同的,但是并行I/O口较少。高档型的有STC89C8252,这是一种可下载FLASH单片机,它和IBM微机通信进地程序是十分方便的。234 I/O口的功能在STC89C51中有四个双向I/O端口P0 P3口,每个端口都是由锁存器、输出驱动器、输入缓冲器组成。当CPU控制系统与外部设备交换信息时,都是通过端口锁存器进行的。四个I/O端口都可作输出输入使用,其中P0和P2口通常用于对外部存储器的访问。接通锁存器时,P0口作为双向I/O使用,如P0口的锁存器的值为1,使输出驱动器中的场效应管截止,引脚空,此时端口可作高阻输入。锁存器的值为0时,下面的场效应管导通,输出为0。P0口作为地址/数据总线口使用时,由“控制”线控制将电子开关接通至“地址/数据”端,分别输出扩展外存的低8位地址A0 A7和数据D0 D7。一般情况下,当P0口作输入输出线使用时,都要外接拉高电阻。在STC89C51和STC89C52中,I/O端口复位值均为1。写端口操作:当执行指令来改变端口锁存器的值时,新的值在最后一个指令S6P2被写入锁存器的。在每一个时钟周期的S1P1,锁存器的值由输出缓冲器采样并保存至下一个机器周期的S1P1才到引脚。当锁存器的状态发生变化时,这个变化不会立即出现在输出端,至少经过一个时钟周期后,才把新的值输出。在P1、P2、P3端口内,都接有内部上拉电阻,此上拉电阻分为固定部分和附加部分,当端口的状态要从0变为1时,在发生变化的哪个机器周期的S1P1和S1P2接通附加的拉高电路以增加变化的速度,否则这个状态的变化将十分缓慢。附加的拉高电路允许通过的电流比普通的上拉电阻大100倍。读端口及接口操作:P1 P3口的输出缓冲器每个都能取代4个LSTTL输入。CMOS型的芯片引脚可由集电极开路电路的漏极开路电路驱动,但在状态从0变1时,边化的速度很慢,输入0时,TP3截止,仅靠TP2非常微弱的上拉来驱动状态的变化。在外部总线方式下,P0口的输出缓冲器能驱动8个LSTTL输入,但P0口用作输入输出口时需外接上拉电路驱动输入。235 结构框图 图2-2 8051结构框图STC89C51具有下列主要性能:1. 4KB可改编程序FLASH存储器(可经受1,000次的写入/擦除周期)2. 全静态工作:0HZ 24MHZ3. 三级程序存储器保密4. 128*8字节内部RAM5. 32条可编程I/O线6. 2个16位定时器/计数器7. 6个中断源8. 可编程串行通道9. 片内时钟振荡器另外,STC89C51是静态逻辑来设计,其工作可下降到0HZ并提供可用软件来选择的省电方式空闲方式(IDLE MODE)和掉电方式(POWER DOWN MODE)。在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,单片机振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内RAM中的内容,直到下一次硬件复位为止。236 引脚描述 图2-3 是STC89C51的引脚结构图: 图2-3 8051引脚图STC89C51有40 条引脚,分为端口线、电源线和控制线三类1.端口线(4*8=32条)8051有四个并行I/O端口,每个端口有8条口线,用于传送数据和地址。(1)P0.0 P0.7:这组引脚共有8条,为P0口所专用,其中P0.7为最高位,P0.0为最低位。这8条引脚口有两种不同的功能,分别使用于两种不同的功能。第一种情况是89C51不带片外存储器,P0口可以作为通用I/O使用,P0.0 P0.7用于传送CPU的输入/输出数据。这时,输出数据可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89C51带片外存储器,P0.0 P0.7在CPU访问片外存储器时用于传送片外存储器的第8位地址,然后传送CPU对片外存储器的读写数据。(2)1.0 P1.7:这8条引脚和P0口的8条引脚类似,P1.7为最高位,P1.0为最低位,当P1口作为通用I/O使用时,P1.0 P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。(3)P2.0 P2.7:这组引脚的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O口使用。它的第二功能和P0口的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不能像P0口那样是可以传送存储器的读写数据。(4)3.0 P3.7:这组引脚的第一功能和其余端口的第一功能相同。第二功能作控制用,每个引脚并不完全相同,如表2-1所列。表2-1 P3口第二功能2.电源线(2条) VCC为+5V电源线,VSS为接地线。3.控制线(6)条(1)外接晶体引脚XTAL1和XTAL2MCS-51的时钟可以利用它内部的振荡器产生,只要在XTAL1、XTAL2引脚上外接这时反馈电路,内部振荡器便自激振荡,产生时钟输出到内部的定时控制逻辑。定时反馈电路一般为石英晶振和电容组成的并联回路。这种方式称为内部方式,这种方式的外部元件连接如图2-5所示。如果振荡器已起振,则在XTAL2引脚上输出3V左右的正弦波。(2)ALE/PROG:地址锁存允许/编程线,配合P0口引脚的第二功能使用,在访问片外存储器时,89C51CPU在P0.0P0.7引脚线上输出片外存储器低8位地址的同时还在ALE/PROG线上输出一个高电位脉冲,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器读写数据。在不访问片外存储器时,89C51自动在ALE/PROG线上输出频率为F0SC/6的脉冲。图2-4 晶振电路(3)EA/VPP:允许访问片外存储器编程电源线,可以控制89C51使用片内ROM还是使用片外ROM。若EA=1,则允许使用ROM;若EA=0,则允许使用片外ROM。(4)PSEN:片外ROM选通线,在执行访问片外ROM的指令MOVC时,8051自动在PSEN线上产生一个负脉冲,用于为片外ROM芯片的选通。其他情况下,PSEN线均为高电平封锁状态。(5)RST/VPD:复位电源线,可以使89C51处于复位工作状态。通常,89C51的复位有自动上电复位和1 2按钮复位两种,如图3-6所示。图2-5 复位电路4.中断与定时/计数系统1.中断 在单片机中,中断技术主要用于实时控制。所谓实时控制,就是要求计算机能及时地相应被控对象提出的分析、计算和控制等请求,使被控对象保持在最佳工作状态,以到达预定的控制效果。由于这些控制参量的请求都是随机发出,而且要求单片机必须作出快速响应并及时处理,对此只有靠中断技术才能实现。 向CPU发出中断请求的来源称之为中断源。MCS51是一个多中断源的单片机,以80C51为例有3类共五个中断源,分别是外部中断2个,定时中断2个和串行中断1个。 在MCS51单片机中,控制寄存器共有4个,即定时器控制寄存器、中断允许控制寄存器、中断优先控制寄存器及串行口控制寄存器。这4个控制寄存器都属于专用寄存器之列。MCS51的中断优先级控制比较简单,因为系统只定义高低2个优先级。各中断源的优先级由中断优先级寄存器(IP)进行设定。从中断相应到转向执行中断服务程序,完成中断所要求的操作任务,是一个很复杂的过程。中断完成后,TCON或SCON中的中断请求标志应及时清除。否则就意味着中断请求仍然存在,弄不好就会造成中断的重复查询和相应,因此就存在一个中断请求的撤销问题。MCS51是通过只有在一条指令的最后一个机器周期的查询有效才能进行中断相应来实现。它有一种单步工作方式,所谓单步执行就是由外来脉冲控制程序的执行。而外来脉冲是通过按键产生的,因此实际上单步执行就是按一次键执行一条指令。中断系统的控制2定时器/计数器的控制寄存器(1)、定时器控制寄存器(TCON) TCON寄存器既参与中断控制又参与定时控制。现对其定时功能加以介绍。其中有关定时的控制位共有4位:F0和TF1计数溢出标志位当计数器计数溢出(计满)时,该位置“1”;使用查询方式时,此位作状态位供查询,但应注意查询有效后应以软件方法及时将该位清“0”;使用中断方式时,此位作中断标志位,在转向中断服务程序时由硬件自动清“0”。R0和TR1定时器运行控制位TRO(TR1)=0 停止定时器/计数器工作TRO(TR1)=1 启动定时器/计数器工作(2)、工作方式控制寄存器(TMOD)TMOD寄存器是一个专用寄存器,用于设定两个定时器/计数器的工作方式。但TMOD寄存器不能位寻址,只能用字节传送指令设置其内容。各位定义如表22:表22 TMOD定义表位一组的结构使它不能位寻址, 一定义就是4位。从寄存器的位格式中可以看出,它的低半字节定义定时器/计数器0,高半字节定义定时器/计数器1。ATE门控位GATE=O 以运行控制位TR启动定时器GATE=1 以外中断请求信号(或)启动定时器定时方式或计数方式选择位 =0 定时工作方式 =1 计数工作方式 M1M0工作方式选择 M1M0=00 方式0 M1M0=01 方式1 M1M0=10 方式2 M1M0=11 方式3(3)、中断允许控制寄存器(IE)EA中断允许总控制位ET0和ET1定时/计数中断 定时器/计数器提供给用户使用的有:8位计数器TH和TL,以及有关的控制位。这些内容只能以软件方法使用。中断源和中断标志位能够产生中断申请的部件被称为中断源。8051型单片机提供了五个中断源:两个外部中断源和三个内部中断源。每一个中断源都有一个中断申请标志位,但是串行口占有两个中断标志位。一共有六个中断标志位。表23给出了它们各自的名称。表23中断的说明表3定时工作方式0(1)、电路逻辑结构 方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低五位构成。TL0的高3位弃之不用。其中OCS是Oscillator(震荡器)的缩写。当C/=0时,多路开关接通振荡脉冲的12分频输出,13位计数器以此进行计数,这就是所谓定时器工作方式。当C/=1时,多路开关接通计数引脚(T0),外部计数脉冲由引脚T0输入。当计数脉冲发生负跳变时,这就是所谓计数工作方式。 不管是哪种工作方式,当TL0的低五位计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位。 门控位GATE:当GATE=0时,由于GATE信号封锁了或门,使用TRO引脚信号无效。而这时或门输出端的高电平状态却打开了与门。因此可以由TRO(TCON)的状态来控制计数脉冲的接通与断开。这时如果TRO=1,TRO则接通模拟开关,使计数器进行加法计数,即定时器/计数器0工作。如果TRO=0,则断开模拟开关,停止计数,定时器/计数器0不能工作。因此在单片机的定时或计数应用中要注意GATE位的清“0”。 当GATE=1,同时又TRO=1时,有关电路的或门和与门全都打开,计数脉冲的接通与断开由外引脚信号控制。当该信号为高电平时计数器工作;当该信号为低电平时计数器停止工作。这种情况可用于测量外信号的脉冲宽度。(2)、定时和计数应用两个前提:溢出停止和加法计数A、定时工作方式0在方式0工作方式下,当为计数工作方式时,计数值的范围是:18192(213)当为定时工作方式时,定时时间的计算公式为:(213计数初值)晶振周期12或 (213计数初值)机器周期其时间单位与晶振周期或机器周期相同(us).B、定时工作方式1方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成。其逻辑电路和工作情况与方式0完全相同。所不同的只是组成计数器的位数。当为计数工作方式时,计数值的范围是: 165536(216)当为定时工作方式时,定时时间计算公式为:(216计数初值)晶振周期12或 (216计数初值)机器周期其时间单位与晶振周期或机器周期相同。在方式0和方式1中,每当CPU响应中断后,都应该在中断服务子程序中对T0和T1初始化,即软件重装初值n。而且必须用两条指令对TH0 和TL0(TH1和TL1)分别装载初值。还应该注意到中断服务子程序执行的时间可能部分地影响定时时间。5. 交通灯控制线路图图2-6第3章 交通灯控制系统软件设计3.1 程序设计流程图 311 程序设计总框图:如图4所示,按功能分为4个模块 1显示模块:显示模块中用到了8个数码管,该模块是负责数码管的正确显示 2控制模块:控制模块中用到了STC89C51芯片的P1口设置红、绿灯点亮的功能。交通灯的点亮采用发光二极管实现。控制模块实现的是红、绿的时序控制。接收控制结果,并启动报警。 3PC机与单片机的串行通讯模块:PC机与单片机的串行通讯是通过MAX232的电平转换和RSR232总线来实现的,它工作时,通过调用MATLAB设备控制工具箱中的serial 类及相关函数,来创建串口设备对象,得到设备的文件句柄, 从而以操作文件的方式实现对串行口的读写操作。 4模拟串行口模块:因为PC机和单片机的数据通讯,要用到单片机的串行口,而8个数码管的显示也要用到串行口,这就需要设置一个模拟串行口。而模拟串行口是通过P1.6来模拟(RXD)、P1.7来模拟(TXD)来实现控制74HC164的。 5图像处理模块:采用MATLAB函数编写,在PC机上运行,负责判断是否在规定区域内存在运动目标。串行模块控制模块模拟串口模块显示模块图像处理模块显示 拍摄报警如图3-1312 程序详细流程图:如图3-2开始设置定时器开中断赋初值F0=1R0,R1分别送A。调用计时程序并调用延时R2=011Flag0=1跳到SECR2=021Flag1=1跳到THR,F0=1R2=03Flag1=1跳到FOUR2=04标志位清0,跳到FIRR0=00R2加1,跳到DIAOY图3-2 程序详细流程图流程图说明:图中定时器在每50ms中断一下,设置为循环20次(此时为1秒),每1秒以后,R0,R1自动减1。程序中的判断在相等情况下从右边出,不相同的情况往下走。3.2延时的设定延时方法可以有两种一种是利用AT89S51内部定时器的溢出中断来确定1秒的时间,另一种是采用软件延时的方法。3.2.1 计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式: TC=MC式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213 ;在方式1时M的值为216;在方式2和3为28 ; 算法公式:T=(MTC)T计数 或TC=MT/T计数T计数是单片机时钟周期的12倍;为定时初值如单片机的主脉冲频率为12,经过分频方式TMAX213微秒8.192毫秒方式TMAX216微秒65.536毫秒显然秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题实现秒的方法:我们采用在主程序中设定一个初值为20的软件计数器和使T1定时50毫秒。这样每当T1到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减,然后判断它是否为零。为0表示秒已到可以返回到输出时间显示程序。3.2.2 相应程序代码()定时器的设置定时器需定时毫秒,故1工作于方式。初值计算: TC=MT/T计数21650ms/1us=15536=3CBOH START: MOV TMOD, #10H ;令为定时器方式 MOV TH0, #3CH ;装入定时器初值 MOV TL0, #0BOH SETB EA ; 打开总中断 SETB ET1 ;开1中断SETB ER ;启动1计数器CLR FLAG1 CLR FLAG2 CLR FLAG3 MOV R3,#20H ;软件计数器赋初值()相应中断服务子程序 ORG001B LJMPDSD ORG 0030H DSD: INC R3 MOV TH0, #3CH ;重装入定时器初值 MOV TL0, #BOH CJNE R3,#20,FHDEC R0 DEC R1MOV R3,#00HFH: RETI程序的软件延时:STC89C51的工作频率为033MHZ,我们选用的STC89C51单片机的工作频率为12MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12M)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。具体的延时程序分析:DELAY: MOV R4,#08H 延时1秒主程序 DE2: LCALL DELAY1 DJNZ R4, DE2 RETDELAY1:MOV R4,#00H ;延时125us 子程序 D1: MOV R5,#00H D2: DJNE R5,DL2 DJNE R4,D1 RET DELAY1为一个双重循坏 循环次数为256*256=65536 所以延时时间=65536*2=131072us 约为125us DELAY R4设置的初值为8 主延时程序循环8次,所以125us*8= 1秒由于单片机的运行速度很快其他的指令执行时间可以忽略不计。3.3 MATLAB的运用331 MATLAB的实验平台我们采用的是MATLAB的软件。运行在Windows XP操作平台下。开启计算机进入MATLAB的软件介面。332 MATLAB的概况 MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多. 当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类. 开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.333 MATLAB产生的历史背景 在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库库LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平. 到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORT编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACKLINP的接口程序.Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室两个英文单词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅软件使用,并作为面向大众的免费软件广为流传. 1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能. 1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发. 在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB.经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位. 在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。 MathWorks公司1993年推出了MATLAB 4.0版,1995年推出4.2C版(for win3.X)1997年推出5.0版。1999年推出5.3版。MATLAB 5.X较MATLAB 4.X无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和PDF格式,在Netscape 3.0或IE 4.0及以上版本,Acrobat Reader中可以方便地浏览。 时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论