硬件设计
本设计利用单片机控制的一种停车场管理系统。它能在任意时间内,根据有效的停车空间,计算能够停泊的车辆数量,并且使用自动而可靠的完成车辆的进出。还能够显示是否有停放的场地以及是否有车辆进、出停车场。整体电路主要由51单片机+最小系统+LCD1602液晶显示模块+红外检测传感器+74HC595+蜂鸣器模块+LED指示灯模块+按键模块;
原理图如图:
Protues仿真如图:
设计功能
- 使用红外检测传感器分别对车辆的进和出进行统计。
- 通过按键来人工调整总车位数以及剩余车位数;
- 自动显示停车场的车位状态,进出和停放车辆统计。
- 统计小区当天已停放车辆总数,及剩余车位。
- 检测小区车位车辆是否已满,报警指示灯闪烁。
- 显示停车场现有车辆数和已停放过车辆数并且拥有16个模拟的停车位,用来显示车辆停放的具体情况。
主程序源码
void key() //独立按键程序
{
if(!K1) // 汽车进入
{
delay_1ms(20);
if(!K1)
{
while(!K1)
;
if(num_car==16) { beep=0; delay_1ms(2000); 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(); //独立按键程序
}
}
资料链接:https://pan.baidu.com/s/1oPqyqJiFEWXKFX2VItSONg?pwd=t7or
提取码:t7or