基于单片机的恒温控制系统设计与模拟(毕业论文)_第1页
基于单片机的恒温控制系统设计与模拟(毕业论文)_第2页
基于单片机的恒温控制系统设计与模拟(毕业论文)_第3页
基于单片机的恒温控制系统设计与模拟(毕业论文)_第4页
基于单片机的恒温控制系统设计与模拟(毕业论文)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、 毕 业 设 计(论 文)题目 基于单片机的恒温调控及proteus仿真摘 要温度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。在许多场合,及时准确获得目标的温度是十分重要的,近年来,温度测控领域发展迅速,并且随着数字技术的发展,温度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。 单片机具有体积小控制精度高的且价格低等诸多特点,将单片机与温度传感器相结合,构成的温度控制电路具有良好的测温温控功能。8952单片机的温度控制系统由AT89C52单片机、七段温度显示数码管、温度传感器DS18B20、工作状态LED灯等模块组成。恒温系统除有温度

2、检测功能外,还具有温度报警与外部控制功能,调节温度手动设置、可数显各项系统参数、上限温度报警等相关功能。理论证明该系统能够简单、经济,有效地提高系统的工作效率。本设计主要做了如下几方面的工作:一是确定系统温度控制的总体设计,包括实时温度的采集系统应拥有的各项功能,二是进行外部电路设计、显示电路等的设计和基本功能要求。三是进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,总体上完成了相应要求。关键词:温度控制,温度检测,AT89C52,温度显示,上限报警AbstractTraffic control system is a modern society with logistics,

3、travel etc of traffic development a unique set of public management system. To ensure the effective safety traffic, except for a series of traffic rules, still must through certain technological means to achieve. Based on analysis of traffic control, based on real-time detection sensor, adjust the i

4、mplementation technology of intelligent control, real-time monitoring, sensor adjust vehicles time algorithm and single-chip microcomputer control function is proposed, which combines the traffic control system based on single chip design scheme.The 8051 microcontroller control system consists of th

5、e traffic lights display, 8051 monolithic integrated circuits, and LED the countdown, traffic violation detection, emergency adjustment, manual mode, time as modules. In addition to the basic traffic function outside, still have time to manually set, can pass the countdown, car that forced through t

6、raffic, inspection and adjustment, transportation and processing abnormal discriminant functions. Theory shows that the system can simple, economic and effective relieves traffic, improve the crossroads capacity.This design mainly do the following aspects: one is the work of the traffic control syst

7、em design, including the crossroads, specific design and system should be restricted with each function, two is that the sensor, the hardware circuit design of the circuit and the basic function and requirement. Three is software system design, this system for I MCU assembly language, overall finish

8、ed writing software.Key Words: traffic control, sensing detection, display, and countdown AT89C52 abnormal discrimination and processing.目 录摘 要IAbstractII目 录III1 绪 论51.1单片机温度控制系统的选题背景51.2单片机交通控制系统选题的现实意义51.3单片机交通控制系统主要研究的内容82 单片机恒温控制系统总体设计92.1单片机温度控制系统的方案设计92.2单片机温度控制系统的功能要求102.3单片机恒温控制系统的基本构成及原理123

9、 系统硬件电路的设计133.1系统硬件总电路构成及原理133.1.1系统硬件电路构成133.1.2系统工作原理133.2单片机的选择153.2.1单片机的概述153.2.2 AT89C52芯片的主要性能153.2.3 AT89C52芯片的内部结构框图153.2.4 AT89C52芯片最小系统163.3其它硬件介绍及连接173.3.1温度检测方案173.3.2七段数码管显示方案183.3.3其它器件214 系统软件程序的设计234.1程序主体设计流程234.2理论基础知识244.3子程序模块设计264.4源程序314.5系统软件调试36结 论39参考文献40致 谢41361 绪 论1.1单片机交

10、通控制系统的选题背景温度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。在许多场合,及时准确获得目标的温度是十分重要的,近年来,温度测控领域发展迅速,并且随着数字技术的发展,温度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。温度控制对于社会的工业经济和人们的生活生产中有着十分重要的意义。随着单片机和传感技术的迅速发展,自动检测领域发生了巨大变化,温度自动监测控制方面的研究有了明显的进展,并且必将以其优异的性能价格比走进千家万户。1.2单片机交通控制系统选题的现实意义随着制造工艺的快速增长,以及人们对于产品的完美追求,工业生产对于外部因素愈

11、加重视,温度控制就应运而生,在人类的设计生产中,外部环境因素被人们所重视,而其中温度因素扮演着极其重要的角色。近年来,温度测控领域发展迅速,冰洁随着数字技术的发展,温度的测控芯片业相应的登上了历史的舞台,在工业农业等个领域中广泛使用。1.3单片机恒温控制系统主要研究的内容基于整个恒温控制系统的发展情况,本设计主要进行如下方面的研究:用智能,集成,且功能强大的单片机芯片为控制中心,设计出一套控制系统,以指挥外部电路进行相应的温度调节。本设计主要做了如下几方面的工作:一是确定系统控制的总体设计,包括,环境温度的实时扫描方案设计以及系统应拥有的各项功能,在这里,本设计除了有温度扫描与调节装置能实现基

12、本的温度自动调节功能,还增加了上限温度报警功能,基于实际情况,设计了双温度传感器同时采集信号求取平均值以保证采集信号的准确性,同时对双通道进行监测报警处理和键盘可设置等强大功能。 二是进行智能传感器的硬件电路,显示电路等的设计对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。三是进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机内部结构和工作情况做了充足的研究,了解中断以及延时原理,总体上完成了软件的编写。2 单片机交通控制系统总体设计2.1单片机恒温控制系统的方案设计设置两个温度传感器,分别同时采集环境温度,求取平均值数显在LED数码管上,外部通过按钮调节设置时间

13、并与所求取的平均值对比以确定外部电路工作状态,另一方面系统设置上限温度,如果环境温度超过40度,系统停止一切工作,状态处绿灯闪烁,当外部温度恢复正常后按下按键区的复位键系统重新开始正常工作。硬件上设置状态灯使外部电路工作情况一目了然,具体外部电路如图2.1所示:温度传感器DS18B20A T 8 9 C 5 2上限温度数显设定温度数显环境温度数显外部电路驱动工作状态灯显示外部按钮调节图2.1 通过具体的运行状态演示分析我们可以把整个过程归纳如下:分别取两处环境温度将平均值显示在七段数码管上。将设定温度和上限温度40度显示在七段数码管上。系统通过软件实现设定温度与环境温度想比较以确定外部电路工作

14、状态。外部电路的工作状态我们用以下图表表示:环境温度与设定温度对比外电路工作情况状态指示灯大于驱动加热继电器红灯 小于驱动降温继电器 蓝灯 等于等待灯点亮黄灯 当环境温度大于40度停止工作 绿灯闪烁表2.1 运行状态及指示灯状态2.2单片机恒温控制系统的功能要求本设计能模拟基本的恒温控制系统,用继电器代表外部调温电路的加热和降温,还能进行设定温度显示,环境温度检测及调整等功能。(1)设定温度显示系统默认初始设定温度为25度,用户可以通过按钮区的INC和DEC按钮自行调节设定温度值,以适应用户的不同需求。(2)环境检测及调整 电路设计两个温度传感器同时检测环境温度通过求取平均以确定环境温度,这样

15、可以减少环境因素对系统精确性的影响。(3)上限温度设置 除系统自动按照设定环境温度自动控制调整外,系统通过软件写入上限温度,以防止温度因素对硬件电路产生破坏,避免自动故障和意外发生,当环境温度恢复正常时可通过复位按钮恢复系统的工作。(4)紧急处理 环境温度过高的现象在所难免,但是当因外部因素引起的系统停工后毕并须要有相应的重启动功能,在这种情况下设置了复位按钮用于系统停工后的重启动。3 系统硬件电路的设计3.1系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C52单片机及外围器件构成最小控制系统,4个发光二极管分成1组红绿黄绿四色灯构成状态灯指示模块,6七段数码管构成3组温度

16、显示模块,温度传感器DS18B20温度传感器采集温度数据,若干按键组成温度设置和复位重启动按钮,以及用1个蜂鸣器进行报警。3.1.1系统硬件电路构成本系统以单片机为核心,组成一个集温度采集、处理、自动控制为一身的闭环控制系统。系统硬件电路由温度检测检测电路,单片机,状态灯,LED显示,按键,蜂鸣器组成。其具体的硬件电路总图如图3.1所示。其中P0口,用于送显六片LED数码管,P1.0和p1.1实现接通DS18B20温度传感器实现外部数据的串行采集,P1.2用于控制绿色发光二极管通过软件使其闪烁报警,XTAL1和XTAL2接入晶振时钟电路,设计采用12MHZ的晶振,一个汇编指令周期为1us,便于

17、对系统运行时间评估, P3.2即INT1温度加一INC按钮,P3.3即INT1温度减一DEC按钮,系统采用中断方式相应外部设定温度调节,相比于键盘扫描的方式改变设定温度,中断方式具有受程序扫描周期影响小的特点,P1.5和P1.6分别接通两个继电器以实现外部温控电路的驱动,P1.7连接等待灯,表示实时温度与设定温度一致,P3.0、P3.1对环境温度显示的两个数码管进行片选,P3.4、P3.5对上限温度显示的两个数码管进行片选P3.6、P3.7对设定温度显示的两个数码管进行片选。因为系统程序未超过4KB,所以为添加外部ROM,故将EA位电平拉高。图3.1 3.1.2系统工作原理系统上电之后,系统默

18、认设定温度为25摄氏度,上限温度为40摄氏度,外部信号采集后,立即求取平均值,系统自动判断环境温度值,并驱动继电器工作,并将工作情况反应在工作状态灯处。,设定温度通过外部按钮区的INC和DEC按钮实现加一减一,此处通过软件延迟方式去抖动,延时时间为200ms可以在一定程度上去除按钮的抖动。接下来,系统显示状态灯及LED数码管,将状态码值送至P1.5、P1.6、P1.7口,并将状态灯与外部驱动电路连接,以实现外部电路与状态显示的同步化,而温度显示通过数码管的动态显示实现6个数码管显示以1.2秒的周期不断刷新显示。但温度高于40度时系统停工,工作灯绿灯闪烁,当外部温度恢复正常后可以通过START/

19、RES按钮实现系统的重启动。当然,还要开启两个外部中断,其一为设定温度的加一,一旦信号触发,中断开始,进入中断服务子程序,设定温度由系统默认温度25度实现加一功能,200ms后系统中断返回,并于下一周期数显在数码管上。其二为设定温度的减一,一旦信号触发进入相应的中断子程序,设定温度由系统默认温度25度实现减一功能,200ms后系统中断返回,并于下一周期数显在数码管上,若为自动模式,则须将检测到的车流量数据处理一次,判断两个方向的交通轻重缓急状况,再调整下次状态循环的红绿灯时间,以达到自动控制的目的。3.2单片机的选择3.2.1单片机的概述单片微型计算机简称单片机,又称微控制器,嵌入式微控制器等

20、,属于第四代电子计算机。它把中央处理器、存储器、输入/输出接口电路以及定时器/计数器集成在一块芯片上,从而具有体积小、功耗低、价格低廉、抗干扰能力强且可靠性高等特点,因此,适合应用于工业过程控制、智能仪器仪表和测控系统的前端装置。正是由于这一原因,国际上逐渐采用微控制器(MCU)代替单片微型计算机(SCM)这一名称。“微控制器”更能反映单片机的本质,但是由于单片机这个名称已经为国内大多数人所接受,所以仍沿用“单片机”这一名称。单片机的主要特点有:1)具有优异的性能价格比。2)集成度高、体积小、可靠性高。3)控制功能强。4)低电压,低功耗。3.2.2 AT89C52芯片的主要性能芯片AT89C5

21、2是ATMEL公司生产的带2K字节快闪存储器的8位单片机。它具有如下的一些特性:指令和89C51产品兼容 内含2K字节可重复编程快闪存储器耐久性1,000写/擦除周期 2.7V6V的工作电压范围全静态操作0Hz24MHz 二级程序存储器加锁内含128*8位内部RAM 15根可编程I/0引线2个16位的计数器/定时器 6个中断源带有可编程串行通讯口 可直接驱动LED输出片内模拟电压比较器 低功耗空载和掉电方式另外,该单片机还具有体积小,价格低等特点。3.2.3 AT89C52芯片的内部结构框图AT89C52是一带有2K字节快闪可编程可擦除存储体(EEPROM)的低电压、高性能8位CMOS微型计算

22、机。它采用ATMEL的高密非易失存储技术制造并和工业标准MCS51指令集和引脚结构兼容。通过在单块芯片上组合通用的CPL1和快闪存储器,ATMEL公司生产的AT89C52是一强劲的微型计算机,它对许多嵌入式控制的应用,提供了一种高度灵活和成本低的解决办法。图3.2为AT89C52的内部结构框图。图3.2AT89C2051内部结构图3.2.4 AT89C52芯片最小系统一个最简单的单片机系统包括晶振、复位、电源、系统的输入控制、输出显示,以及其他外围模块(如通信、数据采集等)。(1)时钟电路首先介绍一下单片机的晶振电路,即时钟电路。单片机的工作流程,就是在系统时钟的作用下,一条一条地执行存储器中

23、的程序。单片机的时钟电路由外接的一只晶振和两只起振电容,以及单片机内部的时钟电路组成,晶振的频率越高,单片机处理数据的速度越快,系统功耗也会相应增加,稳定性也会下降。单片机系统常用的晶振频率有6MHz、110592MHz、12MHz、本系统采用110592MHz晶振,电容选22pF或30pF均可。(2)复位电路系统刚上电时,单片机内部的程序还没有开始执行,需要一段准备时间,也就是复位时间。一个稳定的单片机系统必须设计复位电路。当程序跑飞或死机时,也需要进行系统复位。复位电路有很多种,有上电复位,手动复位等。 (3)EA脚的功能及接法单片机的EA脚控制程序从内部存储器还是从外部存储器读取程序。由

24、于现在单片机内部的flash容量都很大,因此基本都是从内部的存储器读取程序,即不需要外接ROM来存储程序,因此,EA脚必须接高电平。3.3其它硬件介绍及连接3.3.1车流量检测电路及模拟为了达到对温度的控制功能,需要对环境温度进行检测。当前比较流行的温度检测器件,是一种串口温度传感器DS18B20。其工作原理是通过内部电路采集环境温度模拟信号并通过内部AD转化电路将采集的模拟信号转换为数字信号,再将12位数字温度信号串行传输到单片机内部,考虑到单片机系统的便利性,本次采用DS18B20具有众多优点,首先由于DS18B20内部集成AD转换电路节约了外部电路另需添加AD电路的成本,其次由于是串行传

25、输,节省了单片机为数不多的管脚,再者由于DS18B20采用TO-92B封装,在一定程度上节约了PCB面积。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。本次设计检测电路如下图3.4所示。图3.4 温度检测电路本次设计拟使用单片机内存

26、28H和29H分别存储温度信号,DS18B20串口通信为12位二进制数据,因为12位转化时每一位的精度为0.0625度,而设计要求是保证温度精度在个位,不要求显示小数,所以可以抛弃29H的低4位,将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度。3.3.2按键电路及模拟在系统运行时,设定温度是可以自行调整的,本次设计提供了良好的人机界面,使用者可通过按键实时改变设置,按键采用中断方式,提供了温度改变的实时性。设计提供一个START/RES按钮用于温度报警后的重启动。按钮电路如图3.5所示。图3.5按钮检测电路其基本设计思想是:通过按钮INC接通P3.2

27、实现外部中断0通过软件更改设定温度加一;通过按钮DEC接通P3.2实现外部中断1通过软件更改设定温度减一;START/RES按钮实现系统在报警状态下的重启动,因为系统报警子程序很简短,所以不需要考虑程序时序问题。3.3.3七段LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。以八段共阳管为例,它有7个发光二极管(比八段少一个发光二极管,用来显示小数点),每个发光二极管的阳极连在一起,如图3.6所示。这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低

28、电平来加以控制。为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。图3.6 LED数码管LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如 dp,g,f,e,d,c,b,a全亮显示为,采用共阳极连接驱动代码,代码表如下表3.1所示。显示数值dp,g,f,e,d,c,b,a驱动代码011010000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H表3.1

29、驱动代码表相应在程序软件上,可以通过调用程序给定的数值通过除十确定余数和商从而确定温度值的个位与十位,然后再通过DPTR调取七段数码管断码表TAB的代码实现相应值的数显。LED7段数码管的设置为每个方位上的一对2为显示器。四个方位上总共用7个LED接在单片机的IO口上。虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。如图3.7所示,其中A,B分别是P0,P1的网络标号。图3.7 LED连接图3.3.4其它器件(1)发光二极管根据本设计的特点,状态灯的显示不可少,状态灯显示采用普通的发光二极管。设置4个LED灯使现场运行状况一目了然,如果红灯亮,外部加热电路运行,如

30、果绿灯亮,外部降温电路运行,如果黄灯亮,外部调温电路处于等待状态。如果绿灯亮,系统曾出现过报警信号,现已排除。如果绿灯闪烁,温度超过上限值系统停工以保证微电子器件的安全。图3.8 状态灯的连接(2)外部驱动继电器本设计采用继电器驱动外部电路,通过使用NPN三极管进行驱动控制,当P1.6和P1.7引脚输出为高电平,NPN导通,继电器接通;当P1.6和P1.7引脚输出低电平时,NPN截止,外部继电器停止工作。如下图3.9所示图3.9 继电器连接(3)等待灯本设计设置了外部电路的第三种状态等待状态。高电平有效,当环境温度与设置温度一致时系统停止外部调温电路运行点亮等待灯。如下图3.10所示图3.10

31、 等待灯示意图4 系统软件程序的设计4.1程序主体设计流程全部控制程序实际上分为若干模块:按键设置处理程序,状态灯控制程序,LED数码管显示程序,消抖动延时程序,温度扫描处理程序,上限温度报警程序,中断服务子程序,设定温度实时稳定比较程序等。整个软件程序方面主要分两大部分:实时温度扫描程序,温度对比判断程序。系统流程图如图4.1所示。传感器初始化并写入工作方式 写入完成开始接受采样值调用转换控制子程序保存转换值显示设定温度显示当前温度NY图4.1 系统总流程图首先是温度扫描程序,89C52通过对P1.0和P1.1扫描温度传感器,确定实时温度,再与系统内部的设定温度对比,根据ACC累加器的到按键

32、处理程序。按键处理结果可设置两种工作模式:红绿灯时间设置模式和红绿灯时间自动模式,次程序相当于系统的模式设置,若想重新设置则要按下复位键。设置过后进入50ms扫描程序。50ms扫描程序开始后,先刷新显示模块,若为自动模式则接下来要计数车流量,然后扫描紧停信号和违规信号,若捕获则调用中断,中断服务子程序主要启动蜂鸣器,直至恢复键按下。50ms已到则重新扫描。扫描20次之后计时到达1s则时间数据减1,在显示模块中修改显示缓冲区内容。在半个状态对换时,车流量计数程序在一个状态变换循环先后计数两个方向的车流量,然后调用红绿灯时间调整程序,更新红绿灯时间。当前状态时间已到,则判断次状态装入相应数据,然后

33、进入下一状态。4.2理论基础知识(1)定时器原理定时器工作的基本原理其实就是给初值,让它不断加1直至减完为模值,这个初值是送到TH和TL中的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为C,把计数初值设定为TC 可得到如下计算通式:TC=M-C式中,M为计数器模值。计数值并不是目的,目的是时间值,设计1次的时间,即定时器计数脉冲的周期为T0,它是单片机系统主频周期的12倍,设要求的时间值为T,则有C=TT0。计算通式变为:T=(MTC)T0模值和计数器工作方式有关。在方式0时M为8192;在方式1时M的值为6553

34、6;在方式2和3为256。就此可以算出各种方式的最大延时。如单片机的主脉冲频率为12MHZ,经过12分频后,若采用方式最大延时只有8.129毫秒,采用方式最大延时也只有65.536毫秒。这就是为什么扫描周期为50ms的原因,若使用软件则会耽搁程序流程,显然不可行。相反,时间计时方面却不可能只用计数器,因为显然秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软件相结合的办法才能解决这个问题。(2)软件延时原理MCS-51的工作频率为12MHZ,机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12MHZ)=1us。我们可以知道具体每条指令的周期数,这样我

35、们就可以通过指令的执行条数来确定1秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽略不计。我们设定一个初值为20的软件计数器和使T0定时50毫秒。这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减,然后判断它是否为零。为零表示秒已到。设定定时器需要定时50毫秒,故T0必须工作于方式。要求初值:TC=M-T*T0=216-50ms/1us=15536=3CBOH,程序如下: WAIT: JNB TF0,WAIT1CLR TF0MOV TH0,#01HMOV TL0,#0B01HDJNZ R2,WAIT (3)中

36、断原理本系统主要使用了外部中断,中断信号有引脚INT0和INT1输入,低电平有效,CPU每个时钟周期都会检测INT0和INT1上的信号,8051允许外部中断以电平方式或负边沿方式两种中断方式输入中断请求信号,可由用户通过设置TCON中IT0和IT1位的状态来实现。以IT0为例,IT0=0,为电平触发方式,IT0=1,为负边沿触发方式,本设计采用电平方式,IE0为其中断标志位,有中断信号则置位,中断服务子程序响应后,IE0自动清零。IE中的EA为允许中断的总控制位,为1开启,EX0为外部中断允许控制位,为1开启。在优先级的允许下,一旦有外部中断信号产生,单片机CPU首先保护断点,PC值进栈,然后

37、执行相应的中断服务子程序,执行完后,用RETI指令返回,此时CPU会从堆栈中取保存的断点地址,送回PC,程序再正常执行。(4)红绿灯时间调整原理车流量检测传感器可对单片机控制系统提供实时数据,系统对所获数据进行模糊处理。实现红绿灯模糊控制必须解决对当前十字路口的交通状况的检测,并完成如下工作:1.输入量的采集,系统采集两个输入量,即两个方向的车流量。2.输出量的确认,即红绿灯时间值。3.设计将输入映照到输出的模糊规则。4.决定被激活模糊规则的组合方式和清晰处理,生成精确的输出控制信号。为了采集上述数据,在十字路口的四侧共设置2个传感器。分别检测两个方向的车流量,车流量检测不是最终目的,在每半个

38、循环周期,系统会检测到两个方向的车流量数据,除以时间,那么就可以得到单位时间的车流量,然后比较两个方向单位时间车流量多少,以确定下一次循环红绿灯时间,达到调整的目的。如,在一次循环过后,检测到南北向车流量(设此时南北绿灯,东西红灯时间为20s)为100辆,东西向车流量(设此时东西绿灯,南北红灯时间为30s)为90辆,则单位时间车流量南北向和东西向的比例是:(100/20)/(90/30)=1.6,显然南北向交通严重,那么现在就可以把南北绿灯,东西红灯时间调长。上面的比例1.6还是一个确定数值,究竟多少为多,多少为少,这就必须设定模糊规则,划定几个值域范围,分别对应到具体的调整时间上,系统就调用

39、具体的输出值了。4.3子程序模块设计(1)按键扫描程序首先程序不断扫描模式设置键,分别记为:S键,J键,F键对应端口的3.6,P3.2,P3.7,低电平有效,按键顺序是指定的,若直接按F键,则为自动调整模式,然后进入下一程序;若先按S键,再按J键,F键则为设置时间模式,然后进入下一程序。程序的开始要判断是否有键按下,可以不断将S键值和F键值相与,与值为1则表示没有键按下,为0则表示有键按下,程序如下:K1: MOV C, P0.0 ANL C, P0.1JB C, K1 接下来要判断具体是那个键,若为F键,则将自动标志位置1,进入下一程序,否则为S键,则表示设置南北绿灯时间,用R0存值,按1下

40、加1,同时还需判断此时J键是否按下,若按下,则表示南北绿灯时间设置完毕,开始设置东西绿灯时间,用R1存值,同样按1下加1 ,同时判断此时F键是否按下,若按下,则表示时间设置完毕,进入下一程序。在这个过程中,S,J键的计数是循环的,从初值20开始,加到40则循环回到20。如判断S键程序如下:CJNZ R0, #40, V1MOV R0, #20V1: INC R0 (2)状态灯显示及判断在本设计中,实际控制的灯只有6个,即:东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯。定义IO端口如下,其中均是低电平有效。H_GREEN BIT P2.2H_YELLOW BIT P2.3L_RED

41、 BIT P2.4L_GREEN BIT P2.5L_YELLOW BIT P2.6共有4钟状态:东西红灯亮,南北绿灯亮(11011101/DDH);东西红灯亮,南北黄灯亮(10111101/BDH);东西绿灯亮,南北红灯亮(11101101/EDH);东西黄灯亮,南北红灯亮(11100111/E7H)。括号中是P2端口8个引脚值P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0以及对应的十六进制码。在用于显示发光二极管时,直接由MOV指令将十六进制码送入P2口。刚才的4个状态是依次变换的,这就要涉及到状态的判断和衔接了。先把P2端口的值与所有的4个状态码比较,若相

42、同则判断成功当前状态,再把下一状态的状态码送显P2即可。程序如下:MOV A, P2CJNZ A, #0DDH,D1MOV P2, #BDHD1: CJNZ A, BDH,D2MOV P2, #EDHD2: CJNZ A, #EDH,D3MOV P2, #E7HD3: CJNZ A, #E7H,YMOV R2, #DDH(3)LED倒计时显示LED计时每1秒都要刷新1次,那么计时满1秒时就要将存储时间的工作寄存器R4减1,然后送入LED显示程序中显示。下面要将时间数据R4的十位,个位分开送显P1,P0端口,首先将R4除以10,整数即十位放在A中,余数即个位放在B中,设置7段LED显示数据的数据

43、表,用数据指针寄存器DPTR指向数据表的首地址,再加上A中的偏移量,就可以指向十位数字,然后送显即可,个位显示同理。具体程序如下:MOV A, R4 MOV B, #10DIV A, BMOV DPTR, #LEDMAPMOVC A, A+DPTRMOV P1, AMOV A, BMOVC A, A+DPTRMOV P3, ALEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH(4)车流量检测中断服务子程序车流量检测是用外部中断引脚P3.3即INT1捕获到一个低电平,则进入相应的中断服务子程序,在子程序中,用R5计南北向车流量,用R6计东西向车流

44、量,设车向标志位为01H,判断车向,程序如下:JNB 01H, U INC R5U: INC R6(5)紧停及违规中断服务子程序紧停按键和违规信号传感器均连接到外部中断引脚P3.2,即INT0捕获到一个低电平,则进入该中断,中断程序中先把蜂鸣器P3.4端口置0,启动蜂鸣。并且等待恢复键F键P3.7按下,然后关闭蜂鸣返回。INT0: SETB P0.5 JB P0.0, $LCALL DELAYCLR P0.5RETI(6)红绿灯时间调整程序根据红绿灯时间调整原理,一个周期下来,R5,R6中分别存储着南北,东西的车流量,接下来求单位时间车流量,此时南北向时间,东西向时间分别存储在R0,R1中,则

45、两个方向的流量比例为(R5/R0)/(R6/R1)=(R5*R1)(R6*R0),显然该比例是1左右带小数的值,然而单片机程序中只取整数,重要的数据信息就会丢失,所以本设计中首先将(R5*R1)乘以10,比例就变为10左右的值。将该比例值放在A,然后进行时间调整。由于受到多方面的限制,时间调整在此只划定3个范围。比例0到0.7为一个范围,0.8到1.5为一个范围,1.5以上为一个范围。第一范围显然表明东西向交通严重,应将时间调长;第二范围表明两向相当,可设置一样的时间,第三范围表明南北向交通严重,应将该向时间调长。具体设置如下表4.1.南北与东西向比例00.70.81.51.5及以上调整南北向

46、时间203040调整东西向时间403020表4.1 比例及调整时间由表可知,对应的时间调整也只有三种,分别是20,40;30,30;40,20.显然在实际应用中这样简单的处理难以尽如人意,但在此处,本设计只是模拟大致的调整过程,以上要求的程序如下:CJNZ A, #7 M1M2: MOV R2, #20MOV R1, #40SJMP OUTM1: JB C, M2CJNZ A, #15 N1N2: MOV R0, #30MOV R1, #30SJMP OUTN1: JB C, N2MOV R0, #40MOV R1, #20OUT: CLR R5CLR R6RET(7)消抖动程序另外,在按键计

47、数的过程中,还存在机械抖动与软件方面的矛盾,即当程序检测到了有按键按下,则会计一次数,但是实际上,按键闭合后在微观上还会弹起,然后闭合,一直到达稳定,显然后面的弹落是无效的,为了使程序避免这个问题,可以在检测到首次闭合时,调用一定时间的延时程序。此处延时程序完全用软件完成,利用程序执行一条指令的时间,再加上两次累减嵌套,程序如下:DELAY: MOV R2, #14H A1: MOV R7, #0FFHDJNZ R2, $DJNZ R7, A1RET4.4源程序H_RED BIT P2.1 ;定义IO端口H_GREEN BIT P2.2H_YELLOW BIT P2.3L_RED BIT P2

48、.4L_GREEN BIT P2.5L_YELLOW BIT P2.6;*;主程序,选择设置红绿灯时间模式或自动调整模式;*ORG 0000HLJMP MAINORG 0003H ;中断入口LJMP INT0ORG 0030HMAIN: MOV R3, #20 ;用于嵌套50ms软件方法计时1sMOV R0, #20 ;预设值红绿灯时间MOV R1, #20CLR EX0K1: MOV C, P3.7 ;等待检测何种模式按键按下ANL C, P3.2JB C, K1JNB P3.7, F ;F键按下为自动模式,进入扫描K2: JNB P3.2, S ;S键按下并等待计数次数SJMP K2F:

49、LCALL DELAYMOV R0, #30MOV R1, #30SETB 00HSETB EASETB EX1SJMP STARTS: LCALL DELAYCJNZ R0, #40, V1MOV R0, #20V1: INC R0JNB P0.1, $JNB P3.6, J ;J键按下并等待计数次数SJMP K2J: LCALL DELAYCJNZ R1, #40, V2MOV R1, #20V2: INC R1JNB P3.6, $JNB P3.7, START ;设置完毕为设定时间模式,进入扫描JNB P3.6, JMOV P2, #0DDH ;预设信号灯状态,时间和车向MOV R4,

50、 R0SETB 01HSETB EX0;*;程序开始,进行每50ms扫描;*START: MOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0HCLR TF0SETB TR0 ;开始50ms计时DJNZ R3, Y ;1s是否计时完毕MOV R3, #20DJNZ R4, Y ;本状态是否结束,并进行下一状态设置MOV A, P2CJNZ A, #0DDH,D1MOV P2, #BDHMOV R4, #5D1: CJNZ A, BDH,D2MOV P2, #EDHMOV R4, R1CLR 01HD2: CJNZ A, #EDH,D3MOV P2, #E7HMOV

51、R4, #5JNB 00H, D3LCALL DATAD3: CJNZ A, #E7H,YMOV R2, #DDHMOV R4, R0SETB 01HY: MOV A, R4 ;LED倒计时显示MOV B, #10DIV A, BMOB DPTR, #LEDMAPMOVC A, A+DPTRMOV P1, AMOV A, BMOVC A, A+DPTRMOV P0, ALEDMAP: DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90HJNB 00H, WAIT ;判断是否要计数车流量JB P3.3, WAIT ;判断是否有车经过WAIT: JNB TF0, W

52、AIT ;50ms一次扫描完毕SJMP STARTINT1: JNB 01H, U ;判断车向INC R5U: INC R6RETIINT0: SETB P3.4 ;中断服务子程序,闯红灯或紧停按键JB P3.7, $LCALL DELAYCLR P3.4RETIDATA: MOV A, R6 ;车流量数据处理及红绿灯时间调整MOV B, R0MUL A, BMOV R6, AMOV A , R5MOV B, R1MUL A, BMOV B, #10MUL A, BMOV B, R6DIV A, BCJNZ A, #7 M1M2: MOV R2, #20MOV R1, #40SJMP OUTM1: JB C, M2CJNZ A, #15 N1N2: MOV R0, #30MOV R1, #30SJMP OUT

温馨提示

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

评论

0/150

提交评论