【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
英文地址,請注明出處:http://en.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…