基于單片機的樓宇門禁系統的設計與實現

2、系統總體設計

2.1硬件的總體設計
為了使門禁系統智能化,需要一個主控芯片對整個門禁系統進行管理控制。接著還需要對應的模塊完成包括數字密碼驗證和IC卡識別驗證的功能。當出現非法闖入、驗證失敗等情況時還需要對操作人員進行警告。最后需要一個人機交互界面方便管理人員對門禁系統進行管理控制。硬件總體設計框圖如圖2.1所示。
本設計采用STM32F103為主控芯片,控制其他模塊,對信息進行處理運算。STM32相比于51單片機性能更快,引出的GPIO口更多,功能更加豐富,相比起其他高性能的嵌入式設備具有功耗低,成本低的特點,更加適用于低成本的智能化門禁系統。
MRC522射頻識別模塊與主控芯片STM32F103通過SPI接口連接,MRC522接收主控芯片發送的命令,進行相應的操作,并將內部發送數據給主控芯片。同時與搜索的IC卡進行通信,識別IC卡的信息。MRC522采用的是NFC原理與IC卡通信,有三輪認證機制,通信過程安全快速,同時擁有防沖突機制,可以在多張卡的情況下選擇卡片進行識別。同時IC卡相比對ID卡有密碼驗證方式,不容易被復制,更加的安全。
觸摸屏通過8080接口與STM32F103連接,觸摸屏包含液晶顯示屏和電阻屏。液晶顯示屏內帶有控制芯片和顯存,主控芯片只要向顯存寫入數據就可以在液晶顯示屏上顯示內容,使用起來方便,電阻屏也自帶有控制芯片,處理觸摸數據,可以降低對主控芯片性能的需求。管理人員可以通過按壓電阻屏進行操作,并看到液晶顯示屏的顯示信息,方便管理人員對門禁系統進行管理。觸摸屏還可以用于數字密碼驗證,解決用戶忘記攜帶IC卡的情況,同時數字密碼可以作為管理人員的驗證方式。為了更好地反饋操作結果,提供錯誤警告,使用RGB等和蜂鳴器作為報警系統。
在這里插入圖片描述

圖2.1 硬件總體框圖

3.系統的硬件設計

3.1 STM32芯片
本次采用STM32F103VET6芯片作為主控芯片,該芯片對外有100個引出的GPIO接口,方便和其他模塊進行連接,從而控制其他模塊,實現更多的功能。還有512K FLASH閃存,64KRAM,充足的內存可以讓芯片裝載的程序更大,存儲的數據更多。芯片的實物圖如圖3.1所示。

在這里插入圖片描述

圖3.1 STM32F103VET6實物圖
STM32F103內部已經經過了封裝,由內核和片上外設構成。STM32F103采用的是由ARM公司研究設計Cortex-M3內核,外接晶振可達72MKZ主頻,性能強大。STM32F103包含了SPI、I2C、USART接口,這些是芯片生產廠商在內核上擴展的功能,讓芯片的性能和作用更加的強大,可以管理和控制更多的設備。STM32F1系列的框圖如圖3.2所示。
本次設計使用了SPI接口來對射頻識別模塊MRC522進行通信和管理控制,從而實現IC卡驗證的功能,還通過普通的GPIO口來對RGB燈和蜂鳴器進行控制,完成報警的功能。
3.2射頻識別模塊
3.2.1 功能特性
本設計采用MFRC522模塊來識別IC卡,實現開門驗證的功能。MFRC522模塊內部已經集成了各自器件,包括天線、邏輯控制功能、寄存器。模塊引腳圖如圖3.3所示。
MFRC522中的內部發送器,可以驅動讀寫器天線,給IC卡提供能量,發送數據給IC卡,接收IC卡發送的信息,進行通信。接收器的解調電路可以將IC卡發送的數據載波進行解調轉為二進制數據,譯碼電路則將二進制數據轉為信息,表示 IC卡傳輸的數據,數字電路部分可以對傳輸的數據進行處理,錯誤檢測。
3.2.2 通信原理
當主控芯片讀取MRC522寄存器的數據時,STM32主機第一個字節發送一個地址,從機發送無效數據。第二個字節時,MRC522才返回對應地址的數據。可以根據地址的格式可以判斷是讀地址還是寫地址。當最高位是1時,是讀數據,最高位是0時,是寫數據。主機和從機的數據根據時鐘信號同時發送傳輸,先發送最高位。
當要向MRC522的寄存器寫一個數據時,STM32芯片發送一個寫數據的地址,然后第二個字節發送數據。在寫數據時,MRC522返回的數據是無效數據,可以忽略。當發送的是地址時,地址的最高位代表是讀地址還是寫地址,中間六位代表地址,最低位默認位0。
MISO和MOSI傳輸的每一個字節都是高位在前,在時鐘上升沿保持不變,在下降沿改變。NSS信號必須為低,方便在一個數據流中發送多個字節。為了發送多個數據流,NSS必須在數據流之間設置為高電平。因為時鐘開始為低,所以在下降沿改變需要第二個跳變沿。因此在設置SPI傳輸的時鐘極性等于0,時鐘相位等于1。SPI通信時序圖如圖3.2所示。

在這里插入圖片描述

圖3.2 SPI通信時序圖

4、系統的軟件設計

4.1 系統的初始化
STM32標準庫:
在實際開發中會發現,有時使用同一個內核,只是生產廠商不同,片上外設有少許的差異,也會導致相互之間的程序不能移植。為了解決這個問題,ARM公司與芯片廠商之間建立了一個標準標準。即 CMSIS 標準,實際上是建立了一個軟件抽象層。屏蔽了具體的硬件之間的差異,使軟件的兼容性更好。
而本次設計采用的STM32的標準庫。就是按照 CMSIS 標準建立的。很多底層的初始化,寄存器地址聲明都包含在里面。使用標準庫開發,可以加快項目進展。從ST的官網中獲取標準庫,將其中需要用到的文件包含到項目中。下面這些文件是開發中需要使用到的必要文件,如果我們要使用STM32F1系列芯片,都必須把文件包含到項目中。還有一些外設的文件,在使用的時候再添加進來。
(1)寄存器地址和寄存器數據結構定義文件
<system_stm32f10x.c><stm32f10x.h>
(2)內核相關文件
<system_stm32f10x.c>|<system.stm32f10x.h>|<core_cm3.h>|<core_cm3.c>
(3)外設驅動文件
<misc.c>|<stm32f10x_ppp.c>|<misc.h>|<stm32f10x_ppp.h>
(4)啟動文件
< startup_stm32f10x_hd.s>
(5)還有中斷服務函數,系統時鐘初始化,包含外設等函數相關的文件。<stm32f10x_it.c>、<stm32f10x_it.h>、<stm32f10x_conf.h> 。
外部設備初始化:
由于STM32的外設很多,為了降低功耗,每個外設都對應著一個時鐘,在芯片剛上電的時候這些時鐘都是被關閉的,如果想要外設工作,必須把相應的時鐘打開。使用的GPIO口也要根據作用,對輸入輸出方式,傳輸速度等進行設置。因此要先將模塊使用的GPIO口進行配置,在標準庫中,已經有宏定義定義了GPIO口對應的寄存器的別名,并且將這些配置封裝在一個結構體中。所以只要打開時鐘,配置功能結構體就可以完成外設的初始化操作。。
因為MRC522使用的是SPI方式與STM32通信,因此除了配置對應GPIO口的結構體,還需要將其GPIO口功能設置為SPI模式。并且設置SPI傳輸模式、相位和極性、傳輸速度。
本次設計中的液晶顯示控制器ILI9341通過8080接口和STM32通信。如果使用普通的GPIO口進行模擬,效率很低,在STM32中使用FSMC外設來管理擴展存儲器,因為想要在液晶屏上顯示數據,就要通過接口把數據寫入到內存上,這個和FSMC控制存儲器相似。經過驗證,可以使用FSMC接口來實現8080的通信時序,從而控制液晶顯示屏數據顯示。
觸摸屏初始化的配置首先要開啟時鐘和端口引腳,模式配置,以及顯示屏的各種參數設置。廠家已經提供了參數的配置數據,將封裝好的函數文件直接包含到項目中即可。最終使用寫入控制命令和寫入數據兩個函數來顯示想要文字圖片。
為了節約成本,沒有進行外擴內存卡。只使用少量的內存,想要顯示圖片有些困難。為了實現基本的操作界面,采用循環寫入像素點的方式,進行動態繪制操作界面。這個跟圖像的顯示很類似,但節約了內存空間,通過運算力來換取存儲空間。
4.2 主函數功能
系統程序采用輪詢的方式,當初始化完成,進入while循環,不斷重復進行判斷,當有操作時,執行對應的操作。主循環邏輯框圖如圖4.1所示。
首先進行主控芯片的初始化,調用各個初始化函數進行初始化。之后進入主函數,進入循環。接著在循環里,判斷當前的菜單界面標志位,從而在屏幕中顯示對應的界面。上電復位的初始狀態位于主界面,觸摸屏顯示四個按鈕,輸入密碼,增加IC卡,刪除IC卡,修改密碼。接著先進行判斷是否識別到IC卡。跳轉到識別IC卡的函數中去,如果當通訊范圍內搜尋到IC卡,則執行IC卡驗證函數。否則跳出,回到主循環。接著進入到觸摸屏檢測函數,如果觸摸屏被按下,主控芯片對按下的位置進行判斷。如果是按鈕對應的位置被按下,則跳轉到對應的界面的函數,同時界面標志位改變,液晶顯示屏進行刷新。如果不是,則回到主函數,進行下一輪的循環。

在這里插入圖片描述

圖4.1 主循環邏輯框圖

文章底部可以獲取博主的聯系方式,獲取源碼、查看詳細的視頻演示,或者了解其他版本的信息。
所有項目都經過了嚴格的測試和完善。對于本系統,我們提供全方位的支持,包括修改時間和標題,以及完整的安裝、部署、運行和調試服務,確保系統能在你的電腦上順利運行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916105.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916105.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916105.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

全天候自動化數字型智能驅鳥裝置,電網防鳥高科技

鳥類在輸電線路鐵塔、電線桿上筑巢、棲息和排泄是個大問題&#xff0c;很容易引發線路故障導致停電。為了保障電網安全穩定運行&#xff0c;會用到各種智能驅鳥裝置來驅趕鳥類&#xff0c;避免涉鳥故障發生。例如全天候自動化數字型智能驅鳥裝置&#xff0c;其厲害的地方在于它…

技術、生態與商業:從PC到移動的平臺之爭

在科技發展的漫長歷史中&#xff0c;我們常常驚嘆于那些改變世界的偉大技術。然而&#xff0c;深入探究會發現&#xff0c;單純的技術領先并不能保證最終的勝利。從 PC 操作系統到移動終端&#xff0c;乃至服務器軟件&#xff0c;那些最終笑傲江湖的巨頭們都遵循著一個共同的法…

android JXL 導出Excel(.xls/xlsx)

前面使用過 POI 導出xlsx但是它體量比較大&#xff0c;功能較豐富&#xff0c;在一些對包size比較敏感并且導出需求相對簡單的項目中就不太適合。 poi鏈接&#xff1a;Android 導入導出excel xls、xlsx_android excel導入導出-CSDN博客 jxl 包體積小&#xff0c;使用簡單、AP…

mysql 的主從機制是怎么實現的?

MySQL 作為當前最流行的開源關系型數據庫之一&#xff0c;為了滿足數據的高可用、負載均衡和容災備份等需求&#xff0c;廣泛應用主從復制&#xff08;Replication&#xff09;機制。其核心思想是&#xff1a;在一臺主庫&#xff08;Master&#xff09;上發生的所有數據變更都會…

【PHP 函數從入門到精通】

&#x1f9e0; PHP 函數從入門到精通 PHP 函數是編程中最基礎、也是最強大的工具之一。它不僅可以簡化代碼、提高復用性&#xff0c;還能通過各種高級用法&#xff0c;讓你寫出更靈活、更現代的代碼。 下面我們從函數的基礎講起&#xff0c;逐步深入&#xff0c;帶你掌握函數的…

CGA老年綜合評估漢密爾頓抑郁量表與認知評估聯用

一、CGA老年綜合評估漢密爾頓抑郁量表與認知評估聯用的基礎CGA老年綜合評估 &#xff08;一&#xff09;二者評估內容的互補性 CGA老年綜合評估漢密爾頓抑郁量表主要聚焦于老年人的抑郁情緒及相關癥狀&#xff0c;而認知評估則著重考察老年人的記憶力、注意力、思維能力等認知…

教培機構如何開發自己的證件照拍照采集小程序

職業教培機構對學員的證件照采集是進行學生培訓管理、考試報名、證書發放的前置工作&#xff0c;傳統拍照和收集證件照的方式往往面臨效率低、質量參差不齊等問題。開發一款專屬的證件照拍照采集小程序&#xff0c;不僅能提升機構形象&#xff0c;還能大幅優化工作流程。借助“…

GC8872刷式直流電機驅動器詳解:3.6A驅動能力與PWM控制

概述GC8872是一款具有故障報告功能的刷式直流電機驅動芯片&#xff0c;專為打印機、電器、工業設備等機電一體化應用設計。這款芯片采用ESOP8封裝&#xff0c;集成了H橋驅動電路和多種保護功能&#xff0c;支持高達3.6A的峰值電流輸出。關鍵特性寬電壓工作范圍&#xff1a;6.5V…

從0開始學習R語言--Day54--雙重固定模型

對于具有空間差異的數據&#xff0c;如果不知道數據的特征關系或意義&#xff0c;直接用杜賓模型來處理是一個比較通用的思路&#xff0c;只是后續還需要很多檢驗去證明結果的可解釋性和統計性。但如果我們已經知道特征的意義&#xff0c;比如企業經濟發展的數據中有著員工的科…

三生篩法在計算數論中的極限是什么?

AI輔助創作&#xff1a;三生篩法在計算數論中的極限主要體現在?規模邊界?、?算法適應性?及?理論兼容性?三個維度&#xff0c;其核心瓶頸與突破路徑如下&#xff1a;一、規模邊界&#xff1a;計算效率的斷崖式衰減??低維高效區的上限?在 10^15 以內數域&#xff0c;三生…

iOS WebView 加載失敗與緩存刷新問題排查實戰指南

在移動 App 中嵌入網頁后&#xff0c;不少團隊都會遇到一個詭異的問題&#xff1a;用戶看到的是“舊內容”&#xff0c;或“資源加載失敗”&#xff0c;但在瀏覽器調試中一切正常。特別是在 iOS WebView 中&#xff0c;這類緩存和加載問題常常隱匿、難以復現。 這篇文章將通過一…

GoLand 項目從 0 到 1:第二天 —— 數據庫自動化

第二天核心任務&#xff1a;自動化與多數據庫支持第二天的開發聚焦于數據庫自動化流程構建與MongoDB 業務鏈路擴展&#xff0c;通過工具化手段解決數據庫操作的重復性問題&#xff0c;同時完善多數據庫支持能力。經過一天的開發&#xff0c;項目已實現數據庫初始化、遷移、種子…

qt框架,使用webEngine如何調試前端

解決 Qt 5.14.2 中啟用開發者工具的問題問題在于 Qt 5.14.2 中 QWebEngineSettings::DeveloperExtrasEnabled 屬性已被棄用或更改。正確啟用開發者工具的完整方法&#xff08;Qt 5.14.2&#xff09;1. 修改 main.cpp#include <QWebEngineView> #include <QWebEngineSe…

【Atlassian生態】Jira Cloud單站點現可支持10萬用戶:架構升級與龍智云遷移服務

作為Atlassian全球白金合作伙伴&#xff0c;龍智團隊非常激動地宣布&#xff1a;Jira迎來歷史性突破——Jira Cloud單個站點最高可支持10萬用戶&#xff01;覆蓋Enterprise、Premium和Standard版本。現在&#xff0c;更多的團隊可以將Jira作為核心協作中樞&#xff0c;以加速目…

深入解析JVM垃圾回收調優:性能優化實踐指南

深入解析JVM垃圾回收調優&#xff1a;性能優化實踐指南 一、技術背景與應用場景 隨著互聯網業務的飛速發展&#xff0c;Java 應用在高并發、大內存場景下對 JVM 性能提出了更高要求。垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;作為 JVM 的核心組件之一…

萬字解析Redission ---深入理解Redission上鎖過程

Redisson獲取鎖過程 RLock lock redissonClient.getLock("lock:order" userId); boolean isLock lock.tryLock(1L, TimeUnit.SECONDS);調用tyrLock其實就是下面的方法&#xff0c;如果說沒有指定鎖的過期時間&#xff0c;可以看到這邊設置為了-1Overridepublic bo…

NVM踩坑實錄:配置了npm的阿里云cdn之后,下載nodejs老版本(如:12.18.4)時,報404異常,下載失敗的問題解決

文章目錄一、情景還原二、分析原因三、解決方案一、情景還原 有個老項目&#xff0c;需要用到 node 的 12.18.4 版本。 小case&#xff0c;我裝了 nvm 的&#xff0c;根本構不成挑戰&#xff0c;敲敲命令就可以了&#xff1a; # 安裝12.18.4版本的nodejs nvm install 12.18.…

優秀案例:基于python django的智能家居銷售數據采集和分析系統設計與實現,使用混合推薦算法和LSTM算法情感分析

1 緒論1.1 研究的背景和意義本文所研究設計的智能家居銷售數據采集與分析系統主要是為了提升數據的采集效率&#xff0c;并且實現及時采集到的線上電商平臺及線下店面的多重渠道銷售數據的采集與分析&#xff0c;精確地進行相關的數據采集并應用先進的數據挖掘算法進行分析挖掘…

【傳感器標定(四):多傳感器融合定位系統中的標定與時間同步方案】

1. 系統框架概述 本方案采用"三層標定框架"&#xff0c;整體架構如下圖所示&#xff1a; #mermaid-svg-WhuG9fzKdHSAzSNh {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WhuG9fzKdHSAzSNh .error-icon{f…

PostgreSQL 跨庫查詢方法

問題描述&#xff1a; PostgreSQL 跨庫查詢方法 select rc.tm,fq,fq_old,sccd,unitcd from resource_calc_scene_section_result as rc inner join "mxpt_yushuiqingsrc_databases"."public".st_river_r_hi as st on st.stcd rc.bscd and st.tm rc.tmwher…