【毕业设计】79-基于51单片机的智能停车场车位管理系统计(论文+原理图工程+仿真工程+源代码+流程图+物料清单+工程文件截图)

设计需求:

本设计由STC89C52单片机电路+红外对管传感器+LCD1602液晶显示电路+LED指示灯电路+电源电路组成。
1、通过红外对管模块实时检测车位是否占用,车位分为1车位,2车位,3车位;
2、液晶实时显示车位是否被占用、车位被占用数、空车位数,红外对管有检测遮挡距离近,表示停有车辆;
3、车位处是否停车并有状态指示灯指示。

摘要

随着我国的经济水平提高,车辆已经成为了大家家里必不可少的设备,随着私家车的增加,但是同样也增加了停车无车位的风险,目前市面上也有很多停车场,本次毕设设计一款智能停车车管管理系统。
本文通过三个车位设计一款基于51单片机的智能停车场车位管理系统。车位一、车位二、车位三,选择使用STC89C52单片机作为主控制器,红外传感器,指示灯,液晶显示器以及按键来设计出一款智能停车场车位管理系统,通过红外传感器信号转化为电信号,并将电信号转化为数字信号,经过单片机处理实现车位检测。车位的信息会显示在液晶显示器中,可以通过按键控制车库的停车信息,保障行车安全。在系统的设计验证过程中。充分保证电路设计安全,并且符合国家标准设定保证系统在设计过程中符合国家标准,并且可以推广应用在车库系统中。
本次系统设计通过仿真来对系统验证不论是硬件还是软件上,均已实现所有功能,并且在设计过程中充分考虑到整个系统的性价比,便于后期推广和功能拓展。本系统在研发过程中紧跟社会发展,具有较大的实际推广意义。

资料包含:

1、详细说明书(2.1235W字)
2、原理图工程
3、仿真工程
4、源代码
5、流程图
6、物料清单
7、原理图截图、仿真截图

注意:资料为虚拟产品,资料仅用于学习单片机技术及原理。禁止用于他用。

目 录

前 言 1
第一章 绪论 2
第一节 研究背景 2
第二节 国内研究情况 3
第三节 国外研究情况 4
第四节 本文的主要研究内容 4
第五节 本章小结 5
第二章 智能停车场车位管理系统方案设计 6
第一节 系统功能分析 6
第二节 系统主要元器件选型 6
一、单片机选型 6
三、显示器选型 7
第三节 系统硬件总框图 7
第四节 本章小结 8
第三章 智能停车场车位管理系统电路设计 9
第一节 主控制器最小系统设计 9
第二节 电源模块设计 11
第三节 按键电路模块设计 12
第四节 LED显示模块电路设计 12
第五节 LCD液晶显示模块电路设计 13
第六节 信息显示液晶电路设计 15
第七节 车库进出场电路设计 16
第八节 系统总电路图设计 17
第九节 本章小结 18
第四章 智能停车场车位管理系统的软件设计 19
第一节 软件开发工具介绍 19
第二节 软件总架构设计 20
一、主程序设计流程 20
第三节 按键模块程序设计 21
一、按键程序设计流程 21
第四节 LCD液晶显示模块程序设计 22
第五节 红外检测模块程序设计 23
一、红外检测模块程序设计流程 23
第六节 LED指示灯模块程序设计 24
一、LED指示灯程序设计流程 24
第七节 本章小结 25
第五章 智能停车场车位管理系统的仿真实现 26
第一节 仿真开发工具介绍 26
第二节 仿真电路搭建及调试 26
第三节 系统仿真测试 27
第四节 本章小结 30
总 结 31
致 谢 32
参考文献 33
附 录 35
一、英文原文 35
二、英文翻译 42
三、工程图纸 47
四、源代码 48

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

#include <reg51.h>
#include <intrins.h>
#include <AMPIRE128X64.h>
#include "lcd1602.h"
sbit led=P3^4;//警示灯
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^1;//清零

sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;

sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
 uchar code num0[] ={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};/*"0",0*/
 uchar code num1[] ={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};/*"1",1*/
 uchar code num2[] ={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00};/*"2",2*/
 uchar code num3[] ={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00};/*"3",3*/
 uchar code num4[] ={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};/*"4",4*/
 uchar code num5[] ={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};/*"5",5*/
 uchar code num6[] ={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};/*"6",6*/
 uchar code num7[] ={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00};/*"7",7*/
 uchar code num8[] ={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};/*"8",8*/
 uchar code num9[] ={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};/*"9",9*/
 uchar code mao[] ={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*":",0*/

 uchar code str1[] ={0x40,0x40,0x42,0xCC,0x00,0x80,0x88,0x88,0xFF,0x88,0x88,0xFF,0x88,0x88,0x80,0x00,
0x00,0x40,0x20,0x1F,0x20,0x40,0x50,0x4C,0x43,0x40,0x40,0x5F,0x40,0x40,0x40,0x00};/*"进",0*/

 uchar code str2[] ={0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0xFC,0x00,0x00,0x00,
0x00,0x7C,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0xFC,0x00,0x00};/*"出",1*/

 uchar code str3[] ={0x00,0x00,0xE2,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00};/*"已",2*/

 uchar code str4[] ={0x80,0x60,0xF8,0x07,0x00,0x04,0x74,0x54,0x55,0x56,0x54,0x54,0x74,0x04,0x00,0x00,
0x00,0x00,0xFF,0x00,0x03,0x01,0x05,0x45,0x85,0x7D,0x05,0x05,0x05,0x01,0x03,0x00};/*"停",3*/

 uchar code str5[] ={0x48,0x4A,0xFA,0x0A,0xFE,0x09,0xF9,0x49,0xA8,0x00,0x00,0xF0,0x00,0x00,0xFF,0x00,
0x22,0x11,0x0B,0x04,0xFF,0x04,0x09,0x12,0x23,0x00,0x00,0x0F,0x40,0x80,0x7F,0x00};/*"剩",4*/

 uchar code str6[] ={0x80,0x80,0x40,0x20,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x20,0x40,0x80,0x80,0x00,
0x00,0x40,0x22,0x1A,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x0A,0x12,0x60,0x00,0x00};/*"余",5*/

 uchar code str7[] ={0x00,0x08,0x88,0x48,0x28,0x18,0x0F,0xE8,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
0x08,0x08,0x09,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x09,0x08,0x08,0x00};/*"车",6*/

 uchar code str8[] ={0x00,0x80,0x60,0xF8,0x07,0x10,0x90,0x10,0x11,0x16,0x10,0x10,0xD0,0x10,0x00,0x00,
0x01,0x00,0x00,0xFF,0x40,0x40,0x41,0x5E,0x40,0x40,0x70,0x4E,0x41,0x40,0x40,0x00};/*"位",7*/

 uchar code str9[] ={0x00,0x00,0xE2,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00};/*"已",8*/

 uchar code str10[] ={0x10,0x60,0x02,0x8C,0x00,0x24,0x24,0x2F,0xE4,0x24,0x24,0xE4,0x2F,0x24,0x24,0x00,
0x04,0x04,0x7E,0x01,0x00,0xFF,0x11,0x09,0x07,0x19,0x09,0x07,0x49,0x91,0x7F,0x00};/*"满",9*/


uchar sec=0,time=0;//时间
uint jin=0,chu=0;//进出
uchar ting=0;//停放
uchar disp1[]="                ";
uchar disp2[]="                ";

uchar *p,*q;//显示指针
void find(uchar i)//查找指针
{
	switch(i)
	{
		case 0:p=num0;break;
		case 1:p=num1;break;
		case 2:p=num2;break;
		case 3:p=num3;break;
		case 4:p=num4;break;
		case 5:p=num5;break;
		case 6:p=num6;break;
		case 7:p=num7;break;
		case 8:p=num8;break;
		case 9:p=num9;
	}
}
//==========================================
uchar key_scan()//按键检测
{
uchar i,j;
i=0;
j=0;
P1=0x0f;
if(P1!=0x0f) //检测有无按下
{
 switch(P1)//检测行
 {
  case 0x0e:i=1;break;
  case 0x0d:i=5;break;
  case 0x0b:i=9;break;
  case 0x07:i=13;
 }
 P1=0xf0;
 switch(P1)//检测列
 {
  case 0xe0:j=0;break;
  case 0xd0:j=1;break;
  case 0xb0:j=2;break;
  case 0x70:j=3;
 }
 while(P1!=0xf0);//等待按键松开
}
return i+j;
}
//主函数
void main()
{
    uchar i=0;
	uint a = 0, b =0, c = 0;
	init_1602();
	lcd_init();                 // 初始化
    lcd_clear(0);               // 清屏
    lcd_set_line(0);             // 设置起始行为0

 	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	write_string(1,0,"P1     P2     P3");
    while (1)
	{		 
		
		if(k5 == 0 && a != 1)
		{	a =1;
			
			while(!k5);
			write_string(2,1,"0");
			ting++;
			LED1 = 0;
		}
		
		if( a == 1 && k5 == 0)
		{ a = 0;
			while(!k5);
			write_string(2,1," ");
			ting--;
			LED1 = 1;
		}
			
		
		if(k6 == 0 && b != 1)
		{	b = 1;
			while(!k6);
			write_string(2,8,"0");
			ting++;
			LED2 = 0;
		}
		if(k6 == 0 && b == 1)
		{	b = 0;
			while(!k6);
			write_string(2,8," ");
			ting--;
			LED2 = 1;
		}		
		

		
		if(k7 ==0 && c != 1)
		{ c = 1;
			while(!k7);
			write_string(2,15,"0");
			ting++;
			LED3 = 0;
		}
		if(k7 ==0 && c == 1)
		{ c = 0;
			while(!k7);
			write_string(2,15," ");
			ting--;
			LED3 = 1;
		}		
		
		 if(!k3)
		 {
		 	jin=0;
			chu=0;
		 }
		 //按键检测
		 if(!k1)//进入
		 {
		 	if(jin<9999)
				jin++;
			while(!k1);
		 }
		 if(!k2)//出去
		 {
		 	if(chu<9999)
				chu++;
			while(!k2);
		 }
//		 //车位检测
//		 i=key_scan();
//		 if((i<9)&&(i>0))//车位1-8
//		 {
//		 	if(disp1[(i-1)*2]==' ')
//			{
//				disp1[(i-1)*2]='0';
//				ting++;
//			}
//			else
//			{
//				disp1[(i-1)*2]=' ';
//				ting--;
//			}
//			write_string(1,0,disp1);
//			write_string(2,0,disp2);
//		 }
//		 if(i>8)//车位9-16
//		 {
//		 	if(disp2[(i-9)*2]==' ')
//			{
//				disp2[(i-9)*2]='0';
//				ting++;
//			}
//			else
//			{
//				disp2[(i-9)*2]=' ';
//				ting--;
//			}
//			write_string(1,0,disp1);
//			write_string(2,0,disp2);
//		 }
	}
}
//定时器0中断
void Timer0() interrupt 1
{
	if(time<10)//计时0.5s
		time++;
	else
	{
		time=0;
		if(ting==3)//闪烁警示
			led=!led;
		else
			led=1;
	}
	if(sec<20) //显示控制
		sec++;
	else
	{
		sec=0;
		lcd_clear(0);               // 清屏
    	lcd_set_line(0);             // 设置起始行为0

		display(1, 0, 0 * 16, str1);//进
		display(1, 0, 1 * 16, mao);
		find(jin/1000);q=p;
		find(jin%1000/100);
		display_num(1, 0,2 * 16, q , p);
		find(jin%100/10);q=p;
		find(jin%10);
		display_num(1, 0,3 * 16, q , p);
		display(2, 0, 4 * 16, str2);//出
		display(2, 0, 5 * 16, mao);
		find(chu/1000);q=p;
		find(chu%1000/100);
		display_num(2, 0,6 * 16, q , p);
		find(chu%100/10);q=p;
		find(chu%10);
		display_num(2, 0,7 * 16, q , p);
		display(1, 2, 0 * 16, str3);//已停
		display(1, 2, 1 * 16, str4);
		display(1, 2, 2 * 16, mao);
		find(ting/10);q=p;
		find(ting%10);
		display_num(2, 2,4 * 16, q , p);
		display(1, 4, 0 * 16, str5);//剩余
		display(1, 4, 1 * 16, str6);
		display(1, 4, 2 * 16, mao);
		find((3-ting)/10);q=p;
		find((3-ting)%10);
		display_num(2, 4,4 * 16, q , p);
		if(ting==3)
		{
		display(1, 6, 2 * 16, str7);//车位已满
		display(1, 6, 3 * 16, str8);
		display(2, 6, 4 * 16, str9);
		display(2, 6, 5 * 16, str10);
		}
	}	
	TH0=0X3C;
	TL0=0XB0;
}

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐