基于51单片机的停车场车位管理系
1、主要功能
该系统由:电源模块、传感器模块、显示模块、手动键盘输入模块、车辆车位模拟模块等模块组成。可以实现控制的开启、显示停车场现有车辆数和已停放过车辆数、人工的设置总车位数以及剩余车位数的数值显示等功能。总共拥有16个模拟的停车位,用来显示车辆停放的具体位置。
2、仿真实验
3、程序代码
/**
************************************* Copyright ******************************
File name: // main.c
Author:Kevin
Version: //1.0
Description: // 基于51单片机的停车场车位管理系统
Others: // 其它内容的说明
Log: // 公众号:Kevin的学习站
******************************************************************************
*/
#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);
}
}
}
/***************主函数*****************/
void main()
{
init_1602();
write_string(1,0,"Jin: Chu:");
write_string(2,0,"Car: P:");
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(0);
while(1)
{
key(); //独立按键程序
}
}
4、原理图
5、资源获取
百度网盘链接:
链接:https://pan.baidu.com/s/1NWg8EdI-6MJoonAWQcVTsg
提取码:j7b1
解压密码在公众号:Kevin的学习站,回复:052获取!
项目的仿真和程序工程已经放在下面公众号里面,可以关注公众号:Kevin的学习站,输入关键字:“052”,就可以获取啦!创作不易,但您的点赞、关注、收藏就是对我最大的鼓励!