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

}

}

五、实验现象

演示视频:

相关推荐
凡人叶枫9 分钟前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
CODECOLLECT14 分钟前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
春日见22 分钟前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
锐意无限25 分钟前
Swift 扩展归纳--- UIView
开发语言·ios·swift
低代码布道师26 分钟前
Next.js 16 全栈实战(一):从零打造“教培管家”系统——环境与脚手架搭建
开发语言·javascript·ecmascript
念何架构之路43 分钟前
Go进阶之panic
开发语言·后端·golang
亓才孓1 小时前
[Properties]写配置文件前,必须初始化Properties(引用变量没执行有效对象,调用方法会报空指针错误)
开发语言·python
BackCatK Chen1 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
傻乐u兔1 小时前
C语言进阶————指针3
c语言·开发语言
两点王爷1 小时前
Java基础面试题——【Java语言特性】
java·开发语言