杜栓 徐登
摘要:設計一套家用密碼存儲系統(tǒng),利用STM32 的普通IO口模擬IIC時序,實現(xiàn)門禁系統(tǒng)等密碼在AT24C02存儲器中的寫入和讀取,并在LCD1602模塊上顯示系統(tǒng)運行過程和結(jié)果。系統(tǒng)軟硬件設計簡潔合理,效率高。
關鍵詞: 密碼存儲系統(tǒng); STM32; AT24C02
中圖分類號: TP368.1 文獻標識碼:A 文章編號:1009-3044(2018)18-0255-02
Design of Home Password Storage System Based on STM32
DU Shuan,XU Deng
(School of Information, Changzhou Vocational Institute of Mechatronic Technology, Changzhou 213164, China)
Abstract: A set of home password storage system is designed, using the common IO port of STM32 to simulate the time sequence of IIC, to realize the writing and reading of the entrance guard system in the AT24C02 memory, and to display the running process and results of the system on the LCD1602 module. The software and hardware design of the system is simple and reasonable, and the efficiency is high.
Key words: Cipher storage system; STM32; AT24C02
隨著物聯(lián)網(wǎng)和嵌入式技術的發(fā)展,智能門禁系統(tǒng)成為是智能家居的一個重要發(fā)展領域之一,逐漸發(fā)展成為一套完整的出入管理系統(tǒng)。它在工作環(huán)境安全、人事考勤管理等方面起著巨大的作用。而密碼存儲系統(tǒng)作為門禁系統(tǒng)的重要組成部分,具有重要的應用價值。
本文設計了一套家用密碼存儲系統(tǒng),利用STM32 的普通IO口模擬IIC時序,實現(xiàn)門禁系統(tǒng)等密碼在AT24C02存儲器中的寫入和讀取,并在LCD1602模塊上顯示系統(tǒng)運行過程和結(jié)果。系統(tǒng)軟硬件設計簡潔合理,效率高。
1 系統(tǒng)整體方案設計
圖1所示為系統(tǒng)整體框圖,處理器采用STM32F103ZET6,按鍵采用獨立按鍵,液晶采用1602液晶,EEPROM存儲器采用AT24C02。
系統(tǒng)具體功能如下:開機后,如果按下代表寫入密碼數(shù)據(jù)的按鍵key0,則將程序中預設的一個字節(jié)密碼數(shù)值(例如0x55)寫入AT24C02內(nèi)部,同時在1602液晶第一行上顯示“Password is set!”字符串;如果按下另一個代表讀取密碼數(shù)據(jù)的按鍵key1,則用來執(zhí)行密碼讀取操作,將前面寫入的一個字節(jié)密碼數(shù)據(jù)讀取出來,并在1602液晶第二行上顯示“Password is 0x**”(注:“**”代表前面寫入的密碼數(shù)值,如果事先寫入的是0x55,則顯示“Password is 0x55”)。
2 系統(tǒng)硬件設計
2.1 硬件設計思路
電路設計需要用到的硬件資源有:
(1)key0和key1獨立按鍵
(2)1602液晶顯示模塊
(3)EEPROM存儲器AT24C02
2.2 硬件電路設計
硬件電路原理圖如下圖2所示:按鍵key0、key1分別與STM32的PA0和PA1連接;1602液晶的RS、RW、EN分別與PA2、PA3、PA4相連,數(shù)據(jù)口D0~D7對應于PB0~PB7;AT24C02的SCL和SDA 分別連在STM32的PA5和PA6上。
3 系統(tǒng)軟件設計
3.1 軟件設計思路
本項目的軟件設計思路如下:
(1)按鍵驅(qū)動編寫
對按鍵key0、key1對應的GPIO端口進行初始化,打開對應的GPIO時鐘,設置端口輸入方式以及GPIO速度等。
(2)1602液晶驅(qū)動編寫
對1602液晶RS、EN、RW、D0~D7引腳對應的GPIO端口進行初始化,打開對應的GPIO時鐘,設置端口輸入輸出方式以及GPIO速度等。同時按照相應液晶讀寫時序編寫相應的液晶讀寫函數(shù)。
(3)模擬I2C驅(qū)動編寫
對模擬I2C引腳對應的GPIO端口進行初始化,打開對應的GPIO時鐘,設置端口輸入輸出方式以及GPIO速度等。同時按照相應I2C時序和協(xié)議編寫相應的I2C讀寫函數(shù)。
(4)AT24C02讀寫驅(qū)動編寫
根據(jù)相應的I2C時序和AT24C02讀寫協(xié)議編寫相應的AT24C02讀寫函數(shù)。
(5)主程序編寫
在完成前面四個步驟之后,按照項目的任務要求,系統(tǒng)上電后首先對按鍵、液晶、AT24C02進行初始化,然后進入程序主循環(huán)按鍵檢測,如果寫入按鍵key0按下了,則將密碼數(shù)值寫入AT24C02;如果讀取按鍵key1按下了,則將密碼數(shù)值從AT24C02內(nèi)讀取出來。具體程序流程圖如圖3所示。
4 運行測試
在代碼編譯成功之后,我們通過下載代碼到 STM32,程序復位運行后,LCD1602被初始化,此時屏幕亮起,等待密碼寫入和讀取,如圖4所示。
4.1 密碼數(shù)據(jù)寫入
先按key0按鍵寫入密碼數(shù)據(jù)(上述程序中寫入的數(shù)據(jù)是“0x55”,數(shù)據(jù)寫入存儲單元是“200”,用戶可以在程序中任意改寫數(shù)據(jù)核查存儲單元),并在1602液晶上顯示“Password is set!”字符串,得到如圖5所示。
4.2 密碼數(shù)據(jù)讀取
在前面寫入成功的基礎上,按key1讀取之前寫入的數(shù)據(jù)(上述程序中寫入的數(shù)據(jù)是“0x55”,數(shù)據(jù)寫入存儲單元是“200”,用戶可以在程序中任意改寫數(shù)據(jù)核查存儲單元),并在1602液晶上面顯示“Password is 0x55!”字符串,如圖6所示。至此任務要求全部實現(xiàn)!
5 總結(jié)
本文主要設計了基于STM32的家用密碼存儲系統(tǒng),綜合應用了鍵盤、LCD1602液晶、I2C總線、EEPROM芯片等硬件,并進行了相關的代碼調(diào)試。實現(xiàn)了門禁系統(tǒng)等密碼在AT24C02存儲器中的寫入和讀取,并在LCD1602模塊上顯示了系統(tǒng)運行過程和結(jié)果。經(jīng)過測試,該系統(tǒng)軟硬件設計簡潔合理,效率高。
參考文獻:
[1] 張鐸.自動識別技術應用案例分析[M].武漢:武漢大學出版社,2010:56-67.
[2] 范書瑞,李琦,趙燕飛.Cortex-M3 嵌入式處理器原理與應用[M].北京:電子工業(yè)出版社,2011:34-36.
[3] 汪浩.物聯(lián)網(wǎng)的觸點:RFID 技術及專利的案例應用[M].北京:科學出版社,2010:33-39.