基于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所示。
??? 算法采取等距離判定法區(qū)分點(diǎn)碼與劃碼、碼間隔與字間隔,即取點(diǎn)、劃碼時(shí)長的平均值作為它們之間的判定閾值,取碼、字間隔時(shí)長的平均值作為其判定閾值。識(shí)別的完整流程如圖5所示。
??? 采樣電平翻轉(zhuǎn)時(shí),記錄上一個(gè)狀態(tài)的持續(xù)時(shí)間t。對(duì)于碼信號(hào),當(dāng)t>Tdh時(shí),表示解出劃碼,在碼值中存入11,反之則存入10;對(duì)于間隔信號(hào),當(dāng)t>Tmz時(shí),代表解出字間隔,將碼值用00補(bǔ)足16 b后進(jìn)行順序法查表,查出的位置值經(jīng)過換算就能得到對(duì)應(yīng)的莫爾斯碼符號(hào)。
3.4 判定閾值的修正方法
??? 為了實(shí)時(shí)跟蹤報(bào)務(wù)人員的擊鍵狀態(tài),算法需要根據(jù)最新的輸入碼時(shí)長不斷對(duì)判定閾值做出修正,采用加權(quán)平均的方法可以實(shí)現(xiàn)判定閾值的平滑變化。最近一次判定為點(diǎn)碼的修正流程如圖6所示。其他時(shí)長的修正方法與此類似。
??? (1)判斷最近一次點(diǎn)碼時(shí)長是否符合篩選要求。因?yàn)榇a文中總有一些出錯(cuò)的或時(shí)長相差較大的,如果將這些時(shí)長也用來修正閾值會(huì)對(duì)其準(zhǔn)確性產(chǎn)生較大的影響。t′d表示最近一次的點(diǎn)碼時(shí)長,t′d表示上一次的點(diǎn)碼時(shí)長,a為篩選因子。a取的越大則閾值起伏越大,此處取為O.5。滿足篩選要求的數(shù)據(jù)進(jìn)入步驟(2),否則放棄本次修正。
??? (2)對(duì)點(diǎn)碼時(shí)長求加權(quán)平均。t′d表示修正后的點(diǎn)碼時(shí)長,β為修正因子。β越接近于1,對(duì)閾值的平滑作用越強(qiáng),但跟蹤能力越差。開始階段為了迅速適應(yīng)報(bào)務(wù)人員的習(xí)慣,取β為0.5,隨著拍發(fā)的進(jìn)行,為了保證閾值的平穩(wěn)變化,將β盧逐步減小到0.2。?
??? (3)根據(jù)最近一次點(diǎn)碼時(shí)長更新點(diǎn)劃碼判定閾值。其中t′d表示上次的劃碼時(shí)長。
??? (4)對(duì)點(diǎn)劃判定閾值做平滑修正。T"db表示點(diǎn)劃碼判定閾值的最新值,t′dh表示上一次的點(diǎn)劃碼判定閾值。
4 結(jié) 語
??? 采用上述設(shè)計(jì)的莫爾斯報(bào)裝置可在不接駁電腦的情況下使用,識(shí)別結(jié)果直接在LED上滾動(dòng)顯示,也可連接電腦,在上位機(jī)軟件中進(jìn)行成績?cè)u(píng)定,使用方便靈活。經(jīng)過改進(jìn)的算法識(shí)別速度快,錯(cuò)碼率低,在算法跟蹤速度和識(shí)別準(zhǔn)確度間取得了良好的平衡。該裝置經(jīng)報(bào)務(wù)人員大規(guī)模使用,60~140碼/分條件下誤識(shí)別率小于10-5,效果良好。
評(píng)論
查看更多