智能停车场设计Word格式文档下载.docx
《智能停车场设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《智能停车场设计Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。
不仅给车主停车和管理停车场带来了方便,更能充分利用车位资源,减少了拥堵,改善了交通秩序。
2.相关背景
随着中国现代化进程的加快,各停车场车流量日渐增多,单单依靠人工管理,其日常保安与管理工作也日渐繁重。
现代企业和政府管理部门为树立良好的形象,对所辖小区进行规范的现代化管理,已广泛地采用智能停车场,对出入车辆的进行高效管制。
2.1停车场管理系统概述
智能停车场管理系统是一种高效快捷、公正准确、科学经济的停车场管理手段,是停车场对于车辆实行动态和静态管理的综合。
从用户的角度看,其服务高效;
从管理者的角度看,其易于操作维护、动化程度高、大大减轻管理者的劳动强度。
采用先进的单片机控制,从高标准、高可靠、高安全的设备,利用了高度自动化的机电和微机设备对停车场进行安全、有效的管理,包括、保安、监控、防盗等。
2.2研究意义以及前景
随着科技的进步和人类文明的发展,大型停车场在住宅小区、大厦、机关单位的应用越来越普遍。
而人们对停车场管理的要求也越来越高,智能化程度也越来越高,使用更加方便快捷,也给人类的生活带来了方便和快乐。
不仅提高了现代人类的工作效率,也大大的节约了人力物力,价低了公司的运营成本,并使得整个停车场安全可靠,因此该智能停车场管理系统将会得到极大的推广。
3.方案论证
3.1总体论证
3.1.1设计要求
设计一款具备停车指导,安全监控的智能停车场管理系统。
3.1.2实现方案
为了实现以上功能从大的方面有以下三个方案可供选择:
方案一:
采用高端CPU利用Internet网络进行信息传输和远程监控。
方案二:
采用廉价51单片机对各个车位进行信息采集同时利用电力线载波通信技术或无线网络技术进行信息传输和控制,并将信息提交的主控单片机进行。
方案三:
采用廉价51单片机对各个车位进行信息采集并提供给将寻找车位的车主。
比较:
方案一该设计智能化程度高、控制相当准确,便于与网络连接;
但是施工工程量很大,费用高;
方案二避免了布线安装施工的困难,但成本高,网络性能一般;
方案三不仅技术成熟、成本低廉而且通信性能高布线简单,易于实现。
通过以上比较决定采用方案三。
3.2方案分析
3.2.1检测探头的选用
红外检测原理实现简单、成本低廉,利用红外线控制模块检测车辆不仅抗干扰性强、检测距离远,提高智能化程度,故在停车位选用红外控制模块检测,在停车场门口选用IC读卡控制模块控制车辆出入。
3.2.2从机微处理器的选用
单片机选用深圳宏晶的STC89C52。
此单片机与AT89C52完全兼容,而且STC89C52功能更强、更稳定,特别的一点是STC系列单片机支持串口在线编程功能,且价格与AT89C52相当,故选用STC89C52为控制核心。
3.2.3从机显示模块选择
选用12864液晶显示器,功耗低,显示功能强大。
4.系统设计
4.1硬件设计
4.1.1系统模型
图1系统整体模型图
使相对分散的停车场形成一个统一的整体,便于调度和协调。
停车场内部自成独立的系统适用于小型停车场和独立停车场,扩大了适用范围,此外本系统具有良好的扩展性,便于和监控系统的对接,使其更具有推广应用价值。
4.1.2硬件简介
(1)单片机STC89C52
STC89C52单片机是深圳宏晶科技代理美国一家高科技公司的产品,它具有无法解密、超低功耗、高速高可靠、抗静电抗干扰的众多优点。
而且STC89C52向下完全兼容ATMEL公司的AT89C52,其中STC89C52支持串口在线编程的功能给实验者带来了很大的方便。
内置8K的FLASH程序存储器更是能够反复擦鞋10000次,使实验者不必担心FLASH存储器的老化。
下面是STC89C52的引脚定义:
(2)IC读卡器模块
RFID系列的rc522射频读卡器,是采用先进的射频接收线路设计及嵌入式微控制器,结合高效解码算法,完成对64bitsRead-OnlyEM4100兼容式ID卡的接收,具有接收灵敏度高,工作电流小,单直流电源供电,低价位高性能等特点,适用于门禁,巡更等各种射频应用领域。
有效距离10cm以上,在有效距离内数据接收时间小于100ms,单直流电源+5V供电,工作电流小于70mA。
接口描述:
IC读卡器接口定义
5.结论
本设计利用微型计算机作上位机提供友好的人机界面、语音服务、网络服务,对停车场的管理和监控更加人性化、智能化、合理化,真正实现了对停车场的综合控制管理。
而且本系统利用性能可靠、价格廉价的51单片机作从机微处理器降低了系统成本,便于普通小区普及应用。
系统参数:
工作电压:
220V,50Hz
磁卡有效距离:
10cm
红外检测探头:
3cm
致谢
本设计的顺利完成得到了院系领导老师的大力支持和帮助,尤其是我的张劲松老师在百忙之中抽出宝贵的休息时间,仔细耐心地指导我、鼓励我、让我有了解决问题的信心,使设计得以顺利的完成。
本设计的过程中曾多次与同学探讨问题,通过探讨使自己的想法更完善。
另外,我院学生创新实验室的全体师生,也为本设计提供了很大的帮助,在模型的制作中我的女朋友也参与其中帮助我完成了模型制作。
在此,对他们表示由衷的感谢!
电子信息技术日新月异地飞速发展,人们总是处在不断学习阶段,再加上我水平有限,所以本设计肯定存在许多不尽如人意的地方,欢迎广大老师和同学批评指正。
最后,我在这里要感谢系里的所有老师,是他们精心的栽培与悉心指导为我以后的学习、工作打下了坚实的基础。
谢谢通信与电子信息工程学院所有老师。
附录
实物图:
智能停车场管理系统程序:
12864液晶显示程序:
#ifndef__LCD12864_H
#define__LCD12864_H
//---包含头文件---//
#include"
LPCREG.H"
//---重定义关键词---//
#ifndefuchar
#defineucharunsignedchar
#endif
#ifndefuint
#defineuintunsignedint
//---如果使用画图模式定义这个---//
//#defineLCD12864_PICTURE
//---定义使用的IO口---//
#defineLCD12864_DATAPORTP1//数据IO口
sbitLCD12864_RS=P0^7;
//(数据命令)寄存器选择输入
sbitLCD12864_RW=P0^6;
//液晶读/写控制
sbitLCD12864_EN=P0^5;
//液晶使能控制
sbitLCD12864_PSB=P3^5;
//串/并方式控制
sbitLCD12864_RST=P3^4;
//复位端
//---声明全局函数---//
voidLCD12864_Delay1ms(uintc);
ucharLCD12864_Busy(void);
voidLCD12864_WriteCmd(ucharcmd);
voidLCD12864_WriteData(uchardat);
voidLCD12864_Init();
voidLCD12864_ClearScreen(void);
voidLCD12864_SetWindow(ucharx,uchary);
lcd12864.h"
/*******************************************************************************
*函数名:
LCD12864_Delay1ms
*函数功能:
延时1MS
*输入:
c
*输出:
无
*******************************************************************************/
voidLCD12864_Delay1ms(uintc)
{
uchara,b;
for(;
c>
0;
c--)
{
for(b=199;
b>
b--)
{
for(a=1;
a>
a--);
}
}
}
LCD12864_Busy
检测LCD是否忙
1或0(1表示不忙,0表示忙)
ucharLCD12864_Busy(void)
uchari=0;
LCD12864_RS=0;
//选择命令
LCD12864_RW=1;
//选择读取
LCD12864_EN=1;
LCD12864_Delay1ms
(1);
while((LCD12864_DATAPORT&
0x80)==0x80)//检测读取到的值
i++;
if(i>
100)
LCD12864_EN=0;
return0;
//超过等待时间返回0表示失败
LCD12864_EN=0;
return1;
LCD12864_WriteCmd
写命令
cmd
voidLCD12864_WriteCmd(ucharcmd)
uchari;
i=0;
while(LCD12864_Busy()==0)
LCD12864_Delay1ms
(1);
if(i>
100)
return;
//超过等待退出
}
//选择命令
LCD12864_RW=0;
//选择写入
//初始化使能端
LCD12864_DATAPORT=cmd;
//放置数据
//写时序
LCD12864_Delay1ms(5);
LCD12864_WriteData
写数据
dat
voidLCD12864_WriteData(uchardat)
LCD12864_RS=1;
//选择数据
LCD12864_DATAPORT=dat;
LCD12864_ReadData
读取数据
读取到的8位数据
#ifdefLCD12864_PICTURE
ucharLCD12864_ReadData(void)
uchari,readValue;
//等待
readValue=LCD12864_DATAPORT;
returnreadValue;
LCD12864_Init
初始化LCD12864
voidLCD12864_Init()
LCD12864_PSB=1;
//选择并行输入
LCD12864_RST=1;
//复位
LCD12864_WriteCmd(0x30);
//选择基本指令操作
LCD12864_WriteCmd(0x0c);
//显示开,关光标
LCD12864_WriteCmd(0x01);
//清除LCD12864的显示内容
LCD12864_SetWindow
设置在基本指令模式下设置显示坐标。
注意:
x是设置行,y是设置列
x,y
voidLCD12864_SetWindow(ucharx,uchary)
ucharpos;
if(x==0)//第一行的地址是80H
x=0x80;
elseif(x==1)//第二行的地址是90H
x=0x90;
elseif(x==2)//第三行的地址是88H
x=0x88;
elseif(x==3)
x=0x98;
pos=x+y;
LCD12864_WriteCmd(pos);
RC522射频读卡器程序:
#include"
intrins.h"
mfrc522.h"
#defineMAXRLEN18
sbitMF522_NSS=P0^0;
//SDA
sbitMF522_SCK=P0^1;
sbitMF522_SI=P0^2;
//MOSI
sbitMF522_SO=P0^3;
//MISO
sbitMF522_RST=P0^4;
/////////////////////////////////////////////////////////////////////
//功能:
寻卡
//说明参数:
req_code[IN]:
寻卡方式
//0x52=寻感应区内所有符合14443A标准的卡
//0x26=寻未进入休眠状态的卡
//pTagType[OUT]:
卡片类型的代码
//0x4400=Mifare_UltraLight
//0x0400=Mifare_One(S50)
//0x0200=Mifare_One(S70)
//0x0800=Mifare_Pro(X)
//0x4403=Mifare_DESFire
//返回:
成功返回MI_OK
/////////////////////////////////////////////////////////////////////PICC_REQIDL
charPcdRequest(unsignedcharreq_code,unsignedchar*pTagType)
charstatus;
//idata
unsignedintunLen;
//idata
unsignedcharucComMF522Buf[MAXRLEN];
ClearBitMask(Status2Reg,0x08);
WriteRawRC(BitFramingReg,0x07);
SetBitMask(TxControlReg,0x03);
ucComMF522Buf[0]=req_code;
status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&
unLen);
if((status==MI_OK)&
&
(unLen==0x10))
{
*pTagType=ucComMF522Buf[0];
*(pTagType+1)=ucComMF522Buf[1];
else
{status=MI_ERR;
returnstatus;
防冲撞
//参数说明:
pSnr[OUT]:
卡片序列号,4字节
//返回:
成功返回MI_OK
/////////////////////////////////////////////////////////////////////
charPcdAnticoll(unsignedchar*pSnr)
//idata
unsignedchari,snr_check=0;
WriteRawRC(BitFramingReg,0x00);
ClearBitMask(CollReg,0x80);
ucComMF522Buf[0]=PICC_ANTICOLL1;
ucComMF522Buf[1]=0x20;
status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&
if(status==MI_OK)
for(i=0;
i<
4;
i++)
*(pSnr+i)=ucComMF522Buf[i];
snr_check^=ucComMF522Buf[i];
if(snr_check!
=ucComMF522Buf[i])
SetBitMask(CollReg,0x80);
选定卡片
//参数说明:
pSnr[IN]:
卡片序列号4字节
charPcdSelect(unsignedchar*pSnr)
unsignedchari;
un