【51单片机】【protues仿真】基于51单片机停车场的车位管理系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

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(); //独立按键程序

}

}

五、实验现象

演示视频:

相关推荐
十八度的天空几秒前
第01节 Python的基础语法
开发语言·python
yue00812 分钟前
C# 字符串倒序
开发语言·c#
强子感冒了20 分钟前
Java学习笔记:String、StringBuilder与StringBuffer
java·开发语言·笔记·学习
低保和光头哪个先来26 分钟前
场景6:对浏览器内核的理解
开发语言·前端·javascript·vue.js·前端框架
小北方城市网29 分钟前
Python + 前后端全栈进阶课程(共 10 节|完整版递进式|从技术深化→项目落地→就业进阶,无缝衔接基础课)
大数据·开发语言·网络·python·数据库架构
程序员JerrySUN34 分钟前
OP-TEE + YOLOv8:从“加密权重”到“内存中解密并推理”的完整实战记录
android·java·开发语言·redis·yolo·架构
阿里嘎多学长1 小时前
2025-12-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管
郝学胜-神的一滴1 小时前
Linux进程与线程控制原语对比:双刃出鞘,各显锋芒
linux·服务器·开发语言·数据结构·c++·程序人生
小钟不想敲代码1 小时前
Python(一)
开发语言·python
ji_shuke1 小时前
canvas绘制拖拽箭头
开发语言·javascript·ecmascript