基于MSP430的莫爾斯報(bào)訓(xùn)練裝置設(shè)計(jì)
莫爾斯電報(bào)自問世以來,已廣泛應(yīng)用于通信領(lǐng)域之中。目前基于通用計(jì)算機(jī)平臺(tái)的報(bào)務(wù)終端已能夠?qū)崿F(xiàn)莫爾斯報(bào)的自動(dòng)收發(fā),但傳統(tǒng)的人工拍發(fā)和收?qǐng)?bào)方式以其便攜性和頑存性仍然無法被完全替代。針對(duì)以往報(bào),務(wù)人員的莫爾斯報(bào)訓(xùn)練裝置存在著依賴電腦使用不便,用鍵盤模擬手電鍵缺乏真實(shí)感,算法適應(yīng)性差,識(shí)別率低等問題,采用以TI公司的MSP430低功耗16位單片機(jī)為核心,設(shè)計(jì)了一種莫爾斯報(bào)訓(xùn)練裝置,具有單獨(dú)使用和連接電腦兩種方式,使用標(biāo)準(zhǔn)報(bào)務(wù)手電鍵和耳機(jī),能夠完成發(fā)報(bào)和收?qǐng)?bào)兩種訓(xùn)練,提高了模擬訓(xùn)練的真實(shí)性和訓(xùn)練水平。
1 整體設(shè)計(jì)方案
莫爾斯碼的原理是以長短信號(hào)及間隔的不同組合代表數(shù)字、字母等字符。訓(xùn)練器以MSP430單片機(jī)為核心處理攜帶此信息的電鍵信號(hào),如圖1所示。
訓(xùn)練器設(shè)計(jì)了兩種訓(xùn)練方式:發(fā)報(bào)訓(xùn)練和收?qǐng)?bào)訓(xùn)練。
l.1 發(fā)報(bào)訓(xùn)練
發(fā)報(bào)訓(xùn)練是指報(bào)務(wù)人員根據(jù)指示的一組報(bào)文拍發(fā),手電鍵敲擊的信號(hào)由訓(xùn)練器采集、處理并識(shí)別出莫爾斯碼,在數(shù)碼管上顯示或通過TUSB3410芯片提供的USB接口傳至電腦上位機(jī)軟件。
在發(fā)報(bào)訓(xùn)練時(shí),分別使用高、低電平表示間隔和點(diǎn)劃。這樣拍發(fā)出的電鍵信號(hào)實(shí)際上就是一組時(shí)長不等的高、低電平組合,如圖2所示。
圖2中td,th,tm,tz分別表示點(diǎn)碼、劃碼、碼間隔、字間隔信號(hào)的時(shí)長。
用單片機(jī)的I/O口對(duì)整形后的電鍵信號(hào)進(jìn)行不間斷采樣,根據(jù)高、低電平持續(xù)時(shí)間,通過識(shí)別算法解析出碼符號(hào)。同時(shí),在電鍵信號(hào)的控制下給出頻率為500 Hz的方波作為發(fā)報(bào)監(jiān)聽音送往耳機(jī)。
1.2 收?qǐng)?bào)訓(xùn)練
收?qǐng)?bào)訓(xùn)練是指訓(xùn)練器在電腦的控制下發(fā)出莫爾斯碼對(duì)應(yīng)的電鍵音,報(bào)務(wù)人員通過耳機(jī)或喇叭監(jiān)聽并同時(shí)記錄報(bào)文。
在收?qǐng)?bào)訓(xùn)練時(shí),將TUSB3410傳來的報(bào)碼實(shí)時(shí)翻譯為點(diǎn)、劃和間隔碼,并在此信號(hào)的控制下發(fā)出500 Hz單音。
2 電鍵信號(hào)預(yù)處理電路
電鍵信號(hào)的預(yù)處理電路如圖3所示。
設(shè)計(jì)中,用一個(gè)上拉電阻將電鍵開關(guān)跳線J4的一腳拉至高電平,另一腳接地。這樣,在發(fā)報(bào)訓(xùn)練中,當(dāng)電鍵抬起時(shí),輸出高電平,表示間隔信號(hào);當(dāng)電鍵被按下時(shí),輸出低電平,表示點(diǎn)劃信號(hào)。為了消除高低電平交替過程中可能出現(xiàn)的毛刺,消除抖動(dòng),用CD4011芯片中的兩級(jí)與非門(U6A和U6B)對(duì)此信號(hào)進(jìn)行整形處理,此時(shí)來自MSP430 P3.1腳的KEY_CTL控制信號(hào)為應(yīng)高電平。在4腳輸出的信號(hào)連接到MSP430的P3.0腳,利用定時(shí)器A進(jìn)行周期為1 ms的查詢,以獲取各信號(hào)的時(shí)長,再通過譯碼算法譯出字符。電鍵信號(hào)的拍發(fā)過程中還需要提供電鍵音反饋給操作者。同樣利用定時(shí)器在每次查詢的同時(shí)對(duì)P3.2腳取反,能夠得到500 Hz的方波,提供給CD4011的8腳。利用經(jīng)過U6A一次取反后的電鍵信號(hào)(3腳)作為輸出使能,控制與非門U6C的開啟和關(guān)閉,保證只有在按下電鍵開關(guān)時(shí)才輸出電鍵音。電鍵音通過LM386芯片放大后,由耳機(jī)或喇叭輸出。
收?qǐng)?bào)訓(xùn)練時(shí),電鍵是一直抬起的,而KEY_CTL信號(hào)受MSP430的控制。當(dāng)MSP430解析出點(diǎn)劃或間隔信號(hào)時(shí),使KEY_CTL相應(yīng)的拉低或拉高,從而使KEY_SND電鍵音同步輸出或斷開。
3 碼識(shí)別算法的設(shè)計(jì)
3.1 算法難點(diǎn)分析
莫爾斯碼中,點(diǎn)碼時(shí)長td、劃碼時(shí)長th之比一般為1:3,碼間隔tm、字間隔tz、詞間隔tc之比通常為1:3:5。人工拍發(fā)的摩爾斯碼信號(hào),由于報(bào)務(wù)人員熟練程度和使用習(xí)慣的不同,碼速和各信號(hào)實(shí)際時(shí)長都相差很大,比例也不可能非常標(biāo)準(zhǔn),在拍發(fā)過程中還會(huì)不斷變化,因此,算法對(duì)信號(hào)時(shí)長閾值的選取要因人而異,在運(yùn)行中自動(dòng)調(diào)整適應(yīng)。以往的算法要么采取固定時(shí)長閾值的方法,犧牲了適應(yīng)性,如絕對(duì)比較法;要么采取固定修正因子的方法犧牲了初期的識(shí)別率,如岡瑟算法,難以取得識(shí)別速度、識(shí)別準(zhǔn)確度和適應(yīng)性之間的平衡。
3.2 判定閾值基準(zhǔn)值的選取
電鍵剛開始拍發(fā)時(shí)程序不知曉報(bào)務(wù)人員的情況,因此必須選取合適的判定閾值基準(zhǔn)值,以保證此時(shí)識(shí)別的準(zhǔn)確性。按照一般的拍發(fā)速度和規(guī)定,選擇點(diǎn)碼時(shí)長基準(zhǔn)值td=50 ms,劃碼時(shí)長基準(zhǔn)值th=3td=150 ms,點(diǎn)劃碼的判定閾值Tdh=(td+th)/2=2td=100 ms,碼間隔時(shí)長基準(zhǔn)值tm=50 ms,字間隔時(shí)長基準(zhǔn)值tz=3tm=150 ms,碼、字間隔的判定閾值Tmz=(tm+tz)/2=2tm=100 ms。
3.3 碼識(shí)別方法
莫爾斯碼中的字符由一系列點(diǎn)、劃信號(hào)的組合惟一表示。算法中采用改進(jìn)的查表法來進(jìn)行莫爾斯碼的譯碼。設(shè)計(jì)一個(gè)定長表,將莫爾斯碼放入表項(xiàng)值中。由于莫爾斯碼中長碼、短碼的長度不一,為了方便比較為每項(xiàng)預(yù)留16 b,用10表示點(diǎn)碼,用11表示劃碼,剩余用OO補(bǔ)齊,如圖4所示。
評(píng)論