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

}

}

五、实验现象

演示视频:

相关推荐
btzhy1 天前
STM32单片机:基本定时器应用:精确定时(STM32L4xx)
stm32·单片机·嵌入式硬件·基本定时器应用:精确定时
Leo655351 天前
JDK8 的排序、分组求和,转换为Map
java·开发语言
磨十三1 天前
C++ 标准库排序算法 std::sort 使用详解
开发语言·c++·排序算法
云山工作室1 天前
基于单片机智能水产养殖系统设计(论文+源码)
单片机·嵌入式硬件·毕业设计·毕设
xiaomin20171 天前
【STM32 HAL库】高级定时器TIM8输出PWM
stm32·单片机·嵌入式硬件
两只程序猿1 天前
数据可视化 | Violin Plot小提琴图Python实现 数据分布密度可视化科研图表
开发语言·python·信息可视化
野生技术架构师1 天前
1000 道 Java 架构师岗面试题
java·开发语言
湫兮之风1 天前
C++: Lambda表达式详解(从入门到深入)
开发语言·c++
Porunarufu1 天前
JAVA·顺序逻辑控制
java·开发语言
Sylvia-girl1 天前
C语言中经常使用的函数
c语言·开发语言