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

}

}

五、实验现象

演示视频:

相关推荐
Zz_waiting.13 分钟前
统一服务入口-Gateway
java·开发语言·gateway
四维碎片33 分钟前
【Qt】大数据量表格刷新优化--只刷新可见区域
开发语言·qt
薛慕昭42 分钟前
C语言核心技术深度解析:从内存管理到算法实现
c语言·开发语言·算法
火星数据-Tina1 小时前
Python + WebSocket 实现实时体育比分系统(含数据库设计与前端演示)
开发语言·前端
星辰pid1 小时前
STM32基于OLED的多级菜单(控制步进/无刷电机/舵机,含FLASH存储数据掉电不丢失)
stm32·单片机·嵌入式硬件
⑩-1 小时前
浅学Java-设计模式
java·开发语言·设计模式
攻心的子乐1 小时前
软考 关于23种设计模式
java·开发语言·设计模式
qq_479875432 小时前
C++ ODR
java·开发语言·c++
一叶之秋14122 小时前
Qt开发初识
开发语言·qt
ANGLAL2 小时前
25.Spring Boot 启动流程深度解析:从run()到自动配置
java·开发语言·面试