張冉



摘 要:隨著各種競賽和娛樂活動的出現,搶答器的應用逐漸廣泛。為了保證競賽的公平性和選手搶答的準確性,需要一款工作性能穩定,準確性高的搶答器。本文利用STM32F103RCT6單片機設計了一種八路無線搶答器。以單片機主控,外設部分由輸入模塊,藍牙模塊,語音播報模塊以及LCD屏顯示模塊構成。本設計分成了數據輸入,藍牙通信和顯示三個部分。手機虛擬鍵盤按鍵是本設計的輸入部分,主持人和選手通過手機虛擬鍵盤向單片機輸入數據,數據通過藍牙傳入到單片機,經其內部處理,在LCD屏以及LED上顯示,并通過語音播報。本設計通過Keil軟件進行編程,利用實物調試,以軟硬件相結合的方式完成設計。經實踐證明,此八路無線搶答器不僅設計簡單,成本較低且工作穩定,適應性強,具有一定的實用價值。
關鍵詞:STM32; 搶答器; 藍牙模塊
1系統硬件設計
本系統是由STM32,手機虛擬鍵盤,藍牙,LCD屏及語音五個模塊組成的,通過STM32主控實現了計時,搶答,鎖存,顯示,語音播報等功能。系統結構圖如圖1-1示:
2系統軟件設計
本課題軟件部分的所有程序都是通過C語言在Keil軟件上編程的。為了使程序內容的邏輯清晰更容易被理解,我們對其進行了模塊化設計。從搶答器的整個系統流程來看,可將其分為串口模塊,手機藍牙通信模塊,LCD屏顯示模塊,倒計時模塊以及搶答判斷模塊。
2.1串口模塊
本課題中一共用到了USart1和USart2兩個通信串口。USart1是用來連接藍牙模塊的,USart2則連接了語音模塊。通過對USart1和USart2中引腳的配置,完成相應的數據傳輸功能。
2.2手機藍牙通信
課題中,手機與STM32之間的通信是通過ATK-HC05藍牙模塊實現的。藍牙自身并不能完成通信功能,只能延伸串口通信功能。在使用藍牙時,上電后將KEY設置為VCC進入AT指令模式,發送AT+ROLE=0指令將其設置為從機用手機搜索連接藍牙。[10-12]再發送AT+UART<115200><0><0>將其設置其參數,與串口1匹配。
2.3LCD屏顯示
TFT-LCD屏是本課中主要的顯示模塊,系統的狀態,計時,和搶答結果都是由它來顯示的。在使用TFT_LCD時,首先要對LCD進行初始化。LCD常用初始化函數有:
繪制字符函數:void Draw_table(u16 width,u16 height,u16 xadd,u16 yadd,const u8 *table,u16 color);
清除固定區域顯示函數:void clearArea(u16 width,u16 height,u16 xadd,u16 yadd,u16 color);
2.4搶答數據處理
在選手搶答時,需要鎖定搶答成功的選手號。因此在串口數據處理函數void UsartDeal(void)中定義了一個鎖定標志位(lock=0時解鎖,lock=1時鎖定),當進入搶答環節時(sysState==2)進行鎖定,只允許一位選手搶答成功。流程圖如下:
3實驗結果
下圖為連接完成的實物圖,通過實物檢測,驗證了本次設計的無線搶答器實現了基本的搶答功能,完成了實驗的初衷。
參考文獻
[1] 何勉.基于AT89S52單片機控制的八路搶答器的設計與仿真[J].電子技術與軟件工程,2019,(04):232-233.