• 3.30 MB
  • 2022-04-22 13:49:10 发布

精品基于单片机的交通灯控制系统毕业论文.doc

  • 48页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'精品基于单片机的交通灯控制系统毕业论文目录前言1一交通灯发展概述1二课题的背景及意义2三课题的任务及要实现的主要功能2第一章交通灯的总体方案设计与论证31.1单片机与外围接口部件31.2电源提供31.3倒计时显示界面41.4输入键盘41.5交通灯显示51.6系统稳定运行保障系统61.7理论分析与计算6第二章硬件的选择与简介102.1单片机的简介102.1.1单片机的三大阶段102.1.2以8位单片机为起点的发展阶段112.1.3 单片机的发展趋势122.1.4单片机的组成及特点13单片机的组成14单片机的特点142.1.5单片机的分类142.2单片机的应用152.2.1单片机的应用分类152.38051芯片简介162.3.18051内部结构162.3.28051的引脚说明:182.48255芯片简介182.4.1内部结构192.4.2引脚功能说明202.4.3芯片功能212.5其他器件222.5.1数码管与交通信号灯222.5.2看门狗MAX69223第三章控制器硬件系统设计263.1系统硬件设计方案26 3.2系统工作原理28第四章控制器的软件设计304.1交通灯燃亮时间的设定304.2软件延时324.3时间及信号灯的显示软件设计334.4程序设计34第五章调试过程38结论39致谢39参考文献40附录40附录1:实验程序原代码40附录2:实验原理图45 前言单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。一交通灯发展概述在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两色以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968-46- 年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。二课题的背景及意义随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。人们的消费水平不断的提高,私人车辆不断的增加。人多、车多道路少的道路交通状况已经很明显了。我国是13亿多人口的大国,到2004年,全国的机动车保有量超过了6000万,而全国公路通车总里程只有14。3万公里。静态比例为:人均车辆越0。5辆,而人均道路只有0。00011公里;每辆车均道路占有量约为0。002公里;且其中90%的道路属于机动车与非机动车和行人混杂。车辆的增加反映出了国家的整体进步,但是也给人民带来了其他的一些负面的影响。今后几年机动车辆数字还在急剧增加,道路超负荷承载,致使交通事故逐年增加。在一个交通十字路口,如果还是像以前一样由单纯的一种信号灯和交通警察的协调来维持交通是不够的。根据统计每年因交通事故死亡的人数占所有事故死亡总人数的80%,而且这个比例还在不断的增加。如果将每个交通十字路口的多余交通警察撤回,安排在最不利于管理和事故高发的地方,不但可以大大的降低交通事故的发生率,而且可以节省大量的人力财力。基于新型规则的可编程交通控制系统(以下简称交通控制系统)可以实现对车辆、行人的控制,使的交通便于管理。所以,采用单片机自动控制交通灯有现实的社会意义。三课题的任务及要实现的主要功能本系统由单片机系统、键盘、LED显示、交通灯显示系统组成。系统包括人行道、左传、右转、以及基本的交通灯的功能。系统除基本的交通灯功能外,还具有倒计时,时间设置,紧急情况处理、及根据具体情况手动控制等功能。在紧急情况下,设置交通灯状态为全红东西南北方向禁止通行。本设计采用一主干道(南北方向),一从干道(东西方向)的路口。白天(A挡)为60(主)-45(支)——5(闪烁)秒,夜晚(B挡)为40(主)—10(支)—5(闪烁)秒。-46- 第一章交通灯的总体方案设计与论证根据课题任务的要求,该系统具有交通灯的显示功能,倒计时功能,改变时间设定功能,所以把系统分为几个模块,包括倒计时显示器、键盘、交通信号灯、控制模块和看门狗电路。系统硬件框图如下图1.1系统硬件连接框图1.1单片机与外围接口部件该系统主控芯片单片机采用MCS-8051,它内部具有128个8位用户数据存储单元和128个专用寄存器单元,两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向,可以满足该控制系统的设计要求。锁存器选用74LS373,用于单片机输出地址信号锁存。Intel8255是一个为微机系统设计的通用并行接口电路,可适用于多种微处理器的通用8位并行输入/输出接口芯片,在该系统中用于控制芯片I/O口的扩展。1.2电源提供为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。方案三:采用220V交流电源与稳压电源块给系统提供电源,这样既可以有高的输出功率,达到题目所给的要求。综上所述,我们选择第三种方案。-46- 1.3倒计时显示界面该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案:方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。方案二:完全采用点阵式LED显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。方案三:采用数码管与点阵LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。1.4输入键盘键盘在系统作用手动设灯亮时间、紧急情况处理。按键按照结构原理可分为两类:一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。图1.2独立式按键电路按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路,这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如图1.2所示:-46- 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。图中按键输入均采用低电平有效,此外,上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可不接上拉电阻。不过,在设计键盘的时候,因为采用的是机械式按键,要考虑键盘去抖问题。按恢复键对上两者进行恢复到正常状态。键盘的按键由机械触点构成的。当开关K未被按下时,P1口输入为低电平,K闭合后,与之对应的P1口输入为高电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动,P1口输入端的波形会有尖锋脉冲出现。如图1.3所示。图1.3按键触点的机械抖动为了使CPU能正确地读出P1口的状态,对每一次按键只作一次回应,就必须考虑如何去除抖动,常用的去抖动的方法有两种:硬体方法和软体方法。单片机中常用软体法,因此,对于硬体方法这里不采用。软体方法是在单片机获得P1。0口为高的信息后,不是立即认定键盘K已被按下,而是延时10毫秒或更长一些时间后再次检测P1键盘接口,如果仍为高,说明K的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1。0为低)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,实际应用中,对按键的要求也是千差万别,要根据不同的需要来编制处理程序,以上是消除键抖动的原则。具体消抖见软件设计。键盘采用独立式键盘,单片机的I/O口数可以满足该键盘,并且可以完成题目中的所要求的设定时间、紧急情况控制功能。1.5交通灯显示采用信号灯拼成箭头状作为人行提示/左右转提示,清晰明了。VT为双向晶闸管,当门极为高电平时晶闸管导通,该支路指示灯亮;当门极为低电平时晶闸管关断,该支路指示灯灭。用220交流电驱动交通灯,这样就满足了在阳光下或者在雾天也可以看清楚交通灯信号。-46- 1.6系统稳定运行保障系统由于单片机自身的抗干扰能力比较差,尤其在一些条件比较恶劣、噪声大的场合,常会出现单片机因为受外界干扰而导致死机的现象,造成系统不能正常工作,为了使该系统在噪声大的路口可以比较稳定的运行,在系统中设计了看门狗电路,用以保证系统在受到外界干扰死机或者不能正常工作时,可以自动重置。本系统采用专用芯片MAX692作为外部看门狗电路。1.7理论分析与计算1.交通灯显示时序的理论分析与计算对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:车流量=车流/时间来表示。图2-1所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四的状态为一个周期,循环执行(见图2-2)。-46- 请注意图2-1b和图2-1d,它们在一个时间段中四个方向都可以通车,这种状态能在一定的时间内达到较大的车流量,效率特别高。依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于相向的灯的状态图是一样的,所以只需写出相邻路口的灯的逻辑表;根据图2-3可以看出,相邻路口的灯它们的状态在相位上相差180°。因此最终只需写出一组S1、S2、S3、S4的逻辑状态表。如表2-1所示。-46- 表中的“×”代表是红灯亮(也代表逻辑上的0),“√”是代表绿灯亮(也代表逻辑上的1),依上表,就可以向相应的端口送逻辑值。2.交通灯显示时间的理论分析与计算东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下所示:-46- T-S1+T-S2=T-S3T-S2=T-S4T-S1=T-S3我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参考。3、电路图及设计文件(1)灯控制电路设计由于32个LED来实现红绿灯状态,若直接接在单片机的口线,路口倒计时的显示就不能实现,所以本次设计中采用一种新型的电路如图3-1所示。图中74LS04的作用是倒相和驱动,它输出的电流大约48mA,实际测试发现足以满足要求,而且发光管也能达到足够的亮度。观察图可以看出:两组发光管(一组红、一组绿)由于反相器的作用,其逻辑状态恰恰相反。图中和电阻串联的二极管的作用是为了分压,防止因上下两组发光管分压不同导致逻辑的错误。共四组和上述相同的电路分别代表东西南北四个方向的红绿灯,使用两片74LS04作为驱动。(2)倒计时显示电路设计-46- 前面已经分析过相向的灯的状态和倒计时都是相同的,所以为了节省,采用两组四个数码管作为倒计时的显示;同时为了节省口资源,采用串口显示的方式驱动数码管。见图3-2所示。第二章硬件的选择与简介2.1单片机的简介2.1.1单片机的三大阶段 单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。 2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。 Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。 -46- 3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。 单片机作为微型计算机的一个重要分支,应用面很广,发展很快。自单片机诞生至今,已发展为上百种系列的近千个机种。2.1.2以8位单片机为起点的发展阶段 如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段: (1)第一阶段(1976-1978):单片机的控索阶段。以Intel公司的MCS – 48为代表。MCS – 48的推出是在工控领域的控索,参与这一控索的公司还有Motorola 、Zilog等,都取得了满意的效果。这就是SCM的诞生年代,“单机片”一词即由此而来。 (2)第二阶段(1978-1982)单片机的完善阶段。Intel公司在MCS – 48 基础上推出了完善的、典型的单片机系列MCS –51。它在以下几个方面奠定了典型的通用总线型单片机体系结构。 ①完善的外部总线。MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。 ②CPU外围功能单元的集中管理模式。 ③体现工控特性的位地址空间及位操作方式。 ④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。 (3)第三阶段(1982-1990):8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。Intel公司推出的MCS – 96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。随着MCS – 51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。 (4)第四阶段(1990—-46- ):微控制器的全面发展阶段。随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。2.1.3 单片机的发展趋势目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。 CMOS化 近年,由于CHMOS技术的进小,大大地促进了单片机的CMOS化。CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。这也是今后以80C51取代8051为标准MCU芯片的原因。因为单片机芯片多数是采用CMOS(金属栅氧化物)半导体工艺生产。CMOS电路的特点是低功耗、高密度、低速度、低价格。采用双极型半导体工艺的TTL电路速度快,但功耗和芯片面积较大。随着技术和工艺水平的提高,又出现了HMOS(高密度、高速度MOS)和CHMOS工艺。CHMOS和HMOS工艺的结合。目前生产的CHMOS电路已达到LSTTL的速度,传输延迟时间小于2ns,它的综合优势已在于TTL电路。因而,在单片机领域CMOS正在逐渐取代TTL电路。 低功耗化 单片机的功耗已从Ma级,甚至1uA以下;使用电压在3~6V之间,完全适应电池工作。低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。 低电压化 几乎所有的单片机都有WAIT、STOP等省电运行方式。允许使用的电压范围越来越宽,一般在3~6V范围内工作。低电压供电的单片机电源下限已可达1~2V。目前0.8V供电的单片机已经问世。 低噪声与高可靠性 为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片厂家在单片机内部电路中都采用了新的技术措施。 大容量化 以往单片机内的ROM为1KB~4KB,RAM为64~128B。但在需要复杂控制的场合,该存储容量是不够的,必须进行外接扩充。为了适应这种领域的要求,须运用新的工艺,使片内存储器大容量化。目前,单片机内ROM最大可达64KB,RAM最大为2KB。 高性能化 主要是指进一步改进CPU的性能,加快指令运算的速度和提高系统控制的可靠性。采用精简指令集(RISC)结构和流水线技术,可以大幅度提高运行速度。现指令速度最高者已达100MIPS(Million Instruction Per -46- Seconds,即兆指令每秒),并加强了位处理功能、中断和定时控制功能。这类单片机的运算速度比标准的单片机高出10倍以上。由于这类单片机有极高的指令速度,就可以用软件模拟其I/O功能,由此引入了虚拟外设的新概念。 小容量、低价格化 与上述相反,以4位、8位机为中心的小容量、低价格化也是发展动向之一。这类单片机的用途是把以往用数字逻辑集成电路组成的控制电路单片化,可广泛用于家电产品。 外围电路内装化 这也是单片机发展的主要方向。随着集成度的不断提高,有可能把众多的各种处围功能器件集成在片内。除了一般必须具有的CPU、ROM、RAM、定时器/计数器等以外,片内集成的部件还有模/数转换器、DMA控制器、声音发生器、监视定时器、液晶显示驱动器、彩色电视机和录像机用的锁相电路等。 串行扩展技术 在很长一段时间里,通用型单片机通过三总线结构扩展外围器件成为单片机应用的主流结构。随着低价位OTP(One Time Programble)及各种类型片内程序存储器的发展,加之处围接口不断进入片内,推动了单片机“单片”应用结构的发展。特别是 I C、SPI等串行总线的引入,可以使单片机的引脚设计得更少,单片机系统结构更加简化及规范化。 随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将列强。在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。80C51单片机已成为单片机发展的主流。专家认为,虽然世界上的MCU品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明,80C51可能最终形成事实上的标准MCU芯片。2.1.4单片机的组成及特点单片机是微型机的一个主要分支,在结构上的最大特点是把CPU、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台计算机。 单片机的组成-46- 单片机是通过内部总线把计算机的各主要部件接为一体,其内部总线包括地址总线、数据总线和控制总线。其中,地址总线的作用是在进行数据交换时提供地址,CPU通过它们将地址输出到存储器或I/O接口;/数据总线的作用是在CPU与存储器或I/O接口之间,或存储器与外设之间交换数据;控制总线包括CPU发出的控制信号线和外部送入CPU的应答信号线等。 单片机的特点由于单片机的这种结构形式及它所采取的半导体工艺,使其具有很多显著的特点,因而在各个领域都得到了迅猛的发展。单片机主要发如下特点: (1)有优异的性能价格比。 (2)集成度高、体积小、有很高的可靠性。单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作。 (3)控制功能强。为了满足工业控制的要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。 (4)低功耗、低电压,便于生产便携式产品。 (5)外部总线增加了I C(Inter-Integrated Circuit)及SPI(Serial Peripheral Interface)等串行总线方式,进一步缩小了体积,简化了结构。 (6)单片机的系统扩展和系统配置较典型、规范,容易构成各种规模的应用系统。 2.1.5单片机的分类 单片机作为计算机发展的一个重要领域,应用一个较科学的分类方法。根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。 1. 通用型/专用型 这是按单片机适用范围来区分的。例如,80C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。 2. 总线型/非总线型 -46- 这是按单片机是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。 3. 控制型/家电型 这是按照单片机大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。2.2单片机的应用 2.2.1单片机的应用分类由于单片机具有显著的优点,它已成为科技领域的有力工具,人类生活的得力助手。它的应用遍及各个领域,主要表现在以下几个方面:(1) 单片机在智能仪表中的应用 单片机广泛地用于各种仪器仪表,使仪器仪表智能化,并可以提高测量的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。 (2)单片机在机电一体化中的应用 机电一体化是械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,例如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。 (3) 单片机在实时控制中的应用 单片机广泛地用于各种实时控制系统中。例如,在工业测控、航空航天、尖端武器、机器人等各种实时控制系统中,都可以用单片机作为控制器。单片机的实时数据处理能力和控制功能,可使系统保持在最佳工作状态,提高系统的工作效率和产品质量。 (4) 单片机在分布式多机系统中的应用 -46- 在比较复杂的系统中,常采用分布式多机系统。多机系统一般由若干台功能各异的单片机组成,各自完成特定的任务,它们通过串行通信相互联系、协调工作。单片机在这种系统中往往作为一个终端机,安装在系统的某些节点上,对现场信息进行实时的测量和控制。单片机的高可靠性和强抗干扰能力,使它可以置于恶劣环境的前端工作。 (5) 单片机在人类生活中的应用 自从单片机诞生以后,它就步入了人类生活,如洗衣机、电冰箱、电子玩具、收录机等家用电器配上单片机后,提高了智能化程度,增加了功能,倍受人们喜爱。单片机将使人类生活更加方便、舒适、丰富多彩。 综合所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。2.38051芯片简介2.3.18051内部结构   8051是MCS-51系列单片机的典型产品,其内部结构图如右所示:由其内部结构图可知:8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口、中断系统和时钟电路等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:·中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。·程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。·数据存储器(RAM): 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。·定时/计数器(ROM):8051有两个16位的可编程定时/-46- 计数器,以实现定时或计数产生中断用于控制程序转向。·并行输入输出(I/O)口:8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。·全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。·中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。·时钟电路:8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,内部时钟方式外部时钟方式上电自动复位手动复位电路图2.3但8051单片机需外置振荡电容。8051的复位方式可以是自动复位,也可以是手动复位,见下图2.4。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。2.3.28051的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET-46- 引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。Pin30:ALE/PR/OG当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。 如果单片机是EPROM,在编程其间,PR/OG将用于输入编程脉冲。Pin29:PE/SN当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。在编程时,EA/Vpp脚还需加上21V的编程电压。2.48255芯片简介8255可编程并行接口芯片简介:8255可编程并行接口芯片有三个输入输出端口,即A口、B口和C口,对应于引脚PA7~PA0、PB7~PB0和PC7~PC0。其内部还有一个控制寄存器,即控制口。通常A口、B口作为输入输出的数据端口。C口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A/B配合使用,可以用作控制信号输出或作为状态信号输入。2.4.1内部结构8255内部结构如图所示:-46- 图2.5由上图可知:8255包括三个端口,二个工作方式控制电路,一个读写控制逻辑电路和8位总线缓冲器,现将各部件功能分别加以简单介绍:端口A、B、C控制电路分为:A组工作方式控制电路、B组方式控制电路。A组和B组具有一个控制命令寄存器,用来接收CPU的控制字(命令),根据控制字决定两端口的工作方式,也可以用控制字做到C口按位清“0”或者按位置“1”。A组控制电路用来控制A口和C口的上半部分(PC7~PC0)。B组控制电路用来控制B口和C口的下半部分(PC3~PC7)。数据总线缓冲器该缓冲器是一个三态双向8位缓冲器,用来传送数据、控制命令和外部状态信息。读写控制逻辑电路-46- 读写控制逻辑电路接收CPU发来的控制信号R/D、W/R、RESET、IO/RQ和地址信号A1、A0等,然后根据控制信号的要求,将端口数据读出后送往CPU,或者将CPU送来的数据写入端口。使用时,一般将A1、A0接入地址总线的最低2位,因而一块8255芯片占用四个设备地址,分别对应于端口A,端口B,端口C和控制寄存器。8255没有专门的状态字,而是当工作于方式1和方式2时,读取端口C的数据,即得状态字。当状态字中有效信息位不满8位时,所缺的即为对应端口C引脚的输入电平。2.4.2引脚功能说明RESET:复位输入线,当该输入端外接高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。:片选信号线,当这个输入引脚为低电平时,表示芯片被选中允许8255与CPU进行通信。:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。:写入信号线,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255。D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。PA0~PA7:端口A输入输出线,有8位数据输出锁存/缓冲功能和8位数据输入锁存功能。PB0~PB7:端口B输入输出线,有8位的I/O锁存功能和8位的输入输出缓冲功能。PC0~PC7:端口C输入输出线,有8位的数据输出锁存器/缓冲器和8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。A1、A0:端口地址总线,8255中有端口A、B、C和一个内部控制寄存器,共4个端口,由A0、A1输入地址信号来寻址。-46- 2.4.3芯片功能8255可编程并行接口芯片方式控制字格式说明:8255有两种控制命令字;一个是方式选择控制字;另一个是C口按位置位/复位控制字。其中C口按位置位/复位控制字方式使用较为繁难,说明也较冗长,故在此不作叙述,需要时用户可自行查找有关资料。方式控制字说明:D7:设定工作方式标志,1有效。D6、D5:A口方式选择:00—方式001—方式11×—方式2D4:A口功能(1=输入,0=输出)D3:C口高4位功能(1=输入,0=输出)D2:B口方式选择(0=方式0,1=方式1)D1:B口功能(1=输入,0=输出)D0:C口低4位功能(1=输入,0=输出)8255可编程并行接口芯片工作方式说明:方式0:基本输入/输出方式。适用于三个端口中的任何一个。每一个端口都可以用作输入或输出。输出可被锁存,输入不能锁存。方式1:选通输入/输出方式。这时A口或B口的8位外设线用作输入或输出,C口的4条线中三条用作数据传输的联络信号和中断请求信号。方式2:双向总线方式。只有A口具备双向总线方式,8位外设线用作输入或输出,此时C口的5条线用作通信联络信号和中断请求信号。在三种工作方式中,在方式0时,端口C和端口A、B一样工作于基本的输入/输出方式,把数据送给外设,或从外设接收数据。当工作于方式1或方式2时,端口C就产生或接收与外设进行联络的信号,读出端口C的内容就能测试或核对各种外设的状态,并由此改变程序的进程。但是,没有从端口C读取状态信息的专用指令,而要执行端口C的读出操作来读取这些状态信息,端口C并不是所有的位都用于传送控制或状态信息,剩余的各位可以由控制字设定为输入或输出。当设定为输入时,则在对端口C读出时,可访问所有的输入线;当设定为输出时,则端口C的高4-46- 位必须用置位/复位功能单独访问,而端口C的低4位则可用置位/复位功能访问,也可通过写入端口C的操作进行访问。当8255以方式1或方式2工作时,提供的控制信号可用作向CPU的中断请求输入。由端口C产生的中断请求信号可通过将有关的INTE触发器置位/复位而加以允许/禁止,INTE触发器的状态可通过C口的置位/复位功能来加以设定。因此,C口产生的中断请求是软件可屏蔽的,由于可允许/禁止某个I/O设备中断CPU,从而不影响中断结构中任何其它设备。2.5其他器件2.5.1数码管与交通信号灯显示器是最常用的输出设备。特别是发光二极管(LED)和液晶显示器(LCD),由于结构简单、价格便宜、接口容易,得到广泛的应用,尤其在单片机系统中大量使用。现在简单介绍发光二极管。发光显示器是单片机应用产品中常用的廉价输出设备。它是由若干个发光二极管组成的,当发光二极管导通时,相应的一个点或一个比划发光,控制不同组合的二极管导通,就能显示出各种字符。点亮显示器有静态和动态两种方法。所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定的导通或截止。例如,七段显示器的a、b、c、d、e、f导通,g截止,则显示0。这种显示器方式,每一位都需要一个8位输出口控制,所以占用硬件多,一般用于显示器位数较小(很少)的场合。当位数较多时,用静态显示所需的I/O口太多,一般采用动态显示方法。所谓动态显示就是一位一位的轮流点亮各位显示器(扫描),对于每一位显示器来说,每个一段时间点亮一次。显示器的点亮既跟点亮时的导通电流有关,也跟点亮时间和间隔时间的比例有关。调整电流和时间的参数,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极电位只需一个I/O口(称为扫描口),控制各位显示器所显示的字形也需一个8位口。-46- 图2.6晶闸管与数码管示意图要使行人能看见信号灯的情况,必须把8255输出的信号进行放大VT为双向晶闸管,当门极为高电平时晶闸管导通,该支路指示灯亮;当门极为低电平时晶闸管关断,该支路指示灯灭。2.5.2看门狗MAX692由于单片机自身的抗干扰能力比较差,尤其在一些条件比较恶劣、噪声大的场合,常会出现单片机因为受外界干扰而导致死机的现象,造成系统不能正常工作。设置看门狗是为了防止单片机死机、提高单片机系统抗干扰性的一种重要途径。一个完整的单片机应用系统应该是一个软、硬件的结合体,在系统正常工作时,会受到各种外界干扰因素的影响。这种外界干扰轻者导致系统内部数据出错,重者将严重影响程序的运行。因此单片机应用系统的开发一定要考虑系统可靠性的设计,以满足系统在现场苛刻环境下的正常运行,而“看门狗”则是系统可靠性设计的重要一环。在一个单片机应用系统中,所谓的“看门狗”是指在系统设计中通过软件或硬件方式在一定的周期内监控单片机或其他CPU的运行情况。如果在规定的时间内没有收到来自单片机或其他CPU的触发信号,则系统会强制复位,以保证系统在受到干扰时仍能够维持正常的工作状态。在单片机系统中,看门狗的设计一般采用硬件和软件结合两种方式。(1)软件看门狗软件看门狗是利用单片机片内闲置的定时器/计数器单元作为看门狗,在单片机程序中适当的插入监控指令,当程序出现异常或进入死循环时,利用软件将程序计数器PC赋予初始值,强制性的使程序重新开始运行。使用软件看门狗的具体实现方法如下:首先在初始化程序中设置好定时器/计数器的方式控制寄存器(TMOD) -46- 和定时时间的初值,并开中断。根据定时器的定时时间,在主程序中按一定的间隔插入复位定时器的指令,既插入监控指令,两条指令间的时间间隔应该小于定时时间,否则看门狗将发生错误动作。在定时器的中断服务程序中设置一条无条件转移指令,将程序计数器PC转移到初始化程序的入口。软件看门狗的最大特点是无须外加硬件电路,经济性好。当然,如果片内的定时器/计数器被占用,就需要寻求其他的设计方式了。(2)硬件看门狗专用硬件看门狗是指一些集成化的或集成在单片机内的专用看门狗电路,它实际上是一个特殊的定时器,当定时时间到时,发出溢出脉冲。从实现角度上看,该方式是一种软件与片外专用电路相结合的技术,硬件电路连接好后,在程序中适当地插入一些看门狗复位的指令,保证程序正常运行时看门狗不溢出。而当程序运行异常时,看门狗超时发出溢出脉冲,通过单片机的RESET引脚使单片机复位。这种方式中,看门狗能否可靠有效地工作,与硬件组成及软件的控制策略都有密切的关系。目前常用的集成看门狗电路很多,如MAX705~708、MAX813L、X5043/5045等。图2.7看门狗电路可以分为内看门狗和外看门狗。看门狗电路是指看门狗的硬件电路包含在单片机内部,如Microchip的16C5x系列,MOTOROLA的68C05系列,51内核中比较典型的有Atmel公司的AT89C55WD、AT89S8252,Winbond公司的W77E58,SST公司的SST89C58以及-46- Philips公司87系列的多种型号的单片机等。对于没有看门狗定时器的单片机或是认为内部看门狗不可靠时,可以采用外部看门狗定时器。外部看门狗电路既可以用专用看门狗芯片,也可由普通芯片实现。MAX692与单片机接口结构,如图2.7所示。MAX692是微系统监控电路芯片,具有后备电池切换、掉电判别、看门狗监控等功能。其引脚说明如下:VOUT:电源输出引脚。VCC:接电源引脚,电源供电3.0-5.5V。GND:接地。PFI:电池故障输入。/PFO:电池故障输出。WDI:监视器输入引脚。/RESET:复位输出引脚,低电平有效。VBATT:后备电池输入端。在MAX692电路原理图中WDI是看门狗监测输入脚,接到CPU的一个专用I/O口或一个总线上。/RESET是复位信号输出脚,接到CPU的复位输入脚。MAX692的WDI定时周期是1.6s,复位脉冲宽度是200ms。如果WDI保持高或低超过看门狗定时周期(1.6s),/RESET端将发生200ms的负脉冲使CPU复位。第三章控制器硬件系统设计3.1系统硬件设计方案东西方向或者南北方向的交通灯在通常工作条件中有四种状态:前行灯+人行道(状态1)、前行灯+右转(状态2)、左转(状态3)、红灯(状态4)这四种状态(在每个灯变化时还有闪烁状态,这在软件中实现)。状态说明:(状态1)前行灯+人行道:车辆前行;行人可通过人行道;(状态2)前行灯+右转:车辆可向前、向右行驶;(状态3)红灯+左转:车辆向左行驶;但不能前行;(状态4)红灯:禁止通行与转弯;图3.1十字路口交通示意图-46- 图3.2交通灯控制线路图-46- 上面所述4种状态是南北或者东西方向的一条道上的四种状态,根据交通规则与十字路口的实际情况,可以把南北和东西路口的总控制系统的状态分为6种:S1:南北(状态1)+东西(状态4)S2:南北(状态2)+东西(状态4)S3:南北(状态3)+东西(状态4)S4:南北(状态4)+东西(状态1)S5:南北(状态4)+东西(状态2)S6:南北(状态4)+东西(状态3)本系统还设计了应急况处理;在紧急情况下,设置交通灯状态为:S7:全红:东南西北所有方向禁止通行。S8:南北红、东西绿:南北方向禁行;东西方向通行。S9:东西红、南北绿:东西方向禁行;南北方向通行。所以按照上面所分析的交通规则方案,可以得出每个方向的交通灯数目为4个,分别为:直行箭头灯、左转灯、右转灯、人行道灯。分别用字母Z、L、R、M表示。根据分析的九种状态,可以分析出控制系统的九种工作状态的真值表。如表3.1:表3.1状态真值表方向状态东西方向南北方向Z、L、R、MZ、L、R、MS110100000S210010000S301000000S400001010S500001001S600000100S700000000S810000000-46- S900001000各个交通状态的时间设定:假设路口两个交叉道路车流量相当,可以把正常通行下的六个状态时间设定为:S130秒、S230秒、S320秒、S423秒、S522秒、S620秒。时间设定如果需要改变,可以通过键盘输入设定。3.2系统工作原理(1)开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统。键盘编号为K1,K2,K3,K4,K5分别连接单片机的P1。0,P1。1,P1。2,P1。3,P1。4主程序中放了一个按键的判断指令,当有键按下的时候,程序就跳转到按键子程序处理,当检测到K2键按下的时候就自动返回到主程序。按紧急预案键K5后,先出现全红状态,再按一下该键,又出现一方通行状态,再按,则另一方通行。如此循环。-46- 图3.3系统电路简图按手动控制键后,进行手动控制,每按一次,灯会转到下一个状态。按恢复键对上两者进行恢复到正常状态。键盘的按键由机械触点构成的。当开关K未被按下时,P1口输入为低电平,K闭合后,与之对应的P1口输入为高电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动,P1口输入端的波形会有尖锋脉冲出现。按键分别接到单片机的P1口对于这种键各程序可以采用不断查询的方法,功能就是:检测是否有键闭合,如有键闭合,则去除键抖动,判断键号幷转入相应的键处理,具体程序设计程序部分,在此不在累述。-46- (2)由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PC口显示左转、直行、右转、人行道灯的燃亮情况;由8255的PA、PB口显示每个灯的燃亮时间。(3)8051通过设置各个信号等的燃亮时间、通过8051设置,状态S1、状态S2、状态S3、状态S4、状态S5、状态S6时间依次为30秒、30秒、20秒、30秒、30秒、20秒循环由8051的P0口向8255的数据口输出。(4)通过8051单片机的P3。0位来控制系统是工作或设置初值,当该位电平为0就对系统进行初始化,为1系统就开始工作。(5)8255PA口用于输出时间的个位,PB口用于输出时间的十位,由7446A驱动芯片驱动,而PC口用于输出各个灯的情况,它的末段连接双向晶闸管采用220V交流电压驱动。(6)在交通控制程序中加入看门狗指令,当系统出现异常看门狗将发出溢出中断。通过专用端口输入到MAX692看门狗芯片的WDI引脚引起RESET复位信号使系统复位。交通灯一个循环周期的时间根据初始设定的值得出为160秒,所以可以把看门狗MAX592的溢出时间设为163-165秒,在交通灯一个循环后,单片机发出一个高电平,在看门狗作用前使看门狗复位。但当在163-165秒后,单片机不给这样一个复位电平,看门狗就通过复位输出引脚,发出复位信号,使单片机复位,重新工作。这样,只要单片机只要程序跑飞或者死机,看门狗就可以利用溢出中断对单片机重新起动。第四章控制器的软件设计4.1交通灯燃亮时间的设定延时方法可以有两种是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软件延时的方法。4.1.1计数器初值计算定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:TC=M-C-46- 式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M的值为216。4.1.2计算公式T=(M-TC)T计数或TC=M-T/T计数T计数是单片机时钟周期TCLK的12倍;TC为定时初值。如单片机的主脉冲频率为TCLK12MHZ ,经过12分频。方式0 TMAX=213 *1微秒=8.193毫秒方式1 TMAX=216 *1微秒=65.536毫秒显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题。4.1.3设置1秒的方法我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。4.1.4相应程序代码⑴主程序    定时器需定时50,故T0工作于方式1。 初值:    TC=M-T/T计数 =216 -50ms/1us=15536=3CBOHORG1000HSTART:MOVTMOD,#01H;令T0为定时器方式1MOVTH0,#3CH;装入定时器初值MOVTL0,#BOH MOVIE,  #82H;开T0中断SEBTTRO     ;启动T0计数器MOVRO,  #14H  ;软件计数器赋初值LOOP:SJMP$      ;等待中断⑵中断服务子程序     ORG  00BH-46-      AJAMP  BRT0     ORG 00BH BRT0:DJNZR0,NEXT      AJMPTIME;跳转时间及信号灯显示子程序DJNZ:MOVR0,#14H ;恢复R0值  MOVTH0,#3CH;重装入定时器初值MOVTL0,#BOH MOVIE,  #82H     RET1END4.2软件延时MCS-51的工作频率为2-12MHZ,我们选用的8051单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。具体的延时程序分析:DELAY:MOVR4,#08H;延时1秒子程序DE2:LCALLDELAY1DJNZR4,DE2RETDELAY1:MOVR6,#0;延时125ms子程序MOVR5,#0DE1:DJNZR5,$DJNZR6,DE1RETMOVRN,#DATA字节数数为2,器周期数为1,所以此指令的执行时间为2ms。DELAY1为一个双重循坏循环次数为256*256=65536所以延时时间=65536*2=131072us约为125us。DELAYR4设置的初值为8主延时程序循环8次,所以125us*8=1-46- 秒,由于单片机的运行速度很快其他的指令执行时间可以忽略不计。4.3时间及信号灯的显示软件设计4.3.18051并行口的扩展8051虽然有4个8位I/O端口,但真正能提供借用的只有P1口,因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,8051通常需要扩展。由于我们用外输出时间时,时间的个位、十位、信号灯的显示都要用到一个I/O端口,显然8051的端口是不够,需要扩展。扩展的方法有两种:(1)借用外部RAM地址来扩展I/O端口;(2)采用I/O接口新片来扩充。我们用8255并行接口信片来扩展I/O端口。4.3.2显示程序原理:当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将依次显示信号灯时间,同时一直显示信号灯的颜色,这时在返回定时子程序定时一秒,在显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器赋初值,重新进入循环。4.3.38255输出信号与信号灯的连接LED灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如SP,g,f,e,d,c,b,a管角上加上7FH所以SP上为0伏,不亮其余为TTL高电平,全亮则显示为8采用共阴级连接:其中PA0PB0-a,PA1PB1-b,PA2PB2-c,PA3PB3-d,PA4PB4-e,PA5PB5-f,PA6PB6-gPA7PB7-SP接地显示数值dopgfedcba驱动代码(16进制)0001111113FH-46- 10000011006H2010110115BH3010011114FH40110011066H5011011006DH6011111007DH70000011107H8011111117FH表4.1驱动代码表4.3.48051与8255的连接用8051的P0口的p0.7连接8255的片选信号CS,我们用8051的地址采用全译码方式,当p0.7=0时片选有效,其他无效,P0.1用于选择8255端口。P0.7p0.6p0.5p0.4p0.3p0.2P0.1P0.0A7A6A5A4A3A2A1A01XXXXX0000H为8255的PA口1XXXXX0101H为8255的PB口1XXXXX1002H为8255的PC口1XXXXX1103H为8255的控制口由于8051是分时对8255和储存器进行访问,所以8051的P0口不会发生冲突。4.4程序设计4.4.1程序流程设计-46- 开始初始化等待键盘事件键盘事件处理显示程序处理图4.2流程示意图图4.3键盘事件流程图-46- 图4.4程序流程图主程序中放了一个按键的判断指令,当有键按下的时候,程序就跳转到按键子程序处理,当检测到K2键按下的时候就自动返回到主程序。按紧急预案键K5后,先出现全红状态,再按一下该键,又出现一方通行状态,再按,则另一方通行。如此循环。按手动控制键后,进行手动控制,每按一次,灯会转到下一个状态。按恢复键对上两者进行恢复到正常状态。4.4.2系统编程信息系统内存分配和I/0接口使用:1程序空间(64k)表4.5  地址使用情况芯片0000-3FFFH用户程序区U23RAM4000-DFFFH用户程序区E000-FFFFH系统保留ROMI/O接口使用-46- 用户程序区8255的端口地址如下表:表4.6信号线寄存器编址IOY3A口0C60HB口0C61HC口0C62H控制寄存器0C63H此I/O接口的地址不占51外部数据空间地址,所以使用时,需要通过特殊的调用功能程序来操纵这些接口电路,即:写数据到I/0口子程序调用为LCALL0F4E0H。从某I/0端口读出数据为LCALL0F4E3H例如:将累加器A的数据12写入地址#0C63的I/O端口:MOVDPTR,#0C63HMOVA,#12HLCALL0F4E3H将地址#0C63的I/O端口状态读出到累加器A::MOVDPTR,#0C63HLCALL0F4E3H4.4.3夜间模式系统在主程序中已经完成中断初始化,在正常模式下,其随时可通过中断0进入夜间模式,不受当时通行方向的影响。夜间模式中,交通灯南北向每40秒改变一次通行方向,东西向每10秒改变一次通行方向,且都闪烁5秒,使得南北和东西交替通行。其流程图如图7。其程序为:YEJIAN:MOVR0,#00H;夜间模式MOVP2,R0;灯全灭SETBP2.7;南北绿灯亮SETBP2.1;东西红灯亮ACALLDISPLAY1;显示倒计时ACALLFLASHN;南北方向绿灯闪烁-46- CLRP2.7;南北绿灯灭SETBP2.6;南北黄灯亮ACALLDELAY2;短延时2CLRP2.6;南北黄灯灭CLRP2.1;东西红灯灭SETBP2.3;东西绿灯亮SETBP2.5;南北红灯亮ACALLDISPLAY1;显示倒计时ACALLFLASHS;东西方向绿灯闪烁CLRP2.3;东西绿灯灭SETBP2.2;东西黄灯亮ACALLDELAY2;短延时2CLRP2.2;东西黄灯灭LJMPYEJIAN开始外部中断0初始化东西10秒倒计时显示南北40秒倒计时显示进入夜间工作状态第五章调试过程-46- 第一次硬件检测时,单片机8051不工作,然后检查发现电源电路和延时电路未接正确,从新接好再次运行时发光二极管不亮,七段数码管不工作,经检查发现发光二极管接错,数码管已损坏,把二极管调换并且更换新的数码管,再次检测时系统正常工作。结论本系统就是充分利用了8051和8255芯片的I/O引角。系统统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;为了系统稳定可靠采用了MAX629“看门狗”芯片,避免了系统因为死机而停止工作的情况发生;显示时间直接通过8255的PA、PB输出;交通灯信号通过平常PC口输出;交通灯的点亮采用VT双向晶闸管来控制,直接采用220V交流电源驱动,系统设计简便、实用性强、操作简单、程序设计简便。系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩充原系统来实现通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。致谢我在指导老师张琳老师的精心指导和严格要求下,经过自己的努力,终于完成了这次毕业设计。同时获得了丰富的理论知识,极大地提高了实践能力,并对当前电子领域的研究状况和发展方向有了一定的了解,尤其在单片机及其接口技术方面,这对我今后进一步学习本专业的知识有极大的帮助。通过大量阅读资料,我拓宽了自己的知识面,并懂得将所学知识融会贯通到实践中去。在获得知识的同时,我也认识到了自己还需要学习的东西很多,理论需要很好的结合实践,全面分析并解决问题的能力有待提高。另外,此次毕业设计还获得了各位领导和老师的大力支持。在此,我衷心感谢各位老师的指导和支持。在未来的工作和学习中,我将以更好的成绩来回报各位领导和-46- 老师,同时,在毕业设计过程中,同宿舍的舍友和同组的同学给了我很多的帮助,我非常的感谢他们给我的帮助。谢谢你们!参考文献[1]房小翠王金凤单片机实用系统设计技术。国防工业出版社,1999[2]付家才单片机控制工程实践技术。北京:化学工业出版社,2004.5[3]潘新民微型计算机控制技术。北京:人民邮电出版社,1999.9[4]余锡存曹国华单片机原理及接口技术。陕西:西安电子科技大学出版社,[5]雷丽文等微机原理与接口技术。北京:电子工业出版社,1997.2[6]蒋万君在论循环时序电路的简便设计。机电一体化,2005第5期[7]胡汉才单片机原理及其接口技术。北京:清华大学出版,1996[8]黄义源机械设备电气与数字控制。中央广播电视大学出版社,1993[9]蔡美琴张为民等MCS-51系列单片机系统及应用。高等教育出版社,1992[11]李建中单片机原理及应用。西安:西安电子科技大学出版社,2002[12]康华光电子技术基础(第四版)。北京:高等教育出版社,2000.6附录附录1:实验程序原代码方法1。利用P1口输入开关量ORG0000HLJMPMAINORG0100HMAIN:MOVDPTR,#0C63HMOVA,#82HLCALL0F4E0HAGAIN:MOVP1,#80HMOVA,P1-46- JBACC。7,NEXT0AGAIN1:MOVP1,#40HMOVA,P1JBACC。6,REDMOVP1,#0FHMOVA,P1ANLA,#0FHMOVR3,AAJMPAGAIN1RED:MOVP1,#0FHMOVA,P1ANLA,#0FHMOVR2,AAJMPAGAINNEXT0:MOVR0,#03HNEXT1:MOVDPTR,#TABMOVA,R0MOVCA,@A+DPTRMOVDPTR,#0C60HLCALL0F4E0HMOVDPTR,#0C62HMOVA,#00HLCALL0F4E0HACALLDELAYDJNZR0,NEXT1MOVA,R3MOVR0,ANEXT2:MOVDPTR,#TABMOVA,R0MOVCA,@A+DPTR-46- MOVDPTR,#0C60HLCALL0F4E0HMOVDPTR,#0C62HMOVA,#02HLCALL0F4E0HACALLDELAYDJNZR0,NEXT2MOVA,R2MOVR0,ANEXT3:MOVDPTR,#TABMOVA,R0MOVCA,@A+DPTRMOVDPTR,#0C60HLCALL0F4E0HMOVDPTR,#0C62HMOVA,#04HLCALL0F4E0HACALLDELAYDJNZR0,NEXT3AJMPNEXT0DELAY:MOVR4,#08HDE2:LCALLDELAY1DJNZR4,DE2RETDELAY1:MOVR6,#0MOVR5,#0DE1:DJNZR5,$DJNZR6,DE1RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,-46- 77H,7CH,39H,5EH,79H,71HEND方法2:从8255的PB口输入开关量ORG0000HLJMPMAINORG0100HMAIN:MOVDPTR,#0C63HMOVA,#82HLCALL0F4E0HAGAIN:MOVDPTR,#0C61HLCALL0F4E3HMOVC,ACC。7JCNEXT0AGAIN1:MOVDPTR,#0C61HLCALL0F4E3HMOVC,ACC。6JCREDMOVDPTR,#0C61HLCALL0F4E3HANLA,#0FHMOVR3,AAJMPAGAIN1RED:MOVDPTR,#0C61HLCALL0F4E3HANLA,#0FHMOVR2,AAJMPAGAINNEXT0:MOVR0,#03HNEXT1:MOVDPTR,#TABMOVA,R0-46- MOVCA,@A+DPTRMOVDPTR,#0C60HLCALL0F4E0HMOVDPTR,#0C62HMOVA,#00HLCALL0F4E0HACALLDELAYDJNZR0,NEXT1MOVA,R2MOVR0,ANEXT2:MOVDPTR,#TABMOVA,R0MOVCA,@A+DPTRMOVDPTR,#0C60HLCALL0F4E0HMOVDPTR,#0C62HMOVA,#02HLCALL0F4E0HACALLDELAYDJNZR0,NEXT2MOVA,R3MOVR0,ANEXT3:MOVDPTR,#TABMOVA,R0MOVCA,@A+DPTRMOVDPTR,#0C60HLCALL0F4E0HMOVDPTR,#0C62HMOVA,#04HLCALL0F4E0H-46- ACALLDELAYDJNZR0,NEXT3AJMPNEXT0DELAY:MOVR4,#08HDE2:LCALLDELAY1DJNZR4,DE2RETDELAY1:MOVR6,#0MOVR5,#0DE1:DJNZR5,$DJNZR6,DE1RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HEND附录2:实验原理图-46- -46-'