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

五、实验现象

演示视频:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921690.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】S1 基础篇 P4 if 语句指南

目录简单示例条件测试检查是否相等与不等检查多个条件检查特定的值是否在/不在列表中布尔表达式if语句简单的if语句if-else语句if-elif-else语句使用if语句处理列表检查特殊元素确定列表非空使用多个列表总结if 语句是Python编程中最基本也是最重要的控制结构之一。它允许程序根…

【实战中提升自己】内网安全部署之STP的安全技术部署

1 1拓扑 「模拟器、工具合集」复制整段内容 链接&#xff1a;https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab7ulgil1 STP的安全技术部署 说明&#xff1a;为什么需要注意STP的安全呢&#xff0c;在二层中其实存在很多不安全的因素&#xff0c;物理上…

GEM5学习(5): ARM 架构功耗仿真

运行脚本基于gem5提供的脚本&#xff0c;启动功耗仿真。实际工作中应该不会用gem5进行功耗的仿真吧&#xff0c;Cadence和Synopsys好像都有配套的的功耗建模工具。事先要配置好 IMG_ROOT的环境变量./build/ARM/gem5.opt configs/example/arm/fs_power.py \--caches \--bootl…

【Python基础】 19 Rust 与 Python if 语句对比笔记

一、基本语法对比 Rust if 语句 // 基本形式 let number 7;if number < 5 {println!("condition was true"); } else {println!("condition was false"); }// 多条件 else if if number % 4 0 {println!("number is divisible by 4"); } el…

Vue项目_项目配置脚本代码详细讲解

Vue项目代码详细讲解 1. jsconfig.json - JavaScript配置文件 {"compilerOptions": { // 编译器选项配置"target": "es5", // 编译目标&#xff1a;将代码编译为ES5版本&#xff0c;确保更好的浏览器兼容性"module": "esnext…

第一节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门

Vben Admin vben5 系列文章目录 &#x1f4bb; 基础篇 ✅ 第一节&#xff1a;Vben Admin 最新 v5.0 (vben5) Python Flask 快速入门 ✅ 第二节&#xff1a;Vben Admin 最新 v5.0 (vben5) Python Flask 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节&#xff1a;V…

Guava中常用的工具类

1. 集合工具类&#xff08;com.google.common.collect&#xff09;Guava 对 Java 集合框架进行了丰富扩展&#xff0c;解决了标准集合的诸多痛点。&#xff08;1&#xff09;Lists / Sets / Maps:用于简化集合创建和操作&#xff1a;// 创建不可变集合&#xff08;线程安全&…

redission实现读写锁的原理

Redisson 实现分布式读写锁的核心原理是 ​基于 Redis 的 Lua 脚本原子操作​ ​Pub/Sub 通知机制&#xff0c;在保证强一致性的同时实现高效的读并发&#xff08;读不阻塞读&#xff0c;写阻塞读&#xff09;。以下是其核心设计&#xff1a;​一、核心数据结构​Redisson 使用…

【 ​​SQL注入漏洞靶场】第二关文件读写

SQLi-Labs​它是一个开源的、专门为学习 ​​Web安全​​ 和 ​​SQL注入技术​​ 而设计的靶场项目。开发者故意在代码中留下了各种不同类型的SQL注入漏洞&#xff0c;让安全研究人员、学生和爱好者可以在一个合法、安全的环境中进行实战练习&#xff0c;从而掌握发现和利用SQ…

设计艺术~缓存结构设计

背景 面对高QPS场景的业务&#xff0c;不得不考虑对一些数据做缓存设计&#xff0c;常见的缓存设计有这些&#xff1a;DB Proxy缓存、分布式缓存、Localcache缓存。 在考虑加缓存的背景下不考虑数据的一致性&#xff0c;都是瞎扯&#xff0c;所以我们再定义一下数据的一致性场景…

后端开发技术栈

后端开发技术栈核心技术内容平台 (Content Platform)电商 (E-Commerce)金融科技 (FinTech) / 支付物联网 (IoT - Internet of Things)游戏后端 (Game Backend)社交平台搜索平台企业级应用开发音视频处理后端地图与地理位置服务DevOps大数据开发大模型应用开发智能合约开发核心技…

【ICCV2025】计算机视觉|即插即用|ESC:颠覆Transformer!超强平替,ESC模块性能炸裂!

论文地址&#xff1a;https://arxiv.org/pdf/2503.06671 代码地址&#xff1a;https://github.com/dslisleedh/ESC 关注UP CV缝合怪&#xff0c;分享最计算机视觉新即插即用模块&#xff0c;并提供配套的论文资料与代码。 https://space.bilibili.com/473764881 摘要 本研究…

【面试场景题】如何进行高并发系统的性能测试?

文章目录一、明确测试目标与指标二、测试环境搭建三、测试工具选型四、测试场景设计五、执行测试与监控六、瓶颈分析与调优七、测试报告与迭代总结高并发系统的性能测试是验证系统在极限流量下是否能保持稳定运行的关键环节&#xff0c;需要结合场景设计、工具选型、指标监控、…

攻防世界ReverseMe-120

这道题比较经典&#xff0c;涉及三个知识点&#xff0c;所以记录一下。首先给了一个文件&#xff0c;detect it easy看了下&#xff0c;是32位exe。放入ida中&#xff0c;找下main函数&#xff0c;F5反编译看一下伪代码。int __cdecl main(int argc, const char **argv, const …

小白也能看懂,HTTP中的文件上传与下载到底发生了什么?

HTTP 文件传输协议解析&#xff1a;上传与下载 这份文档会用最简单的方式&#xff0c;带你了解 HTTP 协议是如何处理文件下载和上传的。我们会专注于协议本身&#xff0c;看看客户端&#xff08;比如你的浏览器&#xff09;和服务端&#xff08;网站服务器&#xff09;之间到底…

快速构建数据集-假数据(生成划分)

快速构建数据集-假数据1、torch.randn&#xff08;✅&#xff09;2、HuggingFace Datasets&#xff08;✅&#xff09;&#x1f539;1. 从字典生成&#x1f539;2. 从 pandas.DataFrame 生成&#x1f539;3. 批量生成“业务型”假数据&#xff08;配合 Faker&#xff09;&#…

[修订版]Xenomai/IPIPE源代码情景解析

[修订版]Xenomai/IPIPE源代码情景解析 第一章&#xff1a;Interrupt Pipeline介绍 1.1 I-pipe与Xenomai1.2 I-pipe核心概念1.3 拉取I-pipe代码 第二章&#xff1a;I-pipe对ARM64异常的改造 2.1 ARM64中断机制与异常处理2.2 EL0_IRQ 中断改造之入口2.3 EL0_IRQ 中断改造之中断处…

【Qt开发】按钮类控件(三)-> QCheckBox

目录 1 -> 概述 2 -> 核心特性 2.1 -> 状态管理 2.2 -> 信号机制 2.3 -> 外观与文本 3 -> 应用场景 4 -> 代码示例 5 -> 总结 1 -> 概述 QCheckBox 是 Qt 框架中提供的一个基础控件&#xff0c;用于实现复选框功能。它允许用户在两种或三种…

在新发布的AI论文中 pytorch 和tensorflow 的使用比例

根据 2025 年最新的学术动态和行业报告&#xff0c;PyTorch 在 AI 论文中的使用比例已占据绝对主导地位&#xff0c;而 TensorFlow 的占比持续下降。以下是基于多个权威来源的综合分析&#xff1a; 一、顶级会议中的框架分布 在 NeurIPS、ICML、CVPR 等顶级学术会议中&#xff…

3DXML格式是什么?用什么软件可以打开?

3DXML 是一种开放标准的数据交换格式&#xff0c;主要用于三维 CAD&#xff08;计算机辅助设计&#xff09;模型的存储和交换。它是由 Dassault Systmes 开发的一种文件格式&#xff0c;常用于 CATIA V6 和其他支持该格式的应用程序中。3DXML 文件可以包含完整的 3D 模型数据&a…