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

}

}

五、实验现象

演示视频:

相关推荐
晓晓hh4 小时前
JavaSE学习——迭代器
java·开发语言·学习
iFlyCai4 小时前
C语言中的指针
c语言·数据结构·算法
Laurence4 小时前
C++ 引入第三方库(一):直接引入源文件
开发语言·c++·第三方库·添加·添加库·添加包·源文件
kyriewen115 小时前
你点的“刷新”是假刷新?前端路由的瞒天过海术
开发语言·前端·javascript·ecmascript·html5
014-code5 小时前
String.intern() 到底干了什么
java·开发语言·面试
421!5 小时前
GPIO工作原理以及核心
开发语言·单片机·嵌入式硬件·学习
摇滚侠5 小时前
JAVA 项目教程《苍穹外卖-12》,微信小程序项目,前后端分离,从开发到部署
java·开发语言·vue.js·node.js
@insist1236 小时前
网络工程师-生成树协议(STP/RSTP/MSTP)核心原理与应用
服务器·开发语言·网络工程师·软考·软件水平考试
野生技术架构师6 小时前
2026年牛客网最新Java面试题总结
java·开发语言
环黄金线HHJX.6 小时前
Tuan符号系统重塑智能开发
开发语言·人工智能·算法·编辑器