明立娟,董杰
(攀枝花學院,四川攀枝花,617000)
隨著電子信息技術的不斷發展,電子元器件種類不斷增加,在電子元器件柜中存放的電子元器件種類愈發龐雜繁多,用戶在元器件柜中查找元器件只能靠著標簽挨個查找,查找效率十分低下。因此設計一種智能查詢電子元器件柜,用戶通過觸摸屏輸入元器件名稱系統便會自動搜索是否存有該元器件并提示用戶查詢結果,能夠有效解決老式元器件柜查找和管理效率低下的問題。
本設計使用STM32F103C8T6 作為主控芯片,HMI 串口屏作為人機交互界面,用戶可以通過觸摸屏選擇添加、查詢、刪除功能,以及元器件型號的輸入。系統使用W25Q64芯片存儲大量的元器件存放信息,同時由于元器件柜中每一個存放元器件的元器件盒都安裝有提示燈,因此需要有大量的指示燈需要控制,系統設計選用74HC595 位移緩沖器對單片機IO 口進行拓展,同時借助其級聯功能,在原理上能夠實現對單片機IO 口的無限拓展,即系統理論上可以控制的指示燈數量幾乎無限制。系統總體設計框架如圖1 所示。

圖1 系統總體設計框圖
系統選用STM32F103C8T6 作為主控芯片其最小系統由單片機、電源、晶振電路、復位電路幾大部分組成其電路圖如圖2 所示。單片機主要負責所有外設功能模塊的驅動,元器件存儲數據的管理以及系統的整體控制邏輯。

圖2 單片機最小系統
在本設計中需要存儲大量的元器件數據并進行合理的數據管理,故存儲電路選用W25Q64 進行數據存儲,其電路圖如圖3 所示,該芯片為64Mbit 的SPI Flash 存儲芯片能夠滿足系統的數據存儲需求。同時本系統引入FatFS 文件系統,用于眾多數據文件的存儲和管理。FatFS 文件系統為一種專門針對單片機的文件系統,支持SPI Flash 等多種存儲媒介;有獨立的緩沖區,可以對多個文件進行讀/寫。

圖3 W25Q64 電路
在FatFS 文件系統的機制下,本系統巧妙的將元器件的存儲操作轉換為了文件系統中文件的創建操作,在系統存入元器件時,單片機程序通過觸摸屏獲取到存入元器件的名稱以及存放的柜號后,系統程序則通過文件系統創建一個文件并將其命名為存入的元器件名稱,并在該文件中寫入該元器件所存放的元器件盒編號。經過以上操作,用戶在向元器件柜中儲存元器件的同時也在單片機程序運行的文件系統中創建了一個與該元器件存放信息相對應的文件,由此則將元器件的存儲操作映射為了FatFS 文件系統中的文件創建于寫入操作。元器件的查詢則是被轉換為了文件系統中的查找文件的操作和讀取文件操作,在進行查找元器件時,當系統從觸摸屏中獲取到需要查詢的元器件名稱后程序便會循環讀取文件系統中的所有文件名并將其與用戶輸入的元器件名稱進行對比匹配,若有文件名匹配成功,系統則讀取該文件中存儲的其對應的元器件的存放位置編號并將其通過觸摸屏顯示出來,同時控制指示燈電路,點亮該元器件存放位置的指示燈,以達到提示用戶的目的。若文件系統中沒有與用戶輸入的元器件名稱相同的文件則表示元器件柜中沒有存放該類元器件,則通過觸摸屏輸出錯誤信息。元器件的移除則是被轉換為了文件系統中對文件的刪除操作,在執行刪除元器件操作時,系統會根據用戶輸入搜索文件系統中與之對應的文件并將該文件刪除。
由此現實中的元器件的存儲,查詢,刪除操作被映射為了單片機中文件系統中的對文件的創建、讀寫、搜索、刪除操作,極大的簡化了元器件存放數據的管理。
在本系統中LED 指示燈的數量可以針對元器件盒的數量不同自行進行增加或減少,因此該部分采用模塊化設計。使用74HC595 8 位串行輸入、并行輸出位移緩沖器實現該功能,單片機通過SPI 串行協議控制74HC595 的輸出控制LED 指示燈,同時借助其級聯功能將上一個74HC595 的Q7(級聯輸出引腳)接到下一個74HC595 的DS(串行數據輸入引腳)實現LED 指示燈的級聯拓展,并且該種級聯方式在硬件上幾乎沒有任何限制,單片機只需要占用三個引腳就可以實現近乎無線多的LED 指示燈的控制。單個LED指示燈的控制電路如圖4 所示。

圖4 LED 指示燈電路
本系統使用陶晶池公司的USART HMI 屏幕作為人機交互界面,該屏幕支持用戶通過專用的上位機進行二次開發,在程序設計時可以將人機交互UI設計與系統控制程序分離,在屏幕開發的上位機中設計好顯示界面以及與單片機的交互指令后單片機便可以通過串口發送控制指令控制屏幕顯示,也可以通過串口獲取屏幕的觸摸信息,結合系統的整體控制邏輯便可實現觸摸屏的輸入輸出功能。
為了使單片機能夠方便的控制觸摸屏的供斷電,以及控制有源蜂鳴器工作,設計使用NPN 三級管通過集電極驅動的方式驅動蜂鳴器以及控制觸摸屏電源的通斷,電路原理圖如圖5 所示。

圖5 觸摸屏驅動電路(供電)以及蜂鳴器驅動電路
為確保單片機系統中電路穩定可靠工作,復位電路是必不可少的一部分,復位電路的第一功能是上電復位。平常我們常用的復位方式有兩種,一種是NRST 引腳的低電平復位,
通過按鍵復位電路給這個引腳一個低電平,讓系統完成復位,另一種就是上電復位。本系統采用的復位方式為NRST引腳的低電平復位,電路圖如圖6 復位電路所示。

圖6 復位電路
STM32 擁有一個內部時鐘,是用芯片內部振蕩電路,但是精度不高,溫漂也較大。外部時鐘,分RC 振蕩和石英晶振,RC 精度不高,成本低,石英晶振,精度高,穩定性好,根據使用場合選擇,適合的時鐘方式。在本系統中我們選擇外部石英晶振為單片機提供穩定的時鐘源。本系統使用復位電路如圖7 所示。

圖7 時鐘電路
系統設計的標準輸入電壓為5V 但是電路上有既有需要5V 供電的外設又有需要3.3V 供電的外設,因此需要設計一個DC-DC 降壓電路將5V 輸入電壓降壓為3.3V 為部分外設供電。考慮到3.3V 部分外設消耗功率不高,因此選取LDO(低壓差線性穩壓器)進行降壓,綜合成本與性能本系統選擇XC6204 作為穩壓芯片。查閱數據手冊可知XC2602 為LDO 器件(低壓差線性穩壓器)輸出功率較小但是效率高,硬件電路簡單。非常適合于本項目的應用場景,其具體電路如圖8 所示。

圖8 降壓電路
本設計的控制器為STM32F103C8T6,使用SPI FLASH存儲大量用戶數據,使用HMI 串口屏作為人機交互界面,其主要任務是實現觸摸屏的人機交互邏輯,并根據用戶通過觸摸屏的輸入控制文件系統中進行文件的創建、讀寫或刪除等操作,同時控制74HC595 點亮或熄滅指示燈,而大量指示燈的控制通過74HC595 拓展單片機的IO 口來實現,同時借助74HC595 的級聯功能完全可以實現指示燈數量的隨意拓展,以達到本系統設計的功能。
本系統采用STM32CubeMX 進行外設配置并自動生成工程文件,基于Keil-MDK 進行程序開發,同時移植FATFS文件系統進行復雜繁瑣的文件存儲管理,借助虛擬串口輸出打印調試信息查看程序實時運行情況,借助HMI 串口屏實現復雜觸控UI 界面的設計,最終完成了本系統的程序設計,實現了設計之初擬定的基本功能,使得大量的元器件存儲信息得以被合理的使用的存儲和使用。

圖9 C 語言程序設計流程圖
同時在程序軟件設計中要盡可能做到方便調試和方便維護、修改,在軟件設計上采用了模塊化設計。使各個功能模塊單獨封裝為獨立的函數并且能夠獨立運行,極大的方便了程序的修改和迭代升級,提高了程序開發和維護效率。同時在程序編寫過程中按照編程規范進行注釋,方便閱讀以及后期維護。在本設計的程序中使用了較多新知識,因此在功能實現的過程中也遇到了許多問題,經過和老師同學的探討,以及查閱各種資料,最終成功的解決了所有問題,并完成了項目最初的擬定功能。
本項目是基于STM32 單片機的一種智能查詢電子元器件柜設計。整體方案使用W25Q64 存儲芯片引入FatFS 文件系統對元器件存儲數據進行存儲和管理,使用HMI 串口屏方案設計用戶交互界面,通過74HC595 進行IO 口的拓展以控制LED 指示燈并借助其級聯功能實現LED 指示燈的任意增加或減少。本設計在軟硬件設計上都基本上滿足了設計之初的功能設定。實現了電子元器件的便捷式管理與查詢。