停车场车位远程监控与显示系统设计_第1页
停车场车位远程监控与显示系统设计_第2页
停车场车位远程监控与显示系统设计_第3页
停车场车位远程监控与显示系统设计_第4页
停车场车位远程监控与显示系统设计_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

太原工业学院毕业设计(论文)学 位 论 文停车场车位远程监控与显示系统设计作 者 姓 名: 吴志兵 学 科 专 业: 测控技术与仪器 学 号: 指 导 教 师: 黄刚(副教授) 完 成 日 期: 2014-06-15 太原工业学院Taiyuan Institute of TechnologyI太原工业学院毕业设计(论文)诚信申明本人申明:本人所提交的毕业设计(论文)停车场车位远程监控与显示系统设计的所有材料是本人在指导教师指导和同学讨论下研究、写作、完成的成果,设计(论文)中所引用他人的无论以何种方式发布的文字、研究成果,均在设计(论文)中加以说明;有关教师、同学和其他人员对我的设计(论文)的写作、修订提出过并为我在设计(论文)中加以采纳的意见、建议,均已在我的致谢辞中加以说明并深致谢意。本设计(论文)和资料若有不实之处,本人不承担一切相关责任。特此申明。本人签名: 2014年06月15日毕业设计(论文)任务书设计(论文)题目: 停车场车位远程监控与显示系统设计 系部: 电子工程系 专业: 测控技术与仪器 学号: 学生: 吴志兵 指导教师(含职称): 黄刚(副教授) 1课题意义及目标 随着交通工具的越来越普及。汽车作为人类社会中最主要的交通工具之一,起着重大作用。汽车的数量与日俱增,使得找到一个空车位停放车辆成了司机们的难题。私家车的日益普及,中小型城市的车位管理问题也日益突出。而现有的停车管理系统大都是基于大中城市,所需成本较高。本项目拟设计的车位监控系统能够进行车位信息的显示,为广大的司机节约寻找车位的时间,同时节约停车场的有限资源,充分提高泊位的利用率,缓解城市泊车压力。 因此,针对上述的情况,开发一套能够监测停车场空闲车位并显示的装置,使得司机在进入校园(或厂区)大门的同时,能对校园(或厂区)里停车场的车位情况一目了然,使之达到快速、合理地选择停车地点的目的。2主要内容随着车辆数目的与日俱增,司机通常很难快速的找到一个空闲的车位,这使得停车场常常会出现交通阻塞、车多位少的情况。想针对上述的情况,拟开发一套能够监测停车场空闲车位并远程显示的装置,使得司机在进入校园(或厂区)的时候,能对校园(或厂区)里停车场的空闲车位数目一目了然,达到快速、合理地选择停车地点的目的。 本智能停车管理系统基于单片机平台,采用传感器检测和数码管显示技术,主要用于中小型城市的车位管理问题。提供信息显示功能。传感器检测停车位是否有车辆,并将信息及时传送到显示屏;显示屏将传感器传送的信息通过屏幕显示出来,为车主提供最新的车位信息,方便车主停车。3 主要参考资料1张剑平.智能化检测系统及仪器M.第二版.北京:国防工业出版社,2009.7.2冯博琴, 吴宁.微型计算机原理与接口技术第三版M.清华大学出版社,2011.3李广弟.单片机基础M.北京航天航空大学出版社,2005.4郭天翔.51单片机C语言教程M.电子工业出版社,2008.4进度安排设计(论文)各阶段名称起 止 日 期1检索相关文献,熟悉课题背景、任务,撰写开题报告;2月20日3月10日2掌握远程无线控制的原理以及相关技术在国内、外的发展现状及趋势;提出可行的设计方案;3月10日4月01日3对硬件电路和相关软件进行设计;通过仿真软件和设计的软、硬件模块进行仿真实验和相关软、硬件试验;4月01日5月01日4根据仿真和相关测试结果对系统进行改进,并进一步优化和完善测试系统;5月01日5月20日5撰写毕业设计论文,进行论文答辩5月20日6月15日 停车场车位远程监控与显示系统设计 摘要本文主要是介绍利用51单片机和外围传感器模块完成停车场车位统计并加以显示的设计。设计的主要目的是能够简单直观地一目了然地看到停车场剩余车位数目,使司机能够快速知道车库的剩余车位数目,方便司机驾车进出车库,避免了车库门口的拥堵现象。该设计利用STC89C51或AT89C51单片机作主控芯片,配合高精准度的光敏传感器模块进行车辆识别,再利用单片机C编程语言设计出基本功能并与实际相结合。本文设计能够实现以下三大功能:第一,准确实现对剩余车位数的统计;第二,实现停车场出口与入口间的通信;第三,它可以准确分辨进出的物体是否为车辆。关键词: 停车场剩余车位,远程监控,光敏传感器,51单片机,Parking lot parking remote monitoring and display system designingAbstractThis article is mainly to introduce using the 51 MCU and peripheral sensor module to complete the design of parking spaces and displays statistics. The main purpose of the design is simply and intuitively ,letting drivers to be able to see clearly the number of remaining parking spaces, which can allow the drivers know the number of the remaining parking garage quickly. So,it is easy for drivers to drive in or out of the garage, the garage door to avoid the congestion. The designacknowledges STC89C51 or AT89C51 microcontroller as the master chip, with the use of high accuracy photosensor vehicle identification module. Microcontroller C programming language can design the basic functions and design combined with reality. This design can achieve the following three functions: first, it can achieve accurate statistics on the number of remaining spaces; Second, itcan achieve communication between the parking lot exitus and entrance; Third, it can accurately distinguish what things is passing by between the object and the vehicle.Key words:The number of the remaining parking garage, Remote monitoring,Photosensor,C51 MCU目 录1 绪论11.1 问题的提出11.2 研究的背景与意义11.3 国内外研究进展11.4 主要实现的功能22 车位监控系统硬件电路介绍32.1 系统概述32.2 单片机的介绍42.2.1 单片机概述42.2.2 AT89C51单片机42.2.3 AT89C51单片机最小系统52.3 车辆检测模块的介绍72.3.1 车辆检测的光敏传感器模块72.3.2 光敏传感器模块硬件电路72.4 显示模块82.4.1 数码管的介绍82.4.2 LED数码管的驱动方式92.4.3 数码管与单片机的连接102.5 出入口间的通信模块113 车位监控系统软件的设计133.1 汇编语言与C语言133.2 编程工具Keil的介绍143.3 软件程序的组成183.4 部分程序介绍193.4.1 程序中引脚的定义193.4.2 定时器初始化函数203.4.3 数码管显示程序的设计203.4.4 车辆检测程序的设计213.4.5 NRF24L01无线模块程序的编写223.4.6 系统的主函数274 结论与展望295 总结30参考文献31致谢32附录A:电路图33附录B:系统程序34431 绪论1.1 问题的提出 近年来,随着经济建设的快速发展,汽车带给人们快乐的同时也带来了越来越突出的难题:城市交通问题日益严重,停车问题接踵而至,一个不到10平方米的停车位,牵动着社会的“神经”,停车场车位不足的问题越来越突出。目前,有偿使用停车场是这个问题最为有效的解决方式,这就使得停车场管理的重要性越来越受到重视。然而目前的大部分停车场管理系统都是采取人工判别车型、人工放行以及人工引导车辆入库等比较传统的管理模式,这在很大程度上制约着城市的发展。1.2 研究的背景与意义车辆数目的日益暴涨,使得司机找到一个空车位停放车辆成了难题。某些大型停车场都采取进场刷卡制度,因此比较容易实现该停车场空车位的自动统计和显示。但是对于大多数没有刷卡设备、甚至是有多个停车场且总占地面积较大的单位或企业,例如高校、企业园区等,司机们想要快速地找到一个空车位是件困难的事。因此,我们想针对上述的情况,开发一套能够监测停车场空闲车位并远程显示的装置,使得司机在进入校园(或厂区)的时候,能对校园(或厂区)里停车场的空闲车位数目一目了然,达到快速、合理地选择停车地点的目的。1.3 国内外研究进展随着科技的进步,停车场管理系统的功能也逐渐完善。现代停车场最明显的特点就是智能化,它采用很多先进的工艺及材料。目前,国外停车场已经基本完成了自动化,不需要人工干预。已经用先进的非接触类型的收费方式取代了接触读写类型的收费方式。国外停车场设备精良,采用高科技提高产品质量,系统可靠性已经相当高。不需要人工计费收费是国外停车场的一个显著特点。国外停车场系统居多都具备泊车位引导系统、车位报警系统,以及车位查询系统,管理系统非常先进。有些停车场收费系统能够直接联网,能在一个区域里随意查询车位,能在区域内任何一个停车场任意停车。这种新型系统是网络给人们生活带来的便利之一。但是,此类停车场管理系统价格昂贵、技术复杂、维护成本较高。近年来,在国内私家车迅速增长的情形下,一些大型城市面临“车多位少”的困境,迫使很多车主把车直接停在道路上,这一方面影响交通畅通,带来交通安全隐患;另一方面也不利于车辆的管理,车辆容易被破坏或被偷盗,给车主带来财产损失。与此同时,随着城市停车场规模也日益大型化,加之服务车辆繁杂,人工管理的效率和可靠性已难以满足其在管理上提出的要求,此时,运用监控、诱导、路闸等手段实现车辆的智能化管理应运而生。 国内停车场管理系统已经从最早的引进向自主研发阶段迈进。在这过程中应用了很多国外先进的科技和理念。许多停车场管理系统已经在国内自主研发和生产,基本上跟上了国际上的先进步伐。但是,某些核心技术仍是国外厂商的专利。目前,国内停车场管理系统厂商普遍面临的两大问题:如何提高停车场管理系统的设备水平,以及如何提高停车场管理系统核心技术的研发水平。远距离射频电子标签、非接触式 IC 卡、车辆图像识等技术已广泛被国内厂商应用。1.4 主要实现的功能本论文介绍了一种停车场监控系统模型。它不但能在任意时间内,根据停车场出入口进出车辆的数目,准确地统计能够停泊车辆的空闲车位数量,并且使用方便、自动而可靠。而且能够避免停车场入口处及出口处的交通阻塞现象,同时还能满足使用者和管理者对停车场效率、安全、性能以及管理上的需要,不会造成大量资源的流失。2 车位监控系统硬件电路介绍2.1 系统概述 本系统包括:传感器模块、电源模块、控制计数模块、数码管显示模块等。它可以实现显示当前停车场内车辆的数目及状态以及剩余车位数等功能。 系统框图如图2.1所示: 入口传感器检测 显示模块 单片机电源模块 出口传感器检测 图2.1 系统框图 具体施行方案如下: 我们采用AT89C51型号单片机作为主控制器,完成数据的处理以及控制各个外围模块,通信部分我们可以采用NRF24L01无线模块加以实现,为了便于模拟我们采用共阳极数码管作为车位数量的显示装置;采用激光配合光敏传感器作为车辆感知模块,当有车辆进出时,空闲车位数目会在此基础上加一减一,以此完成对车库剩余车位的统计。检测措施为:将两个点状激光头、两个红外传感器,间隔一定的距离,安装于停车场入口处,当有车辆进出停车场时,传感器即可感知到车量是出还是人,并将数据通过安放在出口处的NRF24L01无线模块发送给安放在进口处的NRF24L01无线模块。进口处无线模块又与单片机相连接。这样,进口处的单片机收到数据后,会在原有的空闲车位数上增一或减一,并将数据传送至显示处,通过数码管显示装置实时显示当前的空闲车位情况。2.2 单片机的介绍2.2.1 单片机概述 单片机(Single chip microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。单片机的应用相当广泛。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。 2.2.2 AT89C51单片机AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机片内4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。AT89C51单片机可为你提供许多高性价的应用场合,可灵活的应用于各种控制领域。如下图2.2所示为AT89C51各引脚的封装图。 图2.2 单片机AT89C51 AT89C51提供以下标准功能:与MCS-51产品指令系统的全兼容,4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件的可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但震荡器停止工作并禁止所有部件工作直到下一个硬件复位。 2.2.3 AT89C51单片机最小系统 单片机复位电路时钟电路输入输出设备诶 电源对51系列单片机来说,最小系统一般应该包括:单片机、时钟电路、复位电路、输入/输出设备.如下图2.3所示。 图2.3 单片机最小系统框图图2.4 51系列单片机最小系统下面就图2.4 所示的单片机最小系统各部分电路进行详细说明。1. 时钟电路 XTAL1 和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图2.4中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。2. 复位电路在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。MCS-5l 系列单片机的复位引脚RST(第9引脚)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST 持续为高电平,单片机就处于循环复位状态。复位操作通常有两种基本形式:上电自动复位和开关复位。图2.4中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET相连,电压全部加在了电阻上,RESET(第9引脚)的输入为高,芯片被复位。随之VCC给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位。3.EA/VPP的功能和接法51 单片机的EA/VPP(31 脚)是内部和外部程序存储器的选择管脚。当EA 保持高电平时,单片机访问内部程序存储器;当EA 保持低电平时,则不管是否有内部程序存储器,只访问外部存储器。对于现今的绝大部分单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器。在本实验套件中,EA 管脚接到了VCC 上,只使用内部的程序存储器。4. P0 口外接上拉电阻51单片机的P0端口为开漏输出,内部无上拉电阻。故在当做普通I/O输出数据时,输出级是漏极开路电路,要使“1”信号(即高电平)正常输出,必须外接上拉电阻。2.3 车辆检测模块的介绍为了准确分辨出进出的物体以及统计车库剩余车位数目,车辆进出口的检测我采用点状激光头配合光敏传感器模块感知车辆的进出。现介绍光敏传感器模块。2.3.1 车辆检测的光敏传感器模块1.可以检测周围环境的亮度和光强2.灵敏度可调(图中蓝色数字电位器调节)3.工作电压3.3V5V4.输出形式 :a 模拟量电压输出 b 数字开关量输出(0和1)5.设有固定螺栓孔,方便安装6.小板PCB尺寸:3cm * 1.6cm7.电源指示灯(红色)和数字开关量输出指示灯(绿色)8.比较器采用LM393芯片,工作稳定9.小板接口说明(4线制) VCC 外接3.3V5V电压GND外接GNDDO数字量输出接口(0和1)AO模拟量输出接口2.3.2 光敏传感器模块硬件电路 本次设计选取的光敏传感器模块做工精细,工作稳定。图中给出光敏传感器模块内部硬件电路图,其中LM393是双电压比较器集成电路,工作电源电压范围宽,输出与TTL,DTL,MOS,CMOS 等兼容,输出也可以用开路集电极连接“或”门。如下图2.5所示。 图2.5 光敏传感器模块硬件电路图当传感器模块选择DO(数字量输出)时,DO引脚可直接与单片机I/O口相连接,通过单片机来检测高低电平,由此来检测环境的光强改变。模块在无光条件或者光强达不到设定阈值时,DO口输出高电平,当外界环境光强超过设定阈值时,模块D0输出低电平。2.4 显示模块2.4.1 数码管的介绍基于方便、节约的原则,显示模块采用的是数码管显示。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),其他的基本相同;按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。我们最常用的是七段式和八段式LED数码管。所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下图2.6所示。 图2.6 数码管内部结构图中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为,即0x3f;共阳数码管的字符编码为,即0xc0。可以看出两个编码的各位正好相反。 因此,共阳、共阳极的数码管0f的段编码分别如下:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/共阳极0f数码管编码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/共阴极0f数码管编码2.4.2 LED数码管的驱动方式 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。在本次设计中采用的是动态显示驱动数码管的方式。2.4.3 数码管与单片机的连接数码管选取的是4位共阳极八段式数码管。两个74HC573锁存器IO口接P0.0P0.7,对应原理图上D0D7。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存,以此驱动数码管,支持动态扫描。数码管的段adp接74HC573-1芯片,对应原理图上X0X7。数码管的位Y0Y3对应74HC573-2芯片。段选信号接74HC573-1芯片,对应接单片机IO口P2.6,位选信号接74HC573-2芯片,对应接单片机IO口P2.7。与单片机的连接如下图2.7所示。图2.7 数码管与单片机的连接2.5 出入口间的通信模块 为了实现远距离监控,通信模块选取的是NRF24L01无线模块。NRF24L01是由NORDIC生产的工作在2.4GHz2.5GHz的ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。 输出功率频道选择和协议的设置可以通过SPI 接口进行设置。NRF24L01含有六个引脚,几乎可以直接连接到各种单片机芯片,并完成无线数据传送工作。其与51单片机的连接如下图2.9所示。 图2.8 NRF24L01与单片机的连接 整个系统数据接收显示端的硬件电路图见附录A。3 车位监控系统软件的设计3.1 汇编语言与C语言 汇编语言曾经是单片机工程师进行软件开发的唯一选择。作为单片机初学者必须掌握汇编语言的基本设计方法,因为汇编语言直接操作计算机的硬件,学习汇编语言对于了解单片机的硬件构造是有帮助的。但汇编语言程序的可读性和可移植性较差,采用汇编语言编写单片机应用程序的周期长,而且调试和排错也比较困难。为了提高编制计算机系统和应用程序的效率,改善程序的可读性和可移植性,最好的办法是采用高级语言编程。目前你,C语言逐渐成为国内外开发单片机的主流语言。 C语言是一种通用的编译型结构化计算机程序设计语言,兼顾了多种高级语言的特点,并具备汇编语言的功能。它支持当前程序设计中广泛采用的由顶向下的结构化程序设计技术。一般的高级语言难以实现汇编语言对于计算机硬件直接进行操作(如对内存地址的操作、移位操作等)的功能,而C语言既具有一般高级语言的特点,又能直接对计算机的硬件进行操作。C语言有功能丰富的库函数、运算速度快、编程效率高,并且采用C语言编写的程序能够很容易地再不同类型的计算机之间进行移植。因此,C语言的应用范围越来越广泛。 用C语言来编写目标系统软件,会大大缩短开发周期,且明显增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。因此,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。对汇编语言掌握到只要可以读懂程序,在时间要求比较严格的模块中进行程序的优化即可。采用C语言也不必对单片机和硬件接口的结构有很深入的了解,编译器可以自动完成变量存储单元的分配,编程者就可以专注于应用软件部分的设计,大大加快了软件的开发速度。采用C语言可以很容易地进行单片机的程序移植工作,有利于产品中的单片机重新选型。 根据C语言模块化程序结构的特点,可以使程序模块大家分享,不断丰富。根据C语言可读性的特点,使大家更容易借鉴前人的开发经验,提高自己的软件设计水平。采用C语言,可针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块、算法等编制相应的函数。这些函数经过归纳整理可形成专家库函数,供广大单片机爱好者使用完善,这样可大大提高国内单片机软件设计水平。 过去长时间困扰人们的“高级语言产生代码太长,运行速度太慢,不适合单片机使用”的致命缺点已被大大地克服。目前,51系列单片机的C语言代码长度在未加入人工优化的条件下,已经做到了最优汇编程序水平的1.21.5倍。可以说,已超过中等程序员的水平。51系列单片机中,片上ROM空间做到32KB/64KB的比比皆是,代码效率所差的10%20%已经不是重要问题。关于执行速度的问题,只要有好的仿真器帮助,用人工优化关键代码就是很简单的事了。至于开发速度、软件质量、结构严谨、程序坚固等方面,C语言的完美绝非是汇编语言所能比拟的。3.2 编程工具Keil的介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会使得设计事半功倍。1.编辑器和调试器 源代码编辑器 uVision4 编辑器包含用户常用到的所有特性,语法彩色显像和文件识别都对C源代码进行和优化,可以在编辑器内调试程序,它能提供一种自然的调试环境,使你更快速地检查和修改程序。调试器 uVision4 源代码级调试器是一个理想、快速可靠的程序调试器。调试器包含一个高速模拟器,可以模拟整个8051系统,包括片上外围器件和外部硬件。当你从器件库中选择器件时,这个器件的特性将自动配置。 2. C51 编译器 Keil uVision4编译器在语言上的扩展功能为用户使用软件资源提供方便,对于8051系列资源 C51 编译器都可以进行操作。sfr和sbit两个关键字对 SFR 实行存取。 变量可转移到任意地址空间,变量还可以通过关键字at放入固定的存储器中,存储模式决定了变量的存储类型。Keil uVision4的编译器和高性能仿真器,支持应用程序的调试。软件界面如图3.1所示。图3.1 KEIL C51软件界面 3.软件开发流程 (1)点击 Project 工程下面的菜单,选择弹出对话框中的New Project,如图3.2所示。在弹出的文件对话窗口中输入程序项目名称,“保存”后的文件扩展名为uv4,这是KEIL uVision4项目文件的扩展名,以后可以直接点击此文件以打开以前做的项目。(2)选择符合要求的单片机,Ateml公司的AT89C51。 (3)编写程序,首先要在项目中创建新的程序文件。(4)保存新建的程序,把第一个程序命名为xxx.c,保存在之前的目录下,如果程序 颜色不同,说明语法合理。在屏幕左侧的 Source Group1文件夹图标上右击弹出菜单, 在这里可以做在项目中增加减少文件等操作。选择“Add File to GroupSource Group 1”选项,弹出文件窗口,选择刚刚已经保存的文件,单击 ADD 按钮,关闭文件窗口,程序文件被加到项目中。这时在 Source Group1 文件夹图标左边出现了一个小+号说明, 文件组中有了文件,点击它可以展开查看。如图3.3 所示。图3.2 创建文件图3.3 添加程序(5) C 程序文件已加项目中,在进行编译运行。如图3.4所示,图中左边的按钮用于编译单个文件,中间的用于编译当前项目,如果编译过的文件没有改动过,不会出现重新编译,右边的按钮用于重新编译。 图3.4 编译(6) 进入调试模式,软件窗口样式如图3.5所示。打开调试对话框,从这个对话框可以看到芯片的串行口输入输出的字符,可以在这里看运行结果。要停止运行程序回到编辑模式中,可先按停止按钮再按开启关闭调试模式按钮。图3.5 调试程序 (7) 生成HEX文件 ,打开目录,找到项目文件,然后右击项目的文件夹,在弹出的菜单中,选择 Options for TargetTarget1选项,在弹出的设置窗口中选择项目文件夹图标,打开项目选项窗口,转到如图3.6所示的 Output 选项页,可以选择编译输出的路径和设置编译输出生成的文件名,要选择创建 HEX 文件,选好后再将它重新编译一次。图 3.6 生成 HEX 文件 3.3 软件程序的组成系统中为了使得各硬件之间能够正常通信,正确运行,有效地完成检测、传输、显示等基本功能,除了要有合理的硬件设计外,高质量的软件支持也是必不可少的。一个单片机系统的执行效率,工作稳定性与其软件的设计密切相关,软件设计的好与坏直接影响系统的整体运行效果。本设计的程序由两大部分组成,一是检测部分程序,二是显示部分程序。检测部分的程序主要功能是单片机控制传感器实现对进出车辆的计数,无线的数据传送。当单片机接收到传感器发送来的信息后执行车位加减或者保持等待状态等一系列的操作。显示程序主要是两位八段数码管的显示,即数码管将单片机发送过来的信息显示出来。本设计中,各种功能都是通过调用子程序来实现。各个中断服务程序都非常短小,功能不同是通过一些标志位供主程序进行判断,跳转。这样的设计是因为在使用中断的程序中,中断服务程序如果过长,执行时间太久,会影响到其他中断服务的运行,造成系统反应迟钝等不良现象,所以我们在设计程序时尽量避免CPU长时间停留在中断服务程序的运算中。使用中断也可以有效的提高系统的工作效率。3.4 部分程序介绍3.4.1 程序中引脚的定义 系统的主要功能上面已经详细介绍了,这里主要介绍软件的设计方法及设计流程。主机的控制核心是AT89C51;AT89C51提供以下功能: 1. 4k Bytes Flash片内程序存储器; 2. 128 bytes的随机存取数据存储器(RAM);3. 32个外部双向输入/输出(I/O)口;4. 2个中断优先级、2层中断嵌套中断;5. 5个中断源;6. 2个16位可编程定时器/计数器;7. 2个全双工串行通信口;引脚定义:8. 片内振荡器和时钟电路;9. 与MCS-51兼容;10.全静态工作:0Hz-33MHz;11.三级程序存储器保密锁定;12.可编程串行通道;引脚定义: Sbit rk1 = P20; Sbit rk2 = P21; /入口处传感器 Sbit ck1 = P22; Sbit ck2 = P23; /出口处传感器 sbit CE = P14; / Chip Enable pin signal (output) sbit CSN = P33; / Slave Select pin, (output to CSN, nRF24L01) sbit SCK = P16; / Interrupt signal, from nRF24L01 (input) sbit MOSI = P15; / Master In, Slave Out pin (input) sbit MISO = P17; / Serial Clock pin, (output) sbit IRQ = P13; / Master Out, Slave In pin (output) sbit dula = P26;/数码管段选信号的锁存器控制 sbit wela = P27;/数码管位选信号的锁存器控制3.4.2 定时器初始化函数 设计选定时器0,并且一直允许中断打开(EA=1),并且打开定时器0中断,装入20ms初值。则有如下定时器初始化的子函数。void TimeInit()TMOD = 0x01;TH0 = (65535 - 2000) 8;TL0 = (65535 - 2000);ET0 = 1;TR0 = 1;EA = 1;3.4.3 数码管显示程序的设计本次设计选取的是两位八段共阳数码管。单片机接P0口。由于P0口处于开漏状态,因此必须接一个上拉电阻。为了驱动数码管,我选择使用两片MC74HC573N,分别连接数码管的段选和位选。其程序如下,其中weii定义为unsigned char code wei=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;duani定义为unsigned char code duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f。void Display(uint num)uint shi=0;uint ge =0;shi = num/10+1;ge = num%10+1; P0=wei4; wela=1;wela=0;P0=duanshi; dula=1;dula=0;delay1(2); /十位数显示5 P0=wei5; wela=1;wela=0;P0=duange; dula=1;dula=0;delay1(2); /个位数显示93.4.4 车辆检测程序的设计由于所购买得模块可以直接接到单片机的IO口上,因此,只需检测单片机IO口高低电平的变化即可感知到车辆的进出。为了准确检测出进出车辆,我们选择四个传感器并排放置,当进口处两个传感器某段时间同时有电平变化时就有车辆进入。代码如下,其中rk1、rk2、ck1、ck2分别代表出口以及入口的传感器。if(rk1=1&rk2=0) /先过入口处第一个传感器 Delay(10);if(rk1=1&rk2=1) /判断是否为车辆进入 . if(ck1=1&ck2=0) /先过出口处第一个传感器 Delay(10); if(ck1=1&ck2=1)/判断是否为车出去 . 3.4.5 NRF24L01无线模块程序的编写发射数据时,首先将NRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入NRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10微秒,延迟130微秒后发射数据;若自动应答开启,那么NRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TX_FIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TX_FIFO中数据保留以便再次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE为低则NRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。接收数据时,首先将NRF24L01配置为接收模式,接着延迟130微秒进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就

温馨提示

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

最新文档

评论

0/150

提交评论