毕业论文《交通信号控制系统设计》

发布时间:2012-04-16 20:36:21

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
交通信号灯控制方式很多。本系统采用单片机AT89S52为中心器件来设计交通灯控制器,实现了通过AT89S52芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯点亮警示(交通灯信号通过P1口输出,显示时间直接通过AT89S52P0口输出至双位数码管);时间倒计时可通过双位数码管显示。本系统实用性强、操作简单、扩展功能强。

本文设计了一种基于MCS-51单片机的交通灯控制系统。系统主要包括硬件电路和软件程序。在比较论证的基础上,设计了满足设计要求的电路,并编写相应的软件程序。系统构造简单,通过定时系统可以实现对时间的设定,由状态控制系统来设定交通灯的状态。在此基础上,使用LED数码管对计数系统进行译码显示,使每一通道上不仅能够显示交通灯的状态,还能提醒行人剩余时间,给行人和车辆的通行提供了很大的方便。应用单片机AT89S52来完成整个系统的控制,采用C语言设计软件。系统具有较强功能,体积小,成本低,有一定的实际应用价值。

关键词:单片机 交通灯 调试

ABSTRACT

With the rapid development of science and technology in recent years, SCM applications are deepening at the same time promote the growing of traditional control detection technology updates. In real-time detection and automatic control of the microcomputer application system, the microcontroller is often used as a core component, only the microcontroller is not enough knowledge, but also based on specific hardware structure of hardware and software combination to be improved.

Traffic signal control many ways. The system uses MSC-51 Series Microcontroller AT89C51-centric devices to design traffic signal controllers and achieved through the P1 port AT89C51 chip set of red, green, gave the time of the function; traffic light cycle of light, the countdown 5 seconds left when the yellow lamp lit warning (traffic light signals through the P1 port output, display time directly through the P0 port output AT89C51 to double-digit nixie tube); Time countdown can be a double-digit LED display. The system practical, simple, extending strong function.

In this paper it has designed one kind of traffic light control system based on the MCS-51 monolithic integrated circuit. The system mainly includes the hardware circuit and the software routine. On the basis of comparison,we designed a circuit according to the design requirement,and compiled the corresponding software routine.The system structure is simple, it may realize the time hypothesis by the timing system, establishe traffic light's condition by the state control system. Based on this, we uses the LED digital tube to decode the counting system, so that each channel can not only show the status of traffic lights, but also to remind pedestrians time remaining, and provide a great convenience to vehicles and pedestrians. Applying the Monolithic integrated circuit AT89C51 to accomplish the control of the entire systematic , using C language design software. The system has the strong function, the volume is small, the cost is low, has certain practical application value.

Key words: SCM Traffic light Debug

第一章 绪论

1.1 选题目的

本课题是设计一个交通信号灯控制电路,通过本设计了解掌握交通信号控制电路的工作原理,进而研究电子产品设计的技术方法。

通过对交通信号灯控制电路的设计、安装与调试,熟练掌握各种电子测量仪器、仪表的正确使用方法,熟悉掌握数字逻辑电路原理及各类型数字单元的工作原理、电路形式、调试方法、整机电路统调技巧等方面知识;同时,通过对系统设计结果的理论分析,加强理论联系实际的工作能力,对加强数字逻辑电路原理与技术方法的掌握,得到全面的、系统的训练,为今后从事本专业工作奠定坚实的技术基础。

1.2 选题背景及意义

在现代城市中,人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。有了交通灯人们的安全出行有了很大的保障。

自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化。尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可缺少的工具和手段,这些为交通灯控制电路的设计提供了一定的技术基础。

1.3 交通信号灯

道路交通信号灯是交通安全产品中的一个类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。

交通信号灯的种类有:机动车道信号灯,人行横道信号灯,非机动车道信号灯,方向指示信号灯,移动式交通信号灯,太阳能闪光警告信号灯,收费站天棚信号灯

LED(发光二极管)是近年来开发生产的一种新型光源,具有耗电小(电流只有1020mA)、亮度高(光强可达上万个mcd)、体积小(直径最小可达3mm)、重量轻(一颗发光二极管仅重零点几克)、寿命长(平均寿命10万小时)等优点。现已逐步代替白炽灯、低压卤钨灯制作道路交通信号灯。

1.4 交通灯的发展史

当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。


第二章 系统总体设计

当前,大量的信号灯电路正向着数字化、小功率、多样化、方便人、车、路三者关系的协调,多值化方向发展随着社会经济的发展,城市交通问题越来越引起人们的关注。这些城市纷纷修建城市高速道路,在高速道路建设完成初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。

城市交通控制系统是用于城市交通数据检测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。

2.1 系统总体设计方案

采用单片机控制交通信号,不仅可以简化电路结构、降低成本、减小体积。城市交叉路口,每边(共4边)都设置红、绿、黄色信号灯,红灯亮表示禁止通行;绿灯亮表示可以通过;在绿灯亮转变为红灯亮之前,先要求黄灯亮几秒钟,以便让交叉路口停车线以外的车辆停止运行,而交叉路口停车线以内的车辆快速通过交叉路口。每一边的红、绿、黄色信号灯亮的顺序是红绿绿……南北灯亮时,对应东西的绿灯亮、黄灯亮;南北向绿灯亮、黄灯亮时,对应东西向的红灯亮。这样就要求红灯亮的时间,应等于绿灯亮与黄灯亮的时间之和。红、绿、黄色信号灯亮的时间,要求采用倒计时的方式,用十进制数字显示出来。

当使两条路线交替地成为放行线和禁行线时,就可以实现定时交通控制。

在十字路口,其交通控制的原则是:东西,南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。在交通灯系统的管理中,用发光二极管模拟交通信号灯,用逻辑电平开关模拟控制开关。

实现本设计最关键的是设计出一个30秒与25秒的倒计时过程。可以有两种方案参考:

方案一:采用延时函数;

方案二:采用中断系统计数;

分析:延时函数不够中断计数精确,并且采用延时函数不但程序够繁,而且很难实现同时控制显示,交通灯和流水灯模块,因此可以使用中断系统进行计时,这样不但可以计数精确,而且程序相对比较简单。

设计情况如下:

设计系统是以AT89S52为主要控制核心控制交通灯的红绿转换和各个灯所点亮时间的倒计时实现。

实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED,用软件实现。

⑶用数码管显示倒计时。利用动态显示,串行并出实现。

2.2 系统设计框图及主要思想

2.2.1 系统硬件设计框

2.2.1 系统硬件设计框图

2.2.2 系统设计思想

1通过AT89S52单片机P1设定交通灯初始时间输入到红绿灯处,显示红绿灯的转换。

2)由AT89S52单片机的定时器每秒钟通过P0口送信息,数码管显示每个灯的点亮时间。

3AT89S52通过设置各个信号灯绿、红、黄的时间分别为25秒、30秒、5秒循环由AT89S52 P0输出。

4)通过AT89S52单片机的P3.0位来控制系统是工作或设置初值,当按下复位按钮时就对系统进行复位设置。

5)红绿黄灯按照单片机内程序所设定的时间进行转换,并循环。



第三章 硬件电路设计

硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现交通灯基本功能以外,主要还要考虑如下几个因素:①系统稳定度;②器件的通用性或易选购性;③ 软件编程的易实现性④系统其它功能及性能指标因此硬件设计至关重要。现从各功能模块的实现逐个进行分析探讨

3.1 总体设计及功能描述

本设计以单片机AT89S52为控制核心,共分以下几个部分单片机控制系统、信号灯控制电路和数码管控制电路等

单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机时钟电路复位电路等组成。

信号灯控制电路指示采用绿LED发光管,用三种颜色指示车辆放行、暂停、禁止,形象直观。

统采用双位数码管倒计时计数功能,最大显示数字99

3.2 单片机简介

3.2.1 单片机概述

单片机是一种集成电路芯片。它采用超大规模技术将具有数据处理能力的微处理器(CPU)、存储器(含程序存储器ROM和数据存储器RAM)、输入、输出接口电路(I/O接口)集成在同一块芯片上,构成一个即小巧又很完善的计算机硬件系统,在单片机程序的控制下能准确、迅速、高效地完成程序设计者事先规定的任务。所以说,一片单片机芯片就具有了组成计算机的全部功能。

不同的单片机有着不同的硬件特征和软件特征,即它们的技术特征均不尽相同,硬件特征取决于单片机芯片的内部结构,用户要使用某种单片机,必须了解该型产品是否满足需要的功能和应用系统所要求的特性指标。这里的技术特征包括功能特性、控制特性和电气特性等等,这些信息需要从生产厂商的技术手册中得到。软件特征是指指令系统特性和开发支持环境,指令特性即我们熟悉的单片机的寻址方式,数据处理和逻辑处理方式,输入输出特性及对电源的要求等等。开发支持的环境包括指令的兼容及可移植性,支持软件(包含可支持开发应用程序的软件资源)及硬件资源。要利用某型号单片机开发自己的应用系统,掌握其结构特征和技术特征是必须的。

3.2.2 单片机发展历史

单片机诞生于20世纪70年代末,经历了SCMMCUSoC三大阶段。 

1.SCM即单片微型计算机阶段。主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。

2.MCU即微控制器阶段。主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。

3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统

3.2.3 单片机发展趋势

单片机从8位、16位到32,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。

纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:

<1>低耗能CMOS

80C51采用了HMOS(即高密度金属氧化物半导体工艺)CHMOS(互补高密度金属氧化物半导体工艺)CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。

<2>微型单片化

现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。

<3>主流与多品种共存

现在80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。Microchip公司的PIC精简指令集(RISC)也有着强劲的发展势头,中国台湾的HOLTEK公司近年的单片机产量与日俱增,占据一定的市场份额。此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。

3.2.4 单片机的特点

单片机则是从工业测控对象、环境、接口特点出发,向着增强控制功能、提高工业环境下的可靠性、灵活方便的构成应用计算机系统的界面接口的方向发展。因此,单片机有着自已的特点,主要是:
<1>品种多样,型号繁多。品种型号逐年扩充使系统开发者有很大的选择自由。CPU48163264位,有些还采用RISC技术;

<2>提高性能,扩大容量。集成度已达200万个晶体管以上。总线工作速度已达数十微秒。工作频率达到30MHz甚至40MHz。指令执行周期减到数十微秒。存储器容量RAM发展到1K2KROM发展到32K64K
<3>增加控制功能,向外部接口延伸。把原属外围芯片的功能集成到本芯片内。现今的单片机已发展到在一块含有CPU的芯片上,除嵌入RAMROM存储器和IO接口外,还有定时器中断串行口等,构成一个完整的功能强的计算机应用系统;
<4>低功耗。供电电压从5V降到3V2V甚至1V左右。工作电流从mA级降到μA级。在生产工艺上以CMOS代替NMOS,并向HCMOS过渡;
<5>应用软件配套。提供了软件库,使用户开发单片机应用系统时更快速、方便。使有可能做到用一周时间开发一个新的应用产品;
<6>系统扩展与配置。有供扩展外部电路用的三总线结构DBABCB,以方便构成各种应用系统。根据单片机网络系统、多机系统的特点专门开发出单片机串行总线。此外,还特别配置有传感器,人机对话 、网络多通道等接口,以便构成网络和多机系统。

3.2.5 单片机的应用领域

由于单片机有许多优点,因此其应用领域之广,几乎到了无孔不入的地步。单片机应用的主要领域有:

<1>智能化家用电器:各种家用电器普遍采用单片机智能化控制代替传统的电子线路控制,升级换代,提高档次。如洗衣机、空调、电视机、录像机等。

<2>办公自动化设备:现代办公室中使用的大量通信和办公设备多数嵌入了单片机。如打印机、复印机、传真机、绘图机、考勤机、电话等

<3>商业营销设备:在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、IC卡刷卡机等都采用了单片机控制。

<4>工业自动化控制:工业自动化控制是最早采用单片机控制的领域之一。如各种测控系统、过程控制、机电一体化、PLC都要用到单片机控制。

<5>智能化仪表:采用单片机的智能化仪表大大提升了仪表的档次,强化了功能。如数据处理和存储、故障诊断、联网集控等。

<6>智能化通信产品:最突出的是手机,当然手机内的芯片属专用型单片机。

<7>汽车电子产品:现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器(黑匣子)等都离不开单片机。

<8>航空航天系统和国防军事、尖端武器等领域:单片机的应用更是不言而喻。

3.3 单片机AT89S52简介

3.3.1 AT89S52功能特性描述

AT89S52是一种低功耗高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

3.3.1 主要功能特性

3.3.2 AT89S52功能引脚说明

3-2 AT89S52引脚图

<1> VCC:供电电压。

<2> GND:接地。

<3> P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能

驱动8TTL逻辑电平。对P0端口写1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

<4> P1P1口是一个具有内部上拉电阻的8 位双向I/O 口,P1输出缓

冲器能驱动4 TTL逻辑电平。对P1端口写1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL

此外,P1.0P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2

和定时器/计数器2 的触发输入(P1.1/T2EX)。flash编程和校验时,P1口接收低8位地址字节。

引脚号第二功能:

P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出

P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

P1.5 MOSI(在系统编程用)

P1.6 MISO(在系统编程用)

P1.7 SCK(在系统编程用)

<5> P2口:P2口是一个具有内部上拉电阻的8位双向I/O 口,P2输出缓冲器能驱动4TTL逻辑电平。对P2 端口写1时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

<6> P3: P3口是一个具有内部上拉电阻的8 位双向I/O,P3输出缓冲器能驱动4TTL逻辑电平。对P3端口写1时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。flash编程和校验时,P3口也接收一些控制信号。

3-2 P3引脚的第二功能

此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。

<7> RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

<8> ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允

许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率

1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。该位置位

后,只有一条MOVXMOVC指令才能将ALE激活。此外,该引脚会被微弱拉高

单片机执行外部程序时,应设置ALE禁止位无效。

<9>程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

<10>EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为

0000H-FFFFH),EA端必须保持低电平(接地)。如EA端为高电平(接Vcc

端),CPU则执行内部程序存储器的指令。FLASH存储器编程时该引脚加

+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp<11>XTAL1振荡器反相放大器和内部时钟发生电路的输入端。

<12>XTAL2振荡器反相放大器的输出端。

3.4 单片机最小系统

单片机最小系统电路图:

单片机最小系统以89S52为核心外加时钟和复位电路电路结构简单,抗干扰能力强成本相对较低非常符合本设计的所有要求89S52片机系列是在MCS-51系列的基础上发展起来的是当前8位单片机的典型代表采用CHMOS工艺即互补金属氧化物的HMOS工艺CHMOSCMOSHMOS的结合具有HMOS高速度和高密度的特点还具有CMOS低功耗的特点

时钟电路在单片机的外部通过XTAL1,XTAL2这两个引脚跨接晶体振荡器和微调电容构成稳定的自激振荡器本系统采用的为12MHz的晶振一个机器周期为1usC2C322pf

复位电路分为上电自动复位和按键手动复位RST引脚是复位信号的输入端,复位信号是高电平有效上电自动复位通过电容C1和电阻R1来实现,按键手动复位是图中复位键来实现的

3.5 信号灯控制电路

发光二极管简称LED灯,具有许多优点,它不仅有工作电压低(1.53V)、体积小、寿命长、可靠性高等优点,而且响应速度快(100ns)、亮度比较高。一般LED的工作电流选在510mA,但不允许超过最大值(通常为50mA)。

3.5.1 信号灯控制电路图

3.5.2 信号灯控制电路的设计原理

本系统中交通信号灯的控制是由单片机的P1口来控制的。系统中采用发光二极管来模拟交通信号灯。发光二极管采用共阳极的连接方法,即将所有发光二极管的正极接+5V,并串联一个分压电阻,起到保护二极管的作用。当P1口中有低电平时,这个口所对应的这条电路就会导通,使得其控制的发光二极管被点亮;相反,若端口信号为高电平,电路不导通,发光二极管不会被点亮。通过P1口的信号控制,可以实现对交通信号灯的控制。

P1端口输出高电平,即P1各端口=1时,根据发光二极管的单向导电性可知,这时发光二极管熄灭;当P1端口输出低电平,即P1各端口=0时,发光二极管亮。

3.5.3 信号灯控制端口设计

控制交通信号灯的P1口中有八个端口,系统设计中只采用其中的六个端口,即P1.1P1.6P1.0P1.7口未使用,这两个端口一直送出的是高电平。受控的六个端口根据所给信号的不同所点亮的二极管不同,下图为信号灯控制时P1口各个端口信号状态。

3.5.3 信号灯控制状态表

系统中的倒计时数码管的段选由P0口控制,为选口由P2口中的P2.0P2.1P2.2P2.3四个口来控制。其中P2.0P2.1控制的是东西向的倒计时,P2.2P2.3控制的是南北向的倒计时。

3.6 数码管控制电路

3.6.1 数码管控制电路图

3.6.1 数码管控制电路图

3.6.2 数码管控制电路设计原理

数码管是一种半导体发光器件,其基本单元是发光二极管。

在交通控制系统中倒计时数码管均采用了8位数码管动态扫描显示。它将所有数码管的8个段线相应地并接在一起,并接到 AT89S52P0口,由P0口控制字段输出。而各位数码管可以使用共阴数码管,数码管的每段的电流是10毫安。极由AT89S52P2中的P2.0P2.3控制16位数码管的位输出控制。

这样,对于一组数码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。

3.6.3 数码管的简介

数码管的分类

数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。

3.6.3 共阴、共阳数码管结构图

数码管的驱动方式

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×840I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

本次设计中所采用的是动态显示驱动。

数码管的连接

LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形如 abcdefgSp

3.6.3采用共阴级连接

数码管应用

数码管是一类显示屏通过对其不同的管脚输入相对的电流会使其发亮从而显示出数字由于它的价格便宜使用简单在电器特别是家电领域应用极为广泛空调热水器冰箱等等

电流:静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA

电压:查引脚排布图,看一下每段的芯片数量是多少?当红色时,使用1.9V乘以每段的芯片串联的个数;当绿色时,使用2.1V乘以每段的芯片串联的个

第四章 PCB设计

4.1 PROTEL99SE软件的介绍

Protel 99是应用最广泛的电子线路设计软件,使用简单、易于学习、功能强大。 Protel 99包括电路原理图的设计、印制电路板的设计方法、元件封装的创建、各种报表文件的生成及设计成果的输出等。

Protel99 SE的组成:Sch-原理图编辑器;Schlib-零件库编辑器;PCB-印刷电路板编辑器;PCBlib-零件封装编辑器;信号模拟仿真系统在原理图上进行信号模拟仿真的SPICE3f5 系统;可编程逻辑设计系统基于CUPL语言、PLD设计系统; Text-文本编辑器;Spread-电子表格编辑器

Protel 99的主要特性有:设计系统稳定高效;SmartTool智能工具技术将设计工具集成在单一环境下;SmartDoc智能文档技术将设计数据文件存储在单一设计数据库中,由设计管理器统一管理,以.ddb为后缀;SmartTeam智能工作组让多个设计者通过网络同时设计;大大增强了PCB自动布线功能:自动布线规则条件的复合选项方便了设计;自动布线使用了最新人工智能技术;增强的交互式布局和布线模式等;资源丰富的元器件库;通过SPICE3f5在原理图上仿真。

4.2 交通灯原理图

4.2.1 新建设计文档

首先,建立设计数据库文件

点击FileNew Design

Database File Name 中设置数据库文件名称,点击Browse选择新文件所存放的文件夹。

接着新建设计文档,点击FileNew新建原理图文件Schematic Document

最后设置图纸大小,DesignOption,弹出文件设置对话框后进行设置

4.2.2 电路图设计

添加零件库:击活Browse Sch点击Add/Remove

取用零件:点击图标Place

编辑零件名:双击零件

零件的对齐

连接线路:点击PlaceWire后,光标处出现大十字;将大十字光标置放于连线起点,按鼠标左键置起始点;光标移动则拉出引线,停于某点,单击鼠标左键则可转弯,单击鼠标右键(或按ESC)则结束此线。双击鼠标右键则结束画线。

放置电路输入输出点:点击PlacePort

放置文字:点击PlaceAnnotation

原理图仿真

Protel99提供了大量的仿真用元件,每个都链接到标准的SPICE模型。5800个仿真用元件分别在Sim.Ddb数据库的28个库中。

Protel99中执行仿真,只要简单地从仿真用元件库中放置所需的元件,连接好原理图,加上电源,单击仿真。

4.3 电路板设计流程

1.电路图电路板

Sch设计电路图定义元件封装通过电器规则ERC检查

SchCreate Netlist生成网络链接

进入PCB编辑器定义板框引入网络连接表放置元件(Component)设置布线规则自动布线手工调整保存

2.加载元件封装库:点击Add/Remove按钮

3.工作层的设置:点击DesignOptions

4.系统参数的设置

在设计窗口中单击右键弹出菜单选择Properties.;在主菜单Tools工具中选择Preferences命令;弹出系统参数设置的对话框设置各种参数各种参数设置完以后在禁止布线层下面绘制一个

5.禁止布线框:用PlaceTrack 命令画一个框

4.4 印制板的绘制

1.加载网络表

Design Netlist命令;若网络表有错误则必须先改正所有错误,直到没错了才能执行加载网络表。

(一)Sch所生成网络表的常见错误。

引线重叠,增加了节点。

元件引脚间缺少引线。

元件的序号(Designator)重复(Duplicate)

.元件的封装(Footprint)与PCB所打开库的封装不一致。

.电源的网络号不正确。如:接地端没有改为GND;用电源符号作输出端

元件引脚与封装引脚的编号不一致。元件引脚: Name Number

Name可标记引脚的名称,如VccGND+-12.

Number应该和封装引脚的序号Designator一致

自建元件的引脚方向不正确。

(二)修改或新建元件封装:有些元件封装在PCB库里没有时网络表也会显示错误;用户可以修改已有的元件封装或自己创建来获得需要的封装。方法:直接在PCB图上修改元件封装例:在SCH中取LED的封装为Diode0.4,PCB中修改步骤ToolsMake Library在自己的库中选中Diode0.4,进行编辑去掉引脚,修改焊盘尺寸和形状若网络表显示没有错误了可以点击执行(Execute)加载

2.元件的布局

自动布局或手动布局,可以先利用自动布局然后再用手动布局进行调整。

(一)自动布局:ToolsAutoplace

(二)推挤的方法摆放元件

设置推挤深度ToolsAlignComponents Set Shove DepthToolsAlign Components shove开始推挤;推挤完毕的元件基本没有重叠的,可以继续用手动布局进行调整,将元件摆放合理以利于布线

(三)手动布局

用鼠标左键点击要摆放的元件拖住不放,这时此元件周围的飞线都显示出来,将其拖到合理的位置再释放鼠标,释放位置可以参考飞线的情况,应以元件之间的飞线最短飞线交叉最少为原则。拖动期间可以配合使用空格键、X键、Y键分别进行旋转90°。

3.布线

布线分为:自动布线和手动布线

布线之前要先进行一些默认参数的设置DesignRulesRouting Layers(布线层)必须设置通常都设为水平或竖直,电源线和地线也应该一致,顶层走水平线底层走竖直;布线之前Clearance Constraint (走线间距)和Width Constraint(线宽约束)二者至少设置一项。

(一)自动布线

Auto RouteSet up弹出对话框设置完单击Route All开始布线,布线完毕检查如果发现有些线不合理,则应该撤消布线:使用ToolsUn-Route命令

(二)手动布线

可以对自动布线完的结果进行手动调整达到合理的布线要求。手动布线的基本步骤:设置导线的一些默认参数DesignRules;再利用小键盘上 * 切换到顶层或底层或点击标签;最后点击Place Track命令

同一层导线的绘制:单击鼠标左键确定导线的起点,移到终点的位置单击左键两次确定终点,即画完一段导线,可以继续执行画线命令画下一段导线,也可以点鼠标右键两次结束画线命令画线中可以用Shift+空格键切换导线模式

不同层导线的绘制:顶层红色,底层蓝色。画完顶层导线后用小键盘上的 * 键切换到底层继续画底层导线,系统会在换层的位置自动打过孔。

最后修改导线属性

4. PCB检查

检查线路设计是否与原理图设计思想一致

检查定位孔与PCB的大小,以及固定键安装位置是否与机构相吻合。

结合EMC知识,看PCB 是否有不符合EMC常规的线路

检查PCB封装是否与实物相对应。

第五章 系统软件设计

硬件平台结构一旦确定,大的功能框架即形成。软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。这里我们选用了移值性好、结构清晰、能进行复杂运算的C语言来实现编程

5.1 汇编语言与C语言的比较

单片机应用系统的程序设计,可以采用汇编语言,也可以采用C语言

汇编语言是一种用记忆符来代表机器语言的符号语言因为它最接近机器语言,汇编语言对单片机的操作直接、简捷,编制的程序紧凑、执行效率高。但移植难度很大,程序的可读性也很差。

C语言可移植性好,与自然语言非常接近,同样功能可以用少量的语句完成 ,入门容易,编程效率较高,程序可读性好,并且可以嵌套汇编语言,以满足执行效率或操作有特殊要求的情况。与汇编语言相比C51具有下列优点:

编程效率高。

程序的可移植性好

程序的可读性和可维护性好。

便于应用程序的模块化设计C51的程序结构与C语文基本相同。

相对汇编语言,简单易学,便于使用。

终观上述,结合本次毕业设计的实际情况,本人决定使用C51进行本设计的编程方法。提高设计的效率和成功率。

5.2 Keil C51uVision 集成开发环境

Keil C51 μVision2 集成开发环境是基于32windows环境,以51系列单片机为开发目标,以高效率的C语言为基础的集成开发平台。主要包括:c51交叉编译器,A51宏汇编器,BL51连接定位器等工具和Windows集成编译环境uVision,以及单片机软件仿真器Dscope 51 Keil C51 V6.0版本以后,编译和仿真软件统一为μVision2,即通常所说的uV2,这是一个非常优秀的51单片机开发平台,对C高级语言的编译支持几乎达到了完美的程度,当然它也同样支持A51宏汇编。同时它内嵌的仿真调试软件可以让用户采用模拟仿真和实时在线仿真两种方式对目标系统进行开发。软件仿真时,除了可以模拟单片机的IO口、定时器、中断外,甚至可以仿真单片机的串行通信。

本设计使用Keil C51编程过程:

⑴点击菜单project,选择new project

⑵然后选择你要保存的路径,输入工程文件的名字,比如保存到keil目录里

工程文件的名字为traffic
⑶这时会弹出一个对话框,要求你选择单片机的型号

⑷这时要新建一个源程序文件,建立一个汇编或c文件

输入交通灯程序

⑹选择菜单FileSave, 在文件名里输入文件名,扩展名为.c

⑺点击Target 1前面的+,展开里面的内容source Group1

⑻用右键点击Sourece Group 1(注意用鼠标的右键,而不是左键),将弹出一个菜单,选择Add Files to Guoup Source Group 1
⑼对程序进行编译,链接,调试

5.3 程序设计思路

程序开始初始化时,设置位东西绿灯亮,倒计时显示为25秒;南北红灯亮,倒计时显示为30秒。随之两个方向的倒计时同时以1秒位单位开始倒计时,当南北红灯倒计时为5时,东西绿灯倒计时为0。接着红灯继续倒计时为5时,东西方向的绿灯熄灭,黄灯点亮,且倒计时5秒,此时的状态为东西黄灯,南北红灯,且南北倒计时由5递减至0。当南北倒计时归零后,南北红灯熄灭,绿灯点亮,倒计时跳转为25并开始递减;东西黄灯熄灭,红灯点亮,倒计时跳转为30并开始递减。同样当南北方向倒计时递减至0时,东西方向倒计时为5,此时南北方向绿灯熄灭,黄灯点亮,且倒计时跳转为0,东西方向继续倒计时,此时的状态为东西红灯,南北黄灯,且东西方向倒计时由5递减至0,之后又开始重复东西绿灯,南北红灯的状态,依次循环。

我们定义变量给P1各个口,当在程序中给变量赋值为1时,则P1各口输出高电平;当赋值为0时,则P2各口输出低电平。至于循环需要软件控制,程序见下节。

5.3程序流程图

5.4 交通灯设计程序

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char code Tab[10]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbit P11=P1^1; //东西绿灯

sbit P12=P1^2; //南北红灯

sbit P13=P1^3; //东西黄灯

sbit P14=P1^4; //东西红灯

sbit P15=P1^5; //南北绿灯

sbit P16=P1^6; //南北黄灯

sbit P20=P2^0; //东西数码管D1,D2

sbit P21=P2^1;

sbit P22=P2^2; //南北数码管D3,D4

sbit P23=P2^3;

int y=30,z=30,count,c,d,a;

void delay1ms(uint k) //带参数的1ms延时程序

{ uint a,b;

for(a=0;a

for(b=0;b<120;b++)

;

}

void main()

{

EA = 1; //允许CPU中断

ET0 = 1; //定时器0中断打开

ET1=1; //定时器1中断打开

TMOD = 0x11; //设定时器0 1为模式116位模式

TH0=0xB1;

TL0=0xE0; //设定时值为(20ms

TH1=0xD8; //设定时值为(10ms

TL1=0xF0;

TR0 = 1; //TR0

TR1=1; //TR1

while(1); //无限循环等待中断

}

//定时器0中断外理中键扫描和显示

void Key_Time0(void) interrupt 1 using 2

{

TH0=0xB1;

TL0=0xE0; //设定时值为20000us20ms)

count++;

if(count==50){

count=0;

y--;

}

}

//定时器1中断外理中键扫描和显示

void Dis_Time1(void) interrupt 3 using 3

{

TH1=0xD8;

TL1=0xF0; //设定时值为10000us10ms)

if(y>=5 & y<=30)

{

P1=0xf9; //东西绿灯,南北红灯

P0=Tab[(y-5)/10];

P23=1;

P2=0xfe; //选通东西向数码管的十位

delay1ms(2);

P0=Tab[(y-5)%10];

P20=1;

P2=0xfd; //选通东西向数码管的个位

delay1ms(2);

P0=Tab[y/10];

P21=1;

P2=0xfb; //选通南北向数码管的十位

delay1ms(2);

P0=Tab[y%10];

P22=1;

P2=0xf7; //选通南北向数码管的个位

delay1ms(2);

z=30;

}

if(y>=0 & y<5)

{ P1=0xf3; //南北红灯,东西黄灯

c++;

if(c==5){

P13=~P13;

c=0; }

P0=Tab[y/10];

P23=1;

P2=0xfb; //选通南北向数码管的十位

delay1ms(4);

P0=Tab[y%10];

P22=1;

P2=0xf7; //选通南北向数码管的个位

delay1ms(4);

z=30;

}

if(y<0)

{ a++;

if(z<=30 & z>=5)

{P1=0xcf; //南北绿灯,东西红灯

P0=Tab[z/10];

P23=1;

P2=0xfe; //选通南北向数码管的十位

delay1ms(2);

P0=Tab[z%10];

P20=1;

P2=0xfd; //选通南北向数码管的个位

delay1ms(2);

P0=Tab[(z-5)/10];

P21=1;

P2=0xfb; //选通东西向数码管的十位

delay1ms(2);

P0=Tab[(z-5)%10];

P22=1;

P2=0xf7; //选通东西向数码管的个位

delay1ms(2);

}

if(z>=0&z<5)

{ P1=0xbf; //东西红灯,南北黄灯

d++;

if(d==5){

P16=~P16;

d=0; }

P0=Tab[z/10];

P21=1;

P2=0xfe; //选通东西向数码管的十位

delay1ms(4);

P0=Tab[z%10];

P20=1;

P2=0xfd; //选通东西向数码管的个位

delay1ms(4);

}

if(a==100){

z--;

a=0; }

if(z<0) y=31;

}


第六章 调试

因本设计本身要求有稳定性高、免维护、抗干扰能力强等功能,系统调试除了验证数据处理的精度,确保判断的准确性外,同时必须确认各项的功能的正常运行。根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。

6.1 硬件调试

硬件调试:硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。硬件调试是在用户系统未工作时的一种硬件测试。

硬件调试可分为静态调试与动态调试两步进行。

静态调试是在用户系统未工作时的一种硬件检测。

第一步:目测。检查外部的各种元件或者是电路是否有断点。

第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。

第三步:加电检测。给板加电,检测所有的插座或是器件的电源端是否符合要求的值。

第四步:是联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。

动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远、由分到合。

由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。

由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。



6.2 在硬件调试中出现的问题

1.在硬件电路检查时发现有好多焊点焊的并不牢固,由于导线是多股线的,所以出现短路的情况会比较大,为了保证电路正常工作,将所有焊点都进行了牢固处理,避免了虚焊、漏焊情况的出现。

2.复位按钮在按下时没有反应,经检查发现是由于粗心导致接错管脚,修改后工作正常。

3.上电后发现数码管不工作,说明没有信号过去,检查后发现是电阻问题,修改后数码管被点亮。

6.3 软件调试

软件调试是通过对拥护程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。程序后、编辑、查看程序是否由逻辑的错误导致 软件调试中出现的问题。

在调试程序时出现很多错误,有书写错误,前后定义变量的不同,通过仔细检查,调试,最终程序完全正确。

6.4 软硬件联调

系统做好后,进行系统的完整调试。主要任务是检验实现的功能及其效果并校正数值。根据实测数据,逐步校正数据,使测量结果更准确。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调

将程序写进单片机并上电后发现交通信号灯虽然亮,但不稳定,思考后觉得是程序中的延时问题,经过几次调试后信号灯可以在理想状态下工作。

实时调试的时候红绿信号灯都正常工作,但数码管中只有东西向的各位正常工作,其他三位全亮但不倒计时。经过长时间的检查,初步估计是电阻的问题,加了一个1k电阻后,它所对应的数码管开始正常工作。



第七章 结束语

踉踉跄跄地忙碌了几个月,我的毕业设计终于告一段落。从资料查找、方案设计、焊接硬件、编辑程序直到最后的调试成功,经过努力后,我的毕业设计终于完成了。在暑假资料搜集时,我还设计了许多功能,人行道信号灯控制,急车通行信号灯的切换,运用人工智能来检测道路车辆的多少来实时控制信号灯的变化,而最终却只实现了简单的信号灯控制和倒计时功能。这些都说明自己的知识能力还不够,要想达到更多智能化的功能还需要不断提高。虽然只实现了简单的功能,但我觉得这也不是一个简单的事情,就算是有一点疏忽都会对结果有影响。所以不论做任何事情,就算再小都要以一个认真的态度去对待。

这次独立完成毕业设计是对自我的锻炼。在以前的课程设计中,我大多负责的是硬件部分,因为我的编程能力不高,但这次是独立完成,我不得不自己学习、摸索,通过一次次的修改才完成了程序编辑,提高了我对软件部分的掌握。

不积跬步何以至千里,本设计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识,并在设计中得以体现。正是有了他们的悉心帮助和支持,才使我的毕业论文工作顺利完成,在此向西安电子科技大学长安学院,控制系的全体老师表示由衷的谢意。感谢他们四年来的辛勤栽培。同时也非常感谢我的毕设老师对我的认真指导和大力帮助。





参考文献

[1] 张毅坤、陈善久、裘雪红.专著.《单片微型计算机原理与应用》[M].西安电子科技大学出版社1998.8

[2] 龚尚福、贾澎涛、靳玉萍.专著.C/C++语言程序设计》[M].徐州:中国矿业大学出版社,2006.12

[3] 刘树林、程红丽.专著.《低频电子线路》[M]. 北京:机械工业出版社,2007.8

[4] 蔡骏.专著.《单片机试验指导教程》.安徽大学出版社,2008.7

[5] 陈伟人.专著.MCS-51系统单片机实用子程序集锦》[M].北京:清华大学出版社,1993

[6] 张志良.专著.《单片机原理与控制技术》[M].机械工业出版社,2005

[7] 单片机学习网 http://www.8951.com/TEST/XL1000/xl1000623.htm



附录A:系统硬件电路图


附录BPCB版图



附录C:系统实物图

运行结果:

毕业论文《交通信号控制系统设计》

相关推荐