目录
一、主要功能
二、使用步骤
三、硬件资源
四、软件设计
五、实验现象
一、主要功能
1、LCD1602液晶显示
2、统计并显示停车场现有车辆数和已停放过车辆数
3、按键设置总车位数以及剩余车位数
4、统计并显示累计驶入和累计驶出车辆数
5、用16个LED灯模拟停车位
6、车位停满报警
二、使用步骤
基于51单片机的停车场车位管理系统,显示模块显示当前车位信息,步进电机和led指示灯模拟车进入或出去停车场的状态改变。
三、硬件资源
1、51单片机核心模块
2、按键模块
3、红外对管模块、步进电机模块
4、蜂鸣器模块
5、LED指示灯模块
6、LCD1602显示模块
四、软件设计
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#include <intrins.h>
#include "lcd1602.h"
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit beep = P1^7; //蜂鸣器IO口定义
sbit LED=P3^4;
sbit SH = P3^5;
sbit ST = P3^6;
sbit DS = P3^7;
uchar num_jin;
uchar num_chu;
uchar num_car;
uchar code zz[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar code fz[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
void motor_ting();
/***********************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;
}
void key() //独立按键程序
{
if(!K1)
{
delay_1ms(20);
if(!K1)
{
while(!K1);
if(num_car==16)
{
beep=0;
delay_1ms(1000);
delay_1ms(1000);
delay_1ms(1000);
beep=1;
}
if(num_car<16)
{
num_car++;
motor_zz(1);//步进电机启动开闸门
motor_ting();//开启停留时间
motor_fz(1);//步进电机启动关闸门
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);
motor_zz(1);
if(num_car>=1)
{
num_car--;
motor_zz(1);//步进电机启动开闸门
motor_ting();//开启停留时间
motor_fz(1);//步进电机启动关闸门
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));
}
}
}
/***************主函数*****************/
void main()
{
LED=0;
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(); //独立按键程序
}
}
五、实验现象
演示视频: