51单片机主控的停车场车位管理系统设计的实物图:
资料包文件 含设计报告等:
目录
摘要1
1前言 2
11研究的背景及意义 2
12系统概述3
2方案的设计与选择3
21电源模块的设计4
22传感器的选择4
23主芯片的选择 4
3系统的硬件设计5
31微处理器电路模块5
32显示模块6
33报警部分8
34停车位模拟停车模块8
系统的软件设计9
41主程序设计9
42倒计时中断程序设计10
43键盘中断程序设计11
系统分析与调试12
51keil运行图12
52 proteus仿真图13
53实物图13
6成果总结14
结束语15
参考文献16
附录:源代码17
停车场车辆管理系统设计与开发 摘要:伴随着科技的飞速发展,交通工具的越来越普及。汽车作为人类社会中最主要的交通工具之一,起着重大作用。随着人们生活水平的提高,汽车的数量也与日俱增,于是停车正在成为世界性的问题。以前落后的人力停车管理即将被高科技化的自动停车管理系统所取代,高度自动化的停车场管理系统节省了大量时间和人力物资消耗,大大提高了效率。 本论文介绍了利用单片机控制的一种停车场管理系统。它能在任意时间内,根据有效的停车空间,计算能够停泊的车辆数量,并且使用自动而可靠的完成车辆的进出。还能够显示是否有停放的场地以及是否有车辆进、出停车场。 本设计具有结构简单,计数准确,经济效益高,造价低廉,可靠性高,维修方便,研制周期短,操作简单等优点。经实验证明,这套系统软硬件设计合理,各项性能良好,经过系统扩展与升级,可以有效的满足各种流量统计的需要。
1.1研究的背景及意义随着经济的增长及城市化进程的加快,小汽车进入家庭,私人拥有量越来越多。由调查研究发现许多的小区在停车管理上存在着一定的局限性,为了方便有效的实现小区车辆管理系统使小区停车场安全、快捷运转,必须配备一套综合小区车辆统计计数系统。 单片微型计算机(简称单片机)也叫做微型控制器,自从20世纪70年代问世以来,得到了快速发展,从早期的8位机到现在的32位机,其硬件资源和软件资源在不断丰富与完善。单片机由于其集成度高、体积小、抗干扰能力强和价格低廉、具有独特的控制功能,它已经成为计算机世界中的重要成员。在一个应用系统中,只用一个单片机。但是单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的还在于,单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分控制功能,现在已能使用单片机通过软件(编程序)方法实现了。这种以软件取代硬件并能提高系统性能的控制技术必将随着单片机应用的推广普及而不断发展完善。 随着社会的发展,数据统计的重要性也是十分显著的。它是计算机与外部物理世界连接的桥梁。是统计管理的关键步骤,它在现代信息领域发挥着重要作用,是信息产品不可或缺的重要组成部分。因此选择基于单片机数据流量统计系统设计是很有意义也是很有必要的。 本设计就是利用“单片机”控制的车辆流量统计系统。随着国民经济的增长,人民生活质量的提高,私家车逐渐走进人们的生活,可是随之而来的问题也摆在了人们面前,那就是城市的空间越来越紧张,停车位难求,特别是到了法定假日出去自驾游,进入停车场却发现已满,只能去另寻车位。该设计就是针对此类问题而做,该设计不仅能直观的显示停车场的车流量,还能在车位满时发出报警。不但可方便车主了解停车场车位情况,做出适当的选择,又方便物业公司的管理。 该设计价格低廉,计数准确,可广泛应用于停车场、商场、房地产公司以及物业管理部门等。由于该设计的价格优势、安全性以及大量应用后可导致管理成本的下降,中国人口众多,可想而知其可以为产品生产企业创造多少经济价值。
1.2系统概述 本系统包括:电源模块、传感器模块、显示模块、手动键盘输入模块、车辆车位模拟模块等。它可以实现控制的开启、显示停车场现有车辆数和已停放过车辆数、人工的设置总车位数以及剩余车位数的数值显示等功能。并且拥有16个模拟的停车位,用来显示车辆停放的具体位置。 系统的特点: (1)由于本系统采用电子元件无需人工管理。 (2)自动显示停车场的车位状态,进出和停放车辆统计。 (3)统计小区当天已停放车辆总数,并且显示停放位置。 (4)本系统适用于任意停车场。 (5)检测小区车位车辆是否已满,报警指示灯闪烁。 系统的模拟框图:
第2节方案设计及选择
该系统用于检测是否有车辆进出,是否有空余车位,应用单片机来控制其他模块以实现对车辆的数目、状态等的加减计数和状态显示,并利用单片机中的定时系统对车辆进出的时间限制以及设定,键盘系统的输入可以人工控制总车位数以及剩余车位数数值的显示。
2.1电源模块的设计 整个系统中电源模块主要的是提供稳定的电压。 方案一:整个系统中电源模块主要的是提供稳定的电压。该电路输入单相220v交流电,经过变压器,全桥整流,稳压后输出稳定的5v直流电。 方案二: 该电路直接使用USB 5V供电,直接接入有USB接口的电源适配器即可! 可以具有外接元件少,使用方便,性能稳定,价格低廉等优点,因而得到广泛应用。因为此系统设计要输出5V的电压。 综上所述:为了简化电路,使用方便。我们采用现在非常成熟的电源适配器供电。直接接适配器电源5V电。 2.2传感器的选择 方案一:超声波传感器发送声波出去,当有汽车经常时通过反射回来的声波消耗的时间进行计算。这样通过不同的距离来判断是否有汽车经过。优点精度高,小巧方便。 缺点就是使用起来比较复杂,而且也不宜安装。 方案二:采用红外线光电传感器,只要在所测距离内,有障碍物经过时。则输出一个高电平。当没有障碍物时输出低电平。这样就很好判断是否有汽车经过。 综上所述:我们采用了方案二,直接使用光电传感器来判断是否有车驶入。
2.3主芯片的的选取 方案一:采用8位微控制器。8位微控制器的典型代表是8051微控制器。8051微控制器是一款入门级微控制器,它内核简易,应用广泛,资料齐全,非常适合入门学习。同时它的价格低廉,是一款适用于追求低成本,不追求实时性的电子产品。在我国很长一段时间内,8051微控制器占据了小型家电市场,其中的原因正是超低的成本. 方案二:采用16位微控制器。MSP430微控制器是一款以低功耗闻名的16位微控制器,有许多低功耗的工作模式,采用了精简指令集(RISC)结构,具有丰富的寻址方式,高效率的查表处理指令。这些特点都保证了用它可以编写出高效率的源程序。 方案三:采用32位微控制器。Cortex-M0+内核基于ARMv6架构,支持Thumb/Thumb-2子集ISA,单核心,采用低成本的90nmLP工艺制造,核心面积仅0.04mm2,每MHz单位频率消耗的电流、功耗分别有9μA、11μW,是现今其它8/16位微控制器的大约三分之一,而性能上又比它们高出很多。飞思卡尔的Kinetis L系列微控制器基于ARM Cortex-M0+内核,是目前市场上能效极高的32位微控制器,每微安数据吞吐量居业内领先水平;超低功耗模式多种灵活的功率模式,适合不同的应用情形,可最大限度延长电池寿命;多种技术优化功耗,包括90nm薄膜存储(TFS)技术、时钟和电源门控技术,以及带有位处理引擎、外围交叉桥和零等待闪存控制器的高效平台等;深度睡眠模式下,可在不唤醒内核的情况下进行智能决策并处理数据。 综合上述几种单片机优缺点并且根据实验要求,就地取材选择了由STC公司生产的一种价格便宜、低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
3.1微处理器电路模块 STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 STC89C52RC单片机参数 ⑴8K字节程序存储空间; ⑵512字节数据存储空间; ⑶内带2K字节EEPROM存储空间; ⑷可直接使用串口下载;
3.2显示模块 显示部分是LCD1602液晶 一般1602字符型液晶显示器实物如下图所示:
3.2.1液晶简介 (1)1602LCD主要技术参数: 显示容量:16×2个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H)mm (2)引脚功能 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示: 编号 | 符号 | 引脚说明 | 编号 | 符号 | 引脚说明 | 1 | VSS | 电源地 | 9 | D2 | 数据 | 2 | VDD | 电源正极 | 10 | D3 | 数据 | 3 | VL | 液晶显示偏压 | 11 | D4 | 数据 | 4 | RS | 数据/命令选择 | 12 | D5 | 数据 | 5 | R/W | 读/写选择 | 13 | D6 | 数据 | 6 | E | 使能信号 | 14 | D7 | 数据 | 7 | D0 | 数据 | 15 | BLA | 背光源正极 | 8 | D1 | 数据 | 16 | BLK | 背光源负极 | 3.2.2指令说明 1602液晶模块内部的控制器共有11条控制指令,如表10-14所示: 序号 | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 1 | 清显示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 光标返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | 3 | 置输入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | 4 | 显示开/关控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | 5 | 光标或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * | 6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | 7 | 置字符发生存贮器地址 | 0 | 0 | 0 | 1 | 字符发生存贮器地址 | 8 | 置数据存贮器地址 | 0 | 0 | 1 | 显示数据存贮器地址 | 9 | 读忙标志或地址 | 0 | 1 | BF | 计数器地址 | 10 | 写数到CGRAM或DDRAM) | 1 | 0 | 要写的数据内容 | 11 | 从CGRAM或DDRAM读数 | 1 | 1 | 读出的数据内容 | 3.2.3显示电路原理图
3.3报警部分 当小车车库内停车位为0时,如果有小车继续驶入时。蜂鸣器就会发出报警声音来提醒驾驶员。此时驾驶员应该将车停在小区外的停车场。蜂鸣器通过一个PNP型的三极管驱动。三极管的基极接到单片机的P1.7口。 3.4停车位模拟停车模块 在此处用16盏LED灯4*4排列,用来模拟停车位。由于51单片机I/O口数量不足,所以使用了74HC595芯片对其进行了扩展。 74HC595是8位串行输入转并行输出移位寄存器。在正常使用时SCLR为高电平,G为低电平。从SER每输入一位数据,串行输595是串入并出带有锁存功能移位寄存器,它的使用方法很简单,如下面的真值表,在正常使用时SCLR为高电平, G为低电平。从SER每输入一位数据,串行输入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。 真值表:
软件设计是设计中很重要的部分。它关系到一个系统能否实现其预定的要求。
4.1主程序设计 主程序是软件设计的总体框架,因此主程序的流程图的设计决定了程序编写的好坏,该主程序的功能是扫描键盘,作出逻辑判断,控制各种中断,数据送入显示模块。其流程图如图14所示。
在判断车辆是否进出中:本系统使用了两个传感器,一个用来检测出去的车,一个检测进来的车。当两个传感器同时检测到车的时候,说明进出的是车辆。当一个传感器检测到车辆时,开门。当两个传感器都检测到时,通过逻辑判断,剩余车位数进行加减。
4.2倒计时中断程序设计 这个子程序用来计算开门的时间。当时间到时,根据传感器状态判断自动门是否可以关闭。若可以,则关闭,然后退出;若不可以,则再次设定自动门开启剩余时间,重新进入倒计时。程序流程图如图15所示:
4.3键盘中断程序设计 这一部分包括加、减、两个键,
4.3.1增加键 在此程序中,剩余车位不超过最大车位数.流程图如图所示:
4.3.2减少键 减少键的程序段和上图的增加键相似。
5.1 keil运行图
5.2 proteus仿真图
5.3实物图
本课题所研究的是通过单片机来实现对停车场的管理,这里用的是51系列芯片。本设计利用液晶显示屏显示,可以同时显示小区内停车位,汽车数,汽车驶入流量和驶出流量。 由于本系统的实现技术要求比较高,而且课题研究的时间仓促,以及本人能力有限,因此还有很多地方存在着不足之处: (1)本系统中的硬件部分不能实现集中控制,这样就增加了程序的编写难度,也相应的增加了系统的成本。 (2)系统稳定性需要加强,尽管这种情况不常发生,但是一旦发生就影响系统的运行。 (3)在功能上需要更加完善,本系统没有设置报警装置,如果系统发生故障,系统不能做出报警动作,这样也会影响系统的跟踪质量。 由于本人能力有限,做出的系统存在不少的问题,希望有更多的人参与其中,最终能做出性能好、精度高的停车场管理系统,以适应越来越多的私家车对停车位的需求。希望有更多的人参与到这项研究中来,性能好、精度高、低成本的控制系统是我们的目标。 结束语
从刚接到课题,我首先是查找一些相关的书籍及资料,并根据实际情况拟定设计方案,从而达到优化方案。在研究设计电路时,最难的是调试了,但在老师和同学的帮助下使得本次设计达到了预定的要求。同时,通过这次课题,在各个方面都有了很大的提高,特别是在理论和实践结合方面使我受益匪浅,使我大学里学习的理论知识在根本上得到一次最完整的实践和提高。 此次课题是在刘玉莹老师的悉心指导下完成的,从开始进入课题到设计的顺利完成,她都始终给予我耐心的指导和不懈的支持。老师认真的教学态度,严谨的治学精神,以及对学生无微不至的关爱,都深深地感染和激励着我,使我受益终生,在此表示衷心的谢意! 当然在本次课题中我也深深认识到自己的各个方面的不足之处,本着提高动手能力以及检测所学知识的目的,我严格要求自己,每一环节都认真对待,定期向知道老师报告进展情况和请教不懂的地方,得以完成任务。在这个过程中,我遇到许许多多问题,对待问题要多方法处理,多角度处理。这不但增强了实践能力,而且懂得了联系实际的重要性,我坚信这对以后的学习和会有极大的帮助。当然我的设计还存在着一些缺陷,有待于在将来设计中进一步提高。
单片机源程序如下:
- #include <reg52.h> //调用单片机头文件
- #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
- #define uint unsigned int //无符号整型 宏定义 变量范围0~65535
- #include <intrins.h>
- sbit K1=P1^0;
- sbit K2=P1^1;
- sbit K3=P1^2;
- sbit K4=P1^3;
- sbit beep = P1^7; //蜂鸣器IO口定义
- sbit SH = P3^5;
- sbit ST = P3^6;
- sbit DS = P3^7;
- uchar num_jin;
- uchar num_chu;
- uchar num_car;
- #include "lcd1602.h"
- /***********************1ms延时函数*****************************/
- void delay_1ms(uint q)
- {
- uint i,j;
- for(i=0;i<q;i++)
- for(j=0;j<120;j++);
- }
- void write_74hc595(unsigned int num)
- {
- int i;
- ST = 0;
- for(i=0; i<16; i++)
- {
- SH = 0;
- if (num & 0x0001)
- {
- DS = 1;
- }
- else
- {
- DS = 0;
- }
- SH = 1;
- num >>= 1;
- }
- ST = 1;
- }
- unsigned int num_2_led(unsigned int num)
- {
- int i;
- unsigned int ret=0;
- if (num > 16)
- return 0xFFFF;
- for(i=0;i<num;i++)
- {
- ret |= 1<<i;
- }
- return ret;
- }
- void key() //独立按键程序
- {
- if(!K1) // 汽车进入
- {
- delay_1ms(20);
- if(!K1)
- {
- while(!K1)
- ;
- if(num_car==16) { beep=0; delay_1ms(200); beep=1;}
- if(num_car<16) { num_car++; if(num_jin<=255) { num_jin++;} }
- write_sfm2(1,4,num_jin);
- write_sfm2(1,12,num_chu);
- write_sfm2(2,4,num_car);
- write_sfm2(2,12,16-num_car);
- write_74hc595(num_2_led(num_car));
- }
- }
- if(!K2) // // 汽车驶出
- {
- delay_1ms(20);
- if(!K2)
- {
- while(!K2);
- if(num_car>=1) { num_car--; if(num_chu<=255) { num_chu++;} }
- write_sfm2(1,4,num_jin);
- write_sfm2(1,12,num_chu);
- write_sfm2(2,4,num_car);
- write_sfm2(2,12,16-num_car);
- write_74hc595(num_2_led(num_car));
- }
- }
- /***********************手动修改小区内停车位*************************************/
- if(!K3) // 人工调节
- {
- delay_1ms(20);
- if(!K3)
- {
- while(!K3);
- if(num_car<16) { num_car++; }
- write_sfm2(1,4,num_jin);
- write_sfm2(1,12,num_chu);
- write_sfm2(2,4,num_car);
- write_sfm2(2,12,16-num_car);
- }
- }
- if(!K4) // // 人工调节
- {
- delay_1ms(20);
- if(!K4)
- {
- while(!K4);
- if(num_car>=1) { num_car--; }
- write_sfm2(1,4,num_jin);
- write_sfm2(1,12,num_chu);
- write_sfm2(2,4,num_car);
- write_sfm2(2,12,16-num_car);
- }
- }
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
所有资料51hei提供下载:
基于51单片机的停车场车位管理系统.7z
(1.4 MB, 下载次数: 1461)
|