《基于单片机的智能交通灯控制系统毕业设计(23页).docx》由会员分享,可在线阅读,更多相关《基于单片机的智能交通灯控制系统毕业设计(23页).docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于单片机的智能交通灯控制系统毕业设计-第 18 页 学号:201110231062上海海事大学本科生毕业设计(论文)基于单片机的智能交通灯控制系统设计学院:物流工程学院专业:电气工程及其自动化班级:电气112班姓名:王志刚指导教师:李妮娜完成日期: 年 月 日承诺书本人郑重承诺:所呈交的毕业论文“基于单片机的智能交通灯控制系统设计”是在导师的指导下,严格按照学校和学院的有关规定由本人独立完成。文中所引用的观点和参考资料均已标注并加以注释。论文研究过程中不存在抄袭他人研究成果和伪造相关数据等行为。如若出现任何侵犯他人知识产权等问题,本人愿意承担相关法律责任。承诺人(签名):_日期: 年 月
2、日摘 要由于交通路口不同时刻车流量的大小是不确定的,而交通灯系统采用的是固定时间的控制方法,所以经常会造成道路有效利用时间的浪费,出现空等、道路拥堵等现象,影响了道路的畅通,因此改善交通灯控制系统,使其适应目前的交通状况,成为当前交通事业的热点。针对传统的交通灯存在不能根据车流量的大小自动调整红绿灯时长的缺陷以及单片机性能日趋强大和稳定的特点,提出以单片机为控制核心的智能交通控制系统的设计。关键词:智能控制,交通灯,单片机AbstractDue to the traffic intersection at every moment the size of the traffic flow is
3、 uncertain, and the system of traffic light is fixed time control method, so often caused the road to effective use of time waste, null, road congestion and other phenomenon, affecting the smooth road. Therefore, to improve the traffic lights control system, which can adapt to the current traffic co
4、nditions, has become the focus of the current transportation. Since the traditional traffic light has not according to the size of the traffic flow to adjust the traffic lights when the length of defects and the performance of the one chip computer has become more and more powerful and stable, and p
5、ut forward to MCU as the control core of the intelligent traffic control system design.Key words:Intelligent control,Traffic lights,SCM目 录第一章、引言11.1智能交通灯研究的背景和意义11.2国内外交通灯现状11.3设计任务和要求1第二章 方案总体设计22.1显示时间方案的选择22.2按键方案的选择22.3输入方案22.4编程语言选择方案22.5总体设计方案3第三章 硬件设计43.1单片机最小系统43.1.1 STC89C52单片机特性参数43.1.2 ST
6、C89C52RC主要引脚功能53.1.3 STC89C52RC的中断源53.1.4 时钟电路63.1.5 复位电路63.2数码管显示电路63.3车流量检测模拟电路83.4红绿灯显示电路93.5总体电路的设计10第四章 软件设计114.1KEIL C51软件简介114.2程序流程图114.2.1主程序流程图114.2.2数码管显示子程序流程图124.2.3按键检测流程图134.3部分程序介绍144.3.1初始化程序144.3.2数码管与发光二极管点亮程序154.3.3黄灯闪烁程序154.3.4延时函数程序164.3.5车流量按键模拟程序164.4单片机理论基础知识174.4.1定时器原理174.
7、4.2中断原理174.4.3软件延时原理18第五章、实物模拟与实现185.1德飞莱单片机开发板简介185.2实物的模拟与实现19第六章、设计总结21参考文献22附录(源程序清单)23第一章、引言交通在人们的日常生活中的地位是十分重要的,良好的交通会给人们的生活带来很大的方便。智能交通灯控制系统的出现和使用与重修一条额外的公路相比起来不管是在经济上还是在道路使用效率上都能收到颇好的效益,它的出现更加节约资源,提高交通运行效率,使交通管理人员有更多的精力和时间投入到交通控制上,为城市的道路交通事业带来更多的效益的同时,也为城市交通形象的创造发挥不可替代的作用。1.1智能交通灯的研究背景和意义随着我
8、国经济的发展、城市化及城镇化的加剧,各种机动车迅速普及,这一系列现状给我国的道路交通带来了严峻的考验,面对这一系列的状况,传统的交通灯的出现及使用,为我国的道路交通的管理带来很大的好处,其对交通的疏导、道路疏通能力的提高、交通事故的减少的作用十分显著。然而,尽管传统的交通灯已发挥了其它工具不可替代的作用,但是随着城市的不断扩大,其很多不尽人意的地方也随之明显,比如说:(1)有的十字路口,两路的通行时间相同,当一路的车流量减少时,该路的通行时间不会改变,出现空等现象,而另一路就出现车辆累积现象;(2)在某些地段的红绿灯的时长不能随时间的改变而改变。根据以上问题,基于传统的交通灯的智能型交通灯开始
9、被人们所提出,根据人们的需求,智能交通灯不仅能实现传统交通灯的功能,而且还附加着其他十分有意义的功能,比如说(1)车流量检测功能;(2)闯红灯报警功能;(3)根据交通车流量大小来改变交通灯的显示时长等等。这一些列的特殊功能,改善了道路交通情况,提高了道路的利用率,也给人们带来了很大的便利。1.2国内外交通灯现状目前Australia的scats系统与UK的transyt系统与scoots系统是世界上广泛使用的比较典型的城市道路交通灯控制系统。 另外,在道路交通灯的发展过程中,自适应理论一直是世界各种研究机构研究的热点,比如英国的scoots和澳大利亚的scats系统都有着自适应理论的影子。最近
10、几年,国外对信号灯控制系统的研究仍热衷于自适应理论方向,其中Rhodes交通灯控制系统就是由美国亚利桑那大学所研制。 我国的交通事业的起步较西方国家来说是比较晚的,并且在前期的时候前进得比较缓慢。自1949年新中国成立之后,伴着我国各个方面的基础的成熟以及社会前进步伐的需求才开始向健全的道路交通控制系统领域进军,然而当时我国主要仍是引用国外的系统。随着我国交通事业的发展,我国的交管部门以技术引进和自主创新为方针,抛弃了在我国一些大中城市里旧有的交通灯控制模式,而是采用某些科技前沿的控制技术,即使在普及率和规模上与世界发达国家有着很大差距,但在某些领域上的技术水准已处在世界领先水平。1.3设计任
11、务和要求本毕业设计的题目为基于单片机的智能交通灯控制系统的设计,大体就是以单片机为控制核心另外再结合其他外部硬件设计出一套带有特殊功能的道路交通灯系统。设计任务及目的:通过本次毕业设计,熟悉和掌握单片机的C语言的编写,学习和了解一些单片机的知识,最后理论联系实践,提高自己的实践能力;另外,通过智能交通信号灯控制系统的设计,掌握单片机的定时/计数器的使用,会编写单片机的简单程序,充分发挥个人能力,最终设计出一套带有特殊功能的交通灯控制系统,并用实物模拟出来。设计要求:所完成的系统(1)能完成传统的交通灯系统的一般工作,即红绿灯指示;(2)倒计时由数码管显示;(3)按按键次数模拟道路通过的车辆数目
12、;(4)根据车流量的大小适当改变交通灯的显示时长。第二章 方案总体设计本设计采用STC89C52RC单片机为控制单元,完成交通灯对道路交通的智能控制。采用这样一套系统来解决了车辆通行和等待时的红绿灯时长不合理、交通路面利用率低等问题。该系统相对于传统的交通灯来说其使用可靠、结构简单、费用低,实时性好、安装维护方便,有较好的发展前景。系统在设计的时候需要注意一些如下细节上的问题。2.1时间显示方案的选择方案一:选择数码管显示,对于数码管来说其工作电流低,一般在10毫安便可以正常工作,它体积小不占用电路板太大位置,另外它的使用的寿命长、可靠性较高,最后它的响应时间非常的短,一般低于0.1微秒,在电
13、压电流很低的状况下数码管的亮度也比较高。方案二:选择液晶屏显示,其最大的好处就是功耗小,虽然节约能源,但由于它自己不能发光,而是通过反射外界的光来显示相应的图案或字形,所以在光线不足时它显示得不够明显。根据上面的两种方案的比较,本设计中交通灯的时间的显示器件采用方案一的数码管。2.2按键方案的选择 方案一:采用矩阵键盘,使用矩阵按键可以为单片机节省很多的I/O口,此时,余下的I/O口可以连接其它的器件,但是编程比较复杂。方案二:采用独立按键,独立按键在开发板上共有八个,每一个按键需要连接一个I/O口即可实现信号输入,而编程简单。通过上述两种方案的比较,结合自己的设计的情况,首先,由于本设计最多
14、使用三个按键,即南北向车流量的模拟按键、东西向车流量的模拟按键、复位按键,其次,单片机在连接了其他的模块后,还会剩下很多的I/O口,所以不怕I/O口不够,所以本毕业设计选择了独立按键,这样编程也比较简单。2.3输入方案本课程设计中输入主要是车流量检测的模拟按键和复位的按键两种输入情况。方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是:使用灵活可编程,并且有RAM及计数器。如果采用此方案,可增加很多的I/O 口,但是实现起来较为复杂。方案二: 由于本设计中的输入量不是很多,所以可以让单片机的I/O口直接和独立按键连接,这样不仅编程简洁,使用方便,而且成本也低。缺点是功能单一。结合
15、本设计的实际,在按键输入时并无太复杂的要求,所以选择方案二作为输入方案。2.4编程语言选择方案方案一:使用汇编语言,汇编语言是最接近机器码语言的一种,使用该语言时占用的RAM少、程序执行快。而然对于不一样的处理器来说,其可读可运行的汇编语言可能会存在不同,因此可移植性较低。方案二:使用C语言,C语言结构化高,易读取,可移植性高,是目前使用最广泛的一种编程语言。但是它会占用较多的RAM,而且比汇编语言的执行效率低。结合实际的情况,由于实现毕业设计的现象的程序不是太大,对程序的执行效率要求也不是很高,所以本毕业设计选择了容易编写和看懂的C语言。2.5总体设计方案首先需要清楚地知道交通信号灯实际转变
16、时的情况和规律。本文中取生活中最常见的十字路口的交通信号灯为研究对象。如图1所示。图 1、十字路口图如图1知十字路口由横向和纵向的两干道交叉构成,我们可以定义其为东西向和南北向,每条干道应分别设有1组三色的交通灯。红灯亮表示禁止通行;绿灯亮表示允许通行;黄灯闪烁时表示红、绿灯之间即将转变,之前通行的方向变为等待禁行、禁行的方向变为等待通行。本设计设定起始状态1是东西向禁行,南北向通行;状态2是东西向通行,南北向禁行。具体的情况是,首先打开电源,系统进入起始状态1,此时,东西向红灯点亮,南北向绿灯点亮,东西向车道的车流量开始检测,经过一段时间后,东西向红灯点亮,南北向绿灯熄灭,南北向黄灯闪烁,东
17、西向车道的车流量继续检测,再经过一段时间后,系统进入状态2,东西向绿灯点亮,南北向红灯点亮,南北向车道的车流量开始检测,经过若干时间后,东西向红灯熄灭,东西向黄灯闪烁,南北向红灯点亮,南北向车道的车流量继续检测,经过若干时间后,返回到起始状态1,如此循环。上述状态一个周期的变换可以总结如下表1:干道状态东西向南北向红 黄 绿红 黄 绿11a1 0 00 0 11b1 0 00 1 022a0 0 11 0 02b0 1 01 0 0表 1、交通灯状态(1周期)在本设计中,本应设有东西南北共4组交通灯,一共一十二盏,然而由于同一向上的两组交通灯的显示状况是一样的,所以,只需要六盏灯来表示东西向、
18、南北向的交通灯,因此可用单片机P1口中的6个端口通过编写相应的程序来控制六个交通灯的运作,实现生活中交通信号灯的模拟。第三章 硬件设计3.1单片机最小系统所谓单片机最小系统是指使单片机能够实现简单运行的最少的原件的组合,是保证单片正常运作的电路,不可缺少。单片机最小系统一般来说是由四个部分构成的,分别是单片机、程序存储器、时钟电路和复位电路。对于51单片机,其内部已经有程序存储器了,因此制作51单片机的最小系统除了需要单片机本身外,只需再连接一个时钟电路和一个复位电路就可以了。如图2所示。图 2、单片机最小系统3.1.1 STC89C52单片机特性参数STC89C52RC单片机的程序存储空间有
19、8千字节;具有512字节的数据存储空间;内带2K字节EEPROM存储空间;可直接使用串口下载;8K字节程序存储空间;256字节数据存储空间。l 增强型的51单片机,其机器周期可分为6时钟12时钟两种,选型时根据实际情况进行选择,另外其代码与传统51单片机全部兼容。l 工作电压:5.5V3.3V(5V 单片机)/3.8V2.0V(3V 单片机)l 工作频率范围:040MHz,实际工频可达48MHz;l 用户应用程序空间为8Kbit,片上的RAM有 512bit;l 32个通用I/O口,复位后为:P0/P1/P2/P3是准双向口/弱上拉。其P0口当用作总线扩展时,不加上拉;当用作输入输出口时,就要
20、加上拉。设计时要注意这点细节。l 共3个16位定时/计数器,分别为T0,T1,T2.3.1.2 STC89C52RC主要引脚功能STC89C52RC引脚图如图3所示,芯片的各引脚功能下文将给出解释。图 3、STC89C52引脚图l VCC:电源电压l GND:接地l P0口:P0口是一组八位双向I/O口。P0口既可使用为地址/数据总线,也可以使用成通用的I/O口。l P1口:P1口是一组八位的双向输入输出端,内部有上拉电阻,P1端口是通用的。l P2口:P2口是一组八位的双向输入输出端,内部存在上拉电阻。l P3口:P3口是一组八位双的向输入输出端,内部存在上拉电阻。l RST:复位输入l P
21、SEN():程序储存允许指令端口,作用是接收读外部程序存储器时的选通信号。l EA()/VPP:外部访问允许l XTAL1:晶振的入口。l XTAL2:晶振的出口。3.1.3 STC89C52RC的中断源STC89C52RC共有5个中断源,它们分别是片内串行口中断TI或RI、外中断INT0和INT1、片内定时/计数器溢出中断TF0,TF1,TF2,这5个中断源由两个特殊功能寄存器TCON和SCON控制。3.1.4 时钟电路本次毕业设计中使用了一只12兆赫的晶振和两只30PF的贴片电容组成时钟电路。另外构成时钟振荡器的是单片机内部的一个反相放大器, XTAL1和XTAL2分别为其输入端和输出端,
22、两端并接一个石英晶体和两片电容即可组成一个自激振荡器。电容器C1,C2对振荡频率有调节作用,电容C1和C2取值在在25-90PF之间,本设计里取的30皮法。电路如图4所示。图 4、时钟电路3.1.5 复位电路 由图3知道复位端子为9号脚,复位时只需在复位端RST上输入高电平即可。一般在RST端和电源之间串接一个按键,按键一端接高电平,一端接复位端,当按键接通时, +5V电压就会立即输入复位端子。手动按钮复位的电路如图5所示。然而人为按按键的时候动作再快,按键由按下到接通的这段时间里,按键接通的时间也有几十毫秒,因此按键按一次足以满足复位时在时间上的需求。其电路如图5所示。图 5、复位电路3.2
23、数码管显示电路在此次毕业设计中,采用的是八位的共阴极数码管,每一位数码管由七段LDE和一个小圆点发光管组成(如图6所示),根据七段的LED的不同时间的显示来表示不同的字码。对于数码管的显示,分为动态显示和静态显示两种,对于静态显示,其编程较简便,显示方面较稳定,然而需要大量的I/O口;对于动态显示,其编程复杂,但是需要的输入/输出端子较少。根据具体情况,本设计选择了数码管动态显示的方案,实际上是利用了人们的视觉暂留效应。图 6、数码管数码管动态显示原理:数码管的点亮要考虑段选择与位选择两个的输入,由于采用的是8位共阴数码管,因此要点亮数码管,就必须先将位选选通,接下来就给段选输入数据,最后便可
24、以显示相应的字符。其电路接线图如图7所示。实物连线时,由STC89C52的P0口送入初值,即是送入段码值,P3口送入位码值。图 7、数码管显示电路有关8位共阴数码管的位码和段码,分别见表2和表3.123456780xfe0xfd0xfb0xf70xef0xdf0xbf0x7f表 2、八位共阴数码管位码表01234567890x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f表 3、数码管0-9段码表在数码管的显示电路中,74HC573锁存器几乎都是要用到的。其引脚如图8所示:图 8、74HC573芯片引脚图74HC573包含八进制三态非反转透明锁存器,是一种高性能硅
25、门CMOS元件。74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。3.3车流量检测模拟电路在本次毕业设计中,本设计用按键按的次数来代替车流量的大小,所以车流量的检测即是按按键,按键按一次表示检测到有一辆车通过。实际连线中,使用外部独立按键与单片机连接,当按键按一
26、次,单片机便计数一次,最终将总数进行分析,然后判断和改变交通灯的显示时长。其接线图如图9所示。图 9、车流量检测模拟电路在图中K1表示南北向车流量检测的模拟按键,K2表示东西向车流量检测的模拟按键,分别和单片机的P2口的P2.5和P2.6连接。3.4红绿灯显示电路在本次交通灯的设计中,南北向和东西向各用三个发光二极管(红、黄、绿发光二极管各一个)来指示,所以本设计采用了单片机P1口的0-5号端子来控制六个发光二极管,这六个二极管是共阳极的。实际电路图为图10所示。图 10、红绿灯电路图这些发光二极管由于是共阳极的,所以只有在单片机P1口为低电平的时候才会亮,根据交通灯的亮灭规律,P1口各端子的
27、状态可以总结为表4:南北绿灯亮南北红灯亮南北黄灯亮东西绿灯亮东西红灯亮东西黄灯亮二进制码1111 11101111 11011111 10111111 01111110 11111101 1111十六进制码0xfe0xfd0xfb0xf70xef0xdf表4、红绿灯显示编码由于该设计只用到了P1口0-5号六个端子,剩下的6、7号端子就为高电平。3.5总体电路的设计图 11、总体电路图由上面的总体电路图可以清楚的看出,本毕业设计以STC89C52为控制核心,外部连接电源模块,时间显示模块,和红绿灯显示模块,车流量检测模块,其各模块的结构关系如图11所示:图 12、系统结构图第四章 软件设计4.1
28、KEIL C51软件简介Keil C51是美国KEIL SOFTWARE 公司出品的51系列兼容单片机C语言软件开发系统,其具有丰富的库函数、功能强大的继承开发调试工具、全windows界面,在开发大型软件时更能体现出高级语言C语言的优势。 C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2IDE可为它们提供单一而灵活的开发环境。C51V7版本是目前最高效、灵活的8051开发平台。它可以支持所有8051的衍生产品,也可以支持所有兼容的仿真器,同时支持其它第三方开发工具。4.2程序流程图程序流程图在程序分
29、析时有很大的作用,也是分析程序时最基本、最重要的工具。4.2.1主程序流程图在本次毕业设计的程序设计中,其主程序的设计思想是:首先定义各种变量,然后初始化参数,设定程序的初始状态s1:东西向红灯亮,南北向绿灯亮,一段时间后东西向红灯依旧,南北向黄灯闪烁。在东西向红灯亮的这段时间里,东西的车流量检测程序一直执行,直到南北黄灯闪烁结束;南北向黄灯结束后,程序进入状态s2:东西向绿灯亮,南北向红灯亮,一段时间后,东西向黄灯闪烁,南北向红灯依旧,在南北向红灯亮的这一段时间里,南北向车流量检测程序一直执行,直到东西向黄灯闪烁结束,东西向黄灯结束以后程序再次跳入到初始状态s1即东西向红灯亮,南北向绿灯亮,
30、以上为交通灯运行的一个周期,在这个周期中东西向和南北向的车流量的大小已经被单片机所记录,根据记录的车流量的大小,在下一个状态程序运行时,交通灯的显示时长会根据单片机上周期所记录的车流量的大小来改变。本设计的主程序的运作流程图如图13所示:图 13、主程序流程图4.2.2数码管显示子程序流程图本文对于数码管显示的程序,其主要思路是,在初始化中已经定义好倒计时的起始时间,根据单片机内部时钟计时,当一秒已到时,红绿灯显示时长就减一秒,没到时仍然显示此时的时长时间,数码管显示的时候又分为十位和个位,其运作流程图如图14所示:图 14、数码管显示子程序4.2.3按键检测流程图我们都知道,按键在按下与释放
31、的瞬间都会出现抖动的情况,抖动的时长取决于按键的机械特性,通常在5到10毫秒之间。如图15所示。图 15、按键被按下时的电压变化实验表明,在我们按下按键再立即释放的这个过程中,按键稳定闭合的时间大于二十毫秒,因此在按键检测时都要进行去抖的操作,对于按键消抖有专门的去抖电路,也有专门的去抖芯片,然而我们用一般的软件延时的方法就很容易的排除按键抖动的现象,而没有必要添加其它的的硬件电路。而在本次设计中对按键的消抖采用的是判断标志位flag和交通灯的状态S来实现的,其原理是在按键第一个下降沿就执行相关的程序,而不是在按键稳定闭合的时候才开始执行。 图 16、软件消抖流程图4.3部分程序介绍由于本毕业
32、设计采用的是C语言编程,所以程序的条理比较清晰,也很容易读懂,下面将本次毕业设计中的部分程序给予讲解。4.3.1初始化程序void init() half_sec = 0; s = 1; /交通灯状态选择标志 t = 0; count1=0;/南北向车流量 count2=0;/东西向车流量 sec=25; ew_Rtime=15; ns_Rtime=25; Ytime = 5; /黄灯显示时长 yellowflag = 0;/黄灯标志位置零 IT1 = 0;/设定外部中断1在低电平触发 IT0 = 0;/设定外部中断0在低电平触发 EX0 = 1;/允许外部中断0 EX1 = 1; TMOD
33、= 0x11; /设置定时器0和定时器1的位工作方式 TH0 = (65536 - 50000)/256; TL0 = (65536 - 50000)%256; /设置定时时间为50MS EA = 1; /开总中断 ET0 = 1; /开定时器0中断 TR0 = 1; /启动定时器0在初始化程序,设定了两主道的车流量大小以及系统开启时,两道红绿黄灯灯的显示时长等参数,另外还设定了单片机运行时的中断方式和定时器类型。4.3.2数码管与发光二极管点亮程序if(s = 1) & (yellowflag = 0) P1 = 0xed; /设置车道灯 dula = 1; /打开段锁存器 P0 = tab
34、le(sec - Ytime)/10; /存入段码值,显示绿灯的十位 dula = 0; /锁住段码 P0 = 0xff; /消影 wela = 1; /打开位锁存器 P0 = 0xfe; /存入位选 wela = 0; P0 = 0;/消影 delay(4); dula = 1; P0 = table(sec - Ytime)%10; /显示绿灯的个位 dula = 0; P0 = 0xff;/ wela = 1; P0 = 0xfd; wela = 0; P0 = 0; delay(4);对于本设计中数码管和二极管点亮的程序,以上面这段程序为例,这是在主程序中的一小段程序,其表示的是南北绿
35、灯点亮以及南北绿灯显示时长的程序,首先判断此时是什么状态,这里有条件:s=1&yellowflag=0,可见是状态1中南北向绿灯点亮,东西向红灯点亮的状态。于是单片机控制二极管的P1口应输出令南北向绿灯点亮,东西向红灯点亮,同时南北向绿灯时间的倒计时显示也在进行。4.3.3黄灯闪烁程序if(s = 1)& (yellowflag = 1) if(half_sec % 2) P1 = 0xf9; /车道黄灯关 else P1 = 0xfd; /车道黄灯开 /前面实现黄灯闪烁以上是南北黄灯闪烁的程序,其主要设计思路是南北黄灯开始时,让它点亮一秒,一秒后黄灯便熄灭,熄灭一秒后再点亮。就这样循环,直到
36、黄灯的时长结束。4.3.4延时函数程序void delay(uint z)uchar x,y;for(x=z;x0;x-)for(y=120;y0;y-);上面的这段代码的毫秒延时是不精确的,只能提供延时的效果,不能精确做到延时到所需的时间。代码中delay后面的 “uint z”,这就是这个函数中的一个参数,z是一个unsigned int性的变量,又叫做这个函数的形参,对于这种形参函数的使用,本毕设中如果要调用一个延时越z毫秒延时的函数就可以写为“delay(z)”。这个函数主要用在数码管动态扫描的时候4.3.5车流量按键模拟程序void keyscan() if(key2=0)&(s=2
37、)/在南北禁行东西通行的状态下对南北车流量检测 if(flag=0) count1+; flag=1; key2=1; else if(key2=1)&(s=2) flag=0; if(key1=0)&(s=1)/在东西禁行南北通行的状态下对东西车流量检测 if(flag=0) count2+; flag=1; key1=1; else if(key1=1)&(s=1) flag=0;以上的这段程序就是流量的模拟程序,实际上就是一个按键计数的程序,按键key1或者key2按一次则count1或者count2就加1一次,count1、count2最终的值则是表示南北、东西车流量的大小。此外,此处
38、程序中就体现了按键延时去抖。4.4单片机理论基础知识本次毕业设计,不论是在硬件还是软件都是围绕单片机展开的,所以了解单片机的基础理论知识十分重要,在本设计中主要也要了解原理有单片机定时器原理、中断原理、软件延时原理。4.4.1定时器原理单片机的定时器实质上就是一个十六位的加一计数器,其工作的基本原理其实就是给初始值,然后让它不停的加1加到预定值,给定的预定值是送入TH和TL中。该计数器运行时以加法记数,并可以从216到0溢出时会自动发出中断请求。于是,可以把计数器记满溢出到零所需的计数值,即需求的计数值设置为X,把计数初始值设定为Z可得到公式(1):Z =F-X 公式(1)式中,F为计数器的模
39、值。我们清楚的知道,计数值不是我们的最终目标,我们的要求是时间值,所以设定一次的时间为t,即定时器记一次脉冲的时间为t,它是12倍的单片机系统主频周期,若设需求时间为T,则有X=Tt。计算通式变为公式(2):T=FZ*t 公式(2)单片机定时器设定的预定值与其内部的计数器的工作方式相关。在方式0时F为8192;在方式1时F的值为216;方式2和3为28。通过上述的方法便可以得出各种在工作方式下的最大延长时间。比如本设计用的STC89C52RC单片机的晶振频率为12MHZ,经12分频后,如果使用工作方式0那么它的最大延时有8.129ms,如果使用工作方式1那么它的最大延时也有65.536ms。这
40、便是本设计中设置扫描周期是50毫秒的缘故。然而若使用软件延时则会耽搁程序流程,显然不可行,而且本文中只使用软件延时的话就不能精确的表示红绿灯的显示时长,所以本设计中需要采用单片机定时器和软件相辅相成的办法来实现本设计时间定时、延时的问题。4.4.2中断原理该毕业设计主要运用了单片机的外部中断,产生的中断信号从INT0端口和INT1端口进入,在低电平的时候起作用,单片机在每个时钟周期都会对INT0端口和INT 1端口的输入信号检测一次。对于51单片机来说,用户可以通过设置TCON中IT0位和IT1位的状态来实现是以电平方式还是以下降沿的方式来输入中断请求。用IT0举例,当IT0=0时,中断请求为
41、电平触发方式;当IT0=1时,中断请求为下降沿触发方式。本设计采用的方式为电平触发方式,设定IE0为中断产生的标志位,中断发生时则置位为1,在中断程序运行结束后,IE0自动清0。4.4.3软件延时原理本毕业设计选用12兆赫的晶振,即其工频为12兆赫,在上面的文中也了解到单片机的机器周期与单片机的主频有关,他们的关系是12倍关系,所以一个机器周期的时间是12*(1/12兆赫)=1微秒。当我们了解了每条指令的周期数后,就可以由指令的执行条数来判定1秒的具体时间,又由于单片机的执行速度很快,对于某些指令执行时间我们可以略去。本设计中设定一个初值为20的软件计数器并让T0设置为50毫秒。这样当T0定时
42、器每次到50毫秒的时候,单片机就发出并执行溢出中断请求,运行预定的中断子程序,在中断子程序里,软件计数器开始减1操作,接着判定计数器的记录结果是不是为0,若计数器结果为零则表示计时1s时间已到。本设计设定定时器定时为50ms,所以定时器T0要工作在方式1。要求初值:TC=M-T*T0=216-50ms/1us=15536=3CBOH,于是将15536/256=60装入TH0中,把15536%256=176装入TL0中。第五章、实物模拟与实现5.1德飞莱单片机开发板简介本毕业设计的实物的实现使用的是德飞莱单片机开发板,此开发板使用独立模块结构,开发板上的大多数模块都是相互分开的,仅电源端相互连接,信号接口没有使用的时候部分认定为是悬空状态,需用到该模块时,用杜邦线与对应的单片机端口