主页 > 案例大全 > 论文方式解析-基于单片机的智能停车场

论文方式解析-基于单片机的智能停车场

2021-04-17 11:47:18

  本篇主要介绍基于STC89C52单片机所设计的停车场智能车位管控系统,相较于其他单一系统,本系统在进行车位剩余量检查的同时,还能用来进行身份的检测识别,而且还实现了倒车防撞的警告提醒,功能较为完善,结构简单合理。具体功能为基于RFID无线射频技术,使用RC522射频卡进行身份的查验识别,同时可以注册和删除身份信息,成功注册后,可通过RC522射频卡刷卡进入停车场,在没有进行注册时则被拒绝进入停车场。1602液晶显示会在刷卡成功后告知剩余车位,当车位完成进入后1602显示器会自动显示车位信息减一,并关闭对应车库的位置的显示。避障模块的红外传感器会进行实时监测,如果在停车过程中,出现车与车之间小于安全距离,则LED指示灯亮起,同时蜂鸣器进行报警报警

  1.1设计背景

  当今在我国大力推行城市化的同时,为了使个人的生活更加快捷方便,越来越多人投入到了购车大军之中,使得我国车辆保有率越来越高,随之而来的就是车辆与车位数的比率越来越低,而对于车位的有效管理,让每个车位都物尽其用则成为了重中之重。无论是之前采用老式门禁的原有的停车场的更新换代,还是新建停车场的门禁系统,都可以采用基于STC89C52单片机的智能停车系统,在此系统中集成了RFID无线射频模块、超声波传感器模块、红外线避障模块实现了注册/删除身份,车位统计,车辆停车安全距离检测与报警的实用功能。此系统实现了用RC522磁卡,一卡管理停车场的方便功能,为解决停车场管理困难提供了一站式服务,通过智能化管理,提升了停车效率,方便了车位管理。在未来结合5G与大数据,便可为车主及停车场提供及时的车位咨询。

  1.2设计依据

  此次设计,通过多方面考量,最终选择了,相较于其他型号的51单片机如AT89S52、AT89C52等,具有更高的性价比和更好的适配性。STC89C52的功耗十分低,性能相较较高,是CMOS8位微控制器,拥有一个可编程的Flash储存器,该储存器为8K字节系统。STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。通过一系列优化改进,让使用经典的MCS-51内核的STC89C52单片机获得了传统51单片机不具备的功能,其拥有灵巧芯片的特性,让该单片机可以为多种嵌入式提供一站式解决方案。同时该单片机因为采用I/O接口来进行操作外接设备,使得操作方式变得简单有效,是作为升级改造,自动化程度提高的有效之选。该单片机采用5v供电,在设计中明确了整体电路的供电电压为5伏后,继电器的电压则需要等于5v或大于5v,考虑到性价比方面采用5v继电器可满足需求,故继电器方面选择采用5v继电器。在RFID芯片选择上,我们采用RC522而不是PN532。虽然PN532支持的协议更多包括NFC协议,RC522只支持ISO14443A/B,且PN532在读写器模式中典型工作距离超过50mm而RC522在读写模式中最远不超过50mm,但是RC522在要求低成本、小尺寸、高性能以及单电源的非接触式通信的应用场合时表现的更为优异。在显示器方面我们不使用数码管,而采用LCD1602液晶显示器,因为液晶显示器对比数码管显示器显示的信息量更大,功耗更低,并可根据光照强度来手动调节显示器亮度,方便车主及管理人员更好的观察车位信息。车辆检测和防撞都采用使用红外线反射的避障模块,通过高低电平的反馈来使单片机做出反应。

  1.3设计的主要内容和功能

  这次设计主要包含两个部分,一是系统软件方面的设计,一是硬件电路方面的设计。总体来说是编程软件来控制硬件,使得我们可以通过不同外部动作在硬件方面可以得到具体的反馈,具体内容就是通过操纵复位按钮对RC522磁卡进行注册及删除,在注册成功后即可进入车库,否则为非法进入,在刷卡进入后可以得到车位的反馈,了解到车位的剩余,在进入车位时,若车与车之间距离过近则通过指示灯和蜂鸣器来发出警报。上述功能在硬件方面分别使用上述的RC522读卡器,红外传感器避障模块反馈到STC89C52单片机中来进行执行。

  第二章设计方案

  2.1总体设计

  我们先给出一个大体思路,将思路构成思维导图,再将思路逐步连接构成大体的工作原理如下图2.1:

  图2.1工作原理图

  接下来介绍上图的工作原理:首先单片机作为最主要的部分,作为连接并指挥输入模块与输出模块的重要单元画在中间;然后思考输入模块的具体构成,首先为实现卡的识别注册及删除模块,这一模块的功能由RC522接收器来实现;其次,为了将卡的ID储存到本系统之中,需要一块储存用芯片,在此我们选择AT24C02芯片来进行储存信息;然后为了可以进行删除和注册ID的操作,我们需要用按钮来进行执行;最后通过红外传感器检测车位及车距作为反馈给单片机的工具;至此输入模块完成,接下来则需要输出信息的模块,为了显示车位的信息及ID注册成功,需要一个显示器来提供信息,其次为了对车距过近进行报警则需要一个蜂鸣器和提示灯。总体设计至此完成。

  2.2分部设计

  首先我们现在设计硬件部分,将所需元件进行选择,然后一一列出,然后先设计电路,通过电脑软件进行绘图,所使用的软件为proteus,先用proteus进行原理图的绘制,在绘制完成后,检查电路的连通性,在连通性测试完成后硬件电路设计即完成。然后进行软件方面的设计,通过KEIL软件进行编程,对每个部分包括读卡器,传感器,显示器,按钮用C++语言进行编程,最后对各个程序进行集成构成主程序,最后形成程序软件,将程序文件输入单片机中。

  第三章硬件电路设计

  3.1 STC89C52使用及简介

  STC89C52单片机可使用PLCC、PQFP等小型封装。将代码下载进STC相关的单片机即可,或用通用编程器进行编程。STC89C52有如下图3.1等方面特点:

  图3.1 STC89C52特点

  STC89C52在5v时最高时钟频率为0~80MHz,其Flash程序存储器和RAM数据存储器分别为8k和512,拥有降低EMI,看门狗,双倍速的功能,同时具有P4口,可实现ISP和IAP,其EEP ROM为1K+,数据指针有两个,串口UART为1ch+,中断源、优先级、定时器分别为8个、4个、3个,兼容方面向下兼容Winbond的W78E52和Philips的P89C52。单片机P4口地址为E8H,并有2个附加外部中断,P4.2/INT3,P4.3/INT2。有关/EA方面,/EA管脚已在内部上拉到Vcc,在上电复位后若直接从内部执行程序,则为外部不加上拉或外部上拉到Vcc的情况。而上电后单片机从外部执行程序时是外部下拉到地的情况。复位电路方面,在阻容复位期间,电阻需要10kΩ,电容则需要10uF,该单片机RESET管脚内不设下拉电阻,必须使用10kΩ电阻。晶振电路方面,必须去掉一个电容,更容易进行起振,另一个电容在小于24MHz时则需要使用33~47pF的电容。如需工作在24M以上,尽量选择双倍速,外部晶振用低频率(<24MHz),这样EMI会小很多。普通89C51,89C52系列单片机的内部RAM只有128(89C51)/256(89C52)供用户使用(1).低128字节的内部RAM(地址:00H-7FH),可直接寻址或间接寻址,(data/idata)(2).高128字节的内部RAM(地址:80H-FFH)

  ,只能间接寻址(普通89C51没有),(idata)(3).特殊功能寄存器SFR(地址:80H-FFH),只能直接寻址,(data)STC89C52RC系列单片机扩展了256个字节RAM。需要降低单片机对系统的电磁干扰时,可使用该单片机禁止ALE输出的功能,还可以通过使外部时钟降频到之前的二分之一,使用6T模式达到,同时还可以在外部晶振披绿小于等于24MHz时,将单片机内部时钟振荡器增益降低一半即在使用ISP烧录程序时将OSCDN设为1/2 gain,这项举措使得单片机时钟高频部分对外界的辐射大大降低。STC89C52的常见封装有如下图3.2三种

  图3.2STC89C52三种常见封装

  通常为了方便设计,我们采用第三种封装。

  3.2按键控制电路

  首先明确此按键控制电路是通过向单片机返回高或低电平来控制单片机向元件输入高低电平来起到控制电路的作用的。该按键是K1与K2并联而成的,相当于两个组开关控制,先将开关连接到单片机上,即通过单片机的I/O双向接口连接,而按键的另一端则接地。需要向单片机返回高电平时,保持开关打开,需要向单片机返回低电平时,将开关闭合,使得电路联通,系统接地。该按键用来控制身份注册和车辆距离,所以考虑到按键可能存在拨动时间误差,在编写按键分程序时,需要考虑到该误差,设置额外的防误差语句。按键电路如下图3.3所示:

  图3.3按键控制电路

  3.3电源电路

  电源电路如下图3.4所示:

  图3.4电源电路

  单片机需要5v直流电源来供电,读卡器需要3.3v直流电源供电,其他元件都只需要不超过5v的电压来进行供电,故供电电源方面只用选择5v电压的电源即可。电源电路由两部分组成:电源插口,电源开关。电源插口用来外接5v直流电源的插头,插口有三个引脚,引脚1用来接入电源开关,引脚2用来接地,而引脚3仅用来固定插口。电源开关包含六个引脚,在此我们选择引脚3连接电源插口,引脚4,6输出电流给单片机,作为单片机正极输出,因为需要采用相对原则,选择引脚2来接地,用来完成单片机的接地。

  3.4显示电路

  显示器电路如下图3.5所示

  图3.5 LCD1602液晶显示电路图

  显示器方面我们采用1602的液晶显示器,该型号的显示器共有16个引脚其中D0~D7即7~14号引脚是8位双向数据口,用来连接单片机的输出数据端口和排阻。引脚1即GND引脚顾名思义用来接地,与单片机的接地相连。引脚2VCC是用来给显示器供电的引脚,输入5vVCC电源。引脚3V0为液晶显示器对比度调整端,用来连接可变电阻,接通正极时,与背景相差小,接地时则反之,有时显示出的字符和背景过于相近,通过调节电流大小来控制液晶显示器的亮度,从而突出所显示的字符。引脚4RS为寄存器选择,当输入高电平时,数据寄存器被选择,当输入低电平时,则指令寄存器被选择。引脚5R/W是读写信号的引脚,通过分别输入高/低电平来进行读/写的操作。引脚6EN是使能端即控制信号输入端,高电平时被激活正常工作读取信息,由高电平到低电平时则执行命令。引脚15为背光光源的正极,引脚15为背光光源的负极。由于编程FIASH时,原码是向P0口输入的,校验FIASH时,原码也是经P0输出的,所以P0外部必须被拉高,又因为1602显示器连接单片机时通过P0口的,所以连接之间必须接电阻来进行拉高。

  3.5报警电路

  蜂鸣器报警电路如下图3.6所示:

  图3.6蜂鸣器报警电路

  蜂鸣器报警电路由三个元器件组成:限流电阻,三极管,蜂鸣器。首先我们选择一个合适规格的蜂鸣器,由于蜂鸣器所需电流较大,所以我们需要想办法将单片机中输出的低电流放大为高电流,所以我们选择一个PNP三极管来连接蜂鸣器和单片机之间来放大电流,同时PNP三极管在低电平高电平时电流不同的特性也使得可以决定蜂鸣器的工作与否,但是当通电时三级管默认为高电平,所以需要加一个电阻来进行限流,同时这个电阻也可以防止电流过大而损坏蜂鸣器,防止电路受损。

  3.6避障模块电路

  避障模块电路如下图3.7所示:

  图3.7避障模块电路图

  避障模块选择使用拥有三个引脚的红外传感器,数量上需要三个红外传感器,来实现两种不同的功能,通过一个红外传感器模拟车位车辆进入来检测安全距离,通过两个红传感器来模拟检测车位数量,在实际应用上,则需要每个车位都安装一个进入检测模块和安全检测模块。传感器的一、二、三引脚分别接供电端,接地端,输出端。三个传感器的引脚3分别接入STC89C52的引脚14,引脚15,引脚16来为单片机提供反馈,为单片机做出反应提供条件。

  3.7门禁系统电路

  门禁系统电路图如下图3.8时:

  图3.8门禁系统电路图

  门禁系统电路主要由三个部分组成:读卡模块,降压模块,储存模块。首先因为读卡模块的供电需要3.3v,而系统的供电为5v,所以就需要通过降压来给读卡模块供电,保证模块的正常运行,在这里选用LM1117低压差电压调节器来进行降压,LM1117在降压的同时,还通过限制电流来对电路提供保护,还起到了热保护的作用,为了改善LM1117输出的稳定性和对于电路的瞬态响应,则需要在输出端加一个电容来实现稳定。读卡器需要按照规定将引脚与单片机一一对应相连。为了储存RC522卡的ID信息,方便识别ID卡,在此选择一块AT24C02来对卡的信息进行保存,在读取信息后,AT24C02向STC89C52返回正确ID信息与读取信息进行对比,执行相应的操作

  3.8整体电路原理图

  整体电路原理图如下图3.9所示:

  图3.1系统硬件原理图

  将上述单片机,显示电路,电源电路,按键电路,报警电路,避障模块电路,门禁系统电路整合集成,将对应引脚按规定一一对应连接,得到完整的系统硬件电路图。

  第四章软件系统设计

  4.1软件主程序架构

  先进行整体思路构建,通过思维导图画出软件主程序的架构。单片机主程序图如图4.1所示:

  图4.1系统流程图

  首先在程序开始后进行初始化,然后系统通过低压差电压调节器LM1117向读卡器传输为3.3v电压的输入,接下来读卡器读取ID卡的数据信息,传输给单片机STC89C52,同时STC89C52从之前储存过ID卡数据信息的AT24C02中提取数据信息,通过程序的对比,判断数据信息是否为正确的信息,若是,则显示出ID卡号,及车位数,若不是正确信息则显示为非法进入。同时在数据正确,进行放行的同时,实时监测车位动态,若有车在占据一个车位,显示器上便会不显示该车位的数字。当放行完成,该车进入车位后进行安全距离检测,若大于安全距离,则蜂鸣器及警示灯无反馈,若小于安全距离,则蜂鸣器开始报警,警示灯点亮提醒距离过小需要拉大距离。之后分别进行子程序的编写,最后将子程序用相应逻辑语言连接到一起,形成完整的程序,实现相应的功能。将系统软件烧录到单片机中,先需要一个USB-RS232转接器,单片机的RXD即P3.0接口接RS232通过RS232连接电脑的TXD即COM Port Pin3,单片机的TXD即P3.1接口先接RS232,再通过RS232连接电脑的RXD即COM Port Pin2,最后单片机的GND口连接电脑的GND接地口即COM Port Pin5。先使得P1.0,P1.1=0,0;然后上电复位进入ISP模式,下载完后释放P1.0,P1.1,89LE516AD/X2运行用户程序。连接完成后进行STC-ISP软件操作烧录,先选择单片机STC89C52型号,之后打开已经写好的程序的文件,将.hex或.bin的程序代码调入用户,然后填写需要的串行口,即使用的1-COM1、2-COM2等电脑的串行口,接下来设置双倍速加快烧录,最后选择下载按键,将所需的上述程序烧录到单片机中。

  4.2 LCD1602显示流程图

  先来设计显示关键信息的显示器所需的程序模块,要求显示器先进行清屏,清屏成功则表明初始化成功,若显示器没有成功清屏则说明没有进行初始化,继续进行初始化的循环语句。清屏成功后,单片机为显示器提供所要执行的操作,在没有刷卡,刷卡注册成功,删除ID信息,刷正确卡进入停车场显示不同的信息,在单片机对车位及车距传感器的实时反馈下,不断向显示屏写入命令,写入数据,显示屏不断的执行新的命令,显示出实时的信息。下图4.2为显示器执行单片机反馈流程图:

  图4.2显示器执行命令流程图

  4.3读卡器子程序流程图

  单片机先通过降压模块读卡器模块输入电流,接下来读卡器模块正常工作,先进行注册卡号,读卡器和单片机进行双向通信,单片机向读卡器发送读取指令,读卡器将ID卡的数据写入存储芯片中,完成信息储存后,再将卡放上去读取信息,读卡器向单片机返回实时卡号数据,单片机将读取的数据与存储数据进行比对,若比对后是相同卡号,则进行下一步向避障模块的操作,若不是相同卡号则为非法进入,无法进入。当卡没有注册,存储芯片中没有数据是与非法数据同理。下图4.3位读卡器子程序流程图:

  图4.3读卡器子程序流程图

  4.4避障模块流程图

  在读卡正确后,进入避障模块子程序入口,读卡不正确则无法进入该子程序,在通过读卡后,三个避障模块子程序同时运行,两个检测模块检测车位中是否停的有车,若停的有车则返回单片机数据,通过单片机传出向显示器的指令,显示相应车位情况;在车进入车位时另一个检测模块检测车距,若车距过近,单片机则向报警模块发出信号指示报警,下图4.4为避障模块流程图:

  图4.4避障模块流程图

  4.5按键子程序

  明确按键所要实现功能:通过两个按键分别控制报警安全距离设置的进入,报警距离的加减,ID卡的进入注册和删除注册,先编写进入注册的程序,按下1按钮进入注册ID子程序,子程序向存储模块反馈,再按下1按钮则返回主界面;按下2按钮进入删除ID子程序,向存储模块反馈删除数据,在按下2按钮返回主界面。长按1按钮进入报警距离的设置界面,按下1按钮增加安全距离数据,按下2按钮减少安全距离数据。下图4.5为按键子程序流程图:

  图4-5按键流程图

  4.6报警流程图

  报警子程序依赖于检测程序,当检测程序向单片机传达车距信息,该信息小于单片机内程序设定的最小距离,单片机则向外输出信息,即电平的变化,使得报警模块达到报警的高电平,从而发出报警,使蜂鸣器激活,警示灯点亮。下图4.6为报警模块子程序流程图

  图4.6报警子程序流程图

  第5章系统调试

  5.1焊接成品

  通过设计好的电路图,将焊接成品所需的元器件准备好。将焊件、焊料、电烙铁及烙铁架放置于容易操作的地方,使电烙铁充分预热。先将最主要的部分焊接上:将固定单片机的插排在合适位置焊接上,然后焊接作为单片机最小系统中的重要组成部分的晶振和复位电路。接下来焊接避障模块,将避障模块的传感器在边侧易于使用的地方牢固焊接。然后焊接显示器部分,先寻找好显示器的焊接位置将固定显示器的插排焊接好,再把上拉电阻与P0口焊接。之后焊接用于固定RFID读卡器的插排。接下来将显示器,RFID读卡器以及单片机插入对应的插排,同时将设计好的系统进行编译最后输出进单片机中。最后按照电路图,用导线连接各个器件。在此注意,焊接时要分外留意焊接的焊点是否充分浸润,防止虚焊,否则将会导致接触不良。

  5.2功能调试

  首先检查电路是否连接成功,用5v的直流电源对系统进行供电,先将开关闭合,然后观察各个传感器上指示灯是否正常点亮,如成功点亮则说明传感器正常工作,显示器上是否显示出正常的信息,显示则说明显示器正常工作。若某一器件未正常工作,则先将连接该元件的焊接及导线检查,若焊接及导线正常就考虑是否元器件出现问题。在电路及元器件检查无误后,检测系统程序是否安装成功,系统所要实现的功能是否可以完全实现。在供电并闭合开关后,显示器首先上方显示欢迎,下方显示将卡放上,之后按下第一个按钮,进入注册界面,将门禁卡放置到读卡器上,显示注册成功,之后再次按下第一个按钮返回主界面。将门禁卡再次放置到读卡器上,上方会显示卡号,下方会显示出剩余车位,用手分别挡住第一第二个车位感应器,就会显示出第一个车位有车或第二个车位有车。在用手由远及近慢慢靠近第三个传感器,当小于安全距离后,指示灯点亮并蜂鸣器联通发出警告。上述功能若完全实现,则说明该系统设计目的成功。