基于某焊接設備存儲大量數據需要通過打印機輸出,但由于該設備及其配套的微型熱敏打印機只能英文打印,不能中文打印的問題,從而影響用戶閱讀。另外,原有的配套英文打印機具有打印速度緩慢、每一組數據間隔過大,浪費紙張等缺點。因此,為了解決上述問題,根據實際工程項目應用需要,提出一種基于ARM的英文轉中文的翻譯器設計方案,該設計是在原有設備和支持中文打印的熱敏打印機之間增加一塊以ARM為核心的電路板作為英文轉中文的翻譯器,接收設備傳輸的英文數據,然后通過優化算法轉換成中文,能夠邊接收邊打印輸出。該系統設計從實驗結果來看,打印輸出效果良好,整個打印過程快速迅捷,每一組數據間隔可調,能夠節省大量紙張。
1 系統硬件電路設計
翻譯器的系統結構框圖如圖l所示,它主要包括供電電源、核心控制器LPC2214和雙串口接口以及啟動和ISP控制接口等電路。該系統設計采用優化的系統軟件算法,能夠節省大量硬件資源需求。由于數據量非常大且要求快速打印,通常情況會增加一塊容量很大的SRAM來接收英文數據,然后再進行比較翻譯打印輸出。而本系統由于采用了環形接收/發送緩沖區以及前后臺程序方式,這樣就無需增加SRAM,能夠實現邊接收邊打印,而且系統硬件電路設計簡單明了。
1.1 供電電源電路
圖2給出了系統的供電電源電路,從圖中可看出電源輸入端只需一種12 V左右的電壓輸入,經過7805首先降至5 V,以滿足通常5 V供電,而且還滿足低壓差的穩壓器SPXlll7的輸入要求。由于LPC2214需要2組電源電壓輸入:3.3V和1.8V,因此,5 V電壓再經過SPXlll7-3.3和SPXlll7-1.8分別輸出3.3 V和1.8 V給LPC2214供電。另外,圖2中的VDl二極管是為防止反接電源燒毀電路而設計的。
1.2 LPC2214及其啟動控制電路
LPC2214是PHILIPS公司生產的一款基于ARM7核的32位高性能處理器,應用廣泛。其內部包括256 KB的Flash和16KB的SRAM,片內的128位寬的存儲器接口和獨特的加速結構使得該處理器可以在高達60 MHz的工作頻率下運行。此外,通過外部存儲器接口可將存儲器配置成4組,每組容量高達16 MB,此外,片內還集成了多種外設,包括雙串口、8路A/D采集通道、I2C接口和SPI接口、支持32個中斷請求的中斷控制,以及多達112個通用I/O口。由于集成度非常高,所以不必像5l單片機那樣需擴展很多的外部器件,大大簡化了系統硬件電路設計。圖3給出英文轉中文翻譯器的核心控制器LPC2214的啟動控制電路。在圖3中,LPC2214的P2.26和P2.27引腳均需外接一只上拉電阻,在系統復位后將從片內Flash的地址0x00000000處開始運行程序。另外P0.14引腳接有一只上拉電阻,用于禁止ISP(在系統編程),如果想要使能ISP,將跳線JP3短接即可。
1.3 雙串口接口電路
LPC2214包含2個串行接口,分別為UART0和UARTl,恰好符合該系統設計應用要求,這2個串行接口分別與設備和打印機相連。由于設備和打印機都要求標準的RS232串行傳輸,而LPC2214是3.3V電平,所以使用了2片SP3232E進行RS232電平轉換,如圖4所示。LPC2214通過端子J2的CTSl信號檢測打印機存在并通過端子Jl的DTR信號通知設備;而通過端子J2的RXDl(BUSY)信號檢測打印機內部緩沖區是否溢出;當LPC2-214內部接收緩沖區存滿時,通過端子J1的CTS信號通知設備暫停傳輸數據。
2 系統軟件算法
由于數據量非常大,所以在軟件設計方面進行了優化,主要包括中英文數據存儲方式、環形接收和發送緩沖區算法、查找和翻譯算法等3部分。
2.1 中英文數據存儲方式
首先,英文轉中文翻譯器涉及到的問題是漢字在計算機內的存儲問題,漢字在計算機內的存儲是以機內碼形式存儲的,1個漢字占用2個字節,因此在LPC2214中可以直接定義與接收到的英文字符串相對應的漢字常量字符串作為翻譯后的數據。其次,為了查找方便,對接收到的英文字符串分了3類,相應地漢字字符串也對應分為3類,如圖5所示。其中,庫l為包含“:”的英文行,對應的中文翻譯只是翻譯“:”前的英文,而“:”后的英文字符和數字不必翻譯直接輸出;庫2為不包含“:”的英文行,直接將對應的中文庫2輸出即可;庫3為含有多義語義的英文行庫,在中文庫3中再細分后輸出。在具體編程時利用了二維數組結構存儲中英文字庫。
2.2 環形接收和發送緩沖區算法
設備傳輸的數據量很大,共有幾百組數據,而每組數據又包含幾十行英文字符和數字,如果采用全部接收完設備傳輸的數據后再查找對應的中文,找到后再依次控制打印機打印輸出,則不但需要相當大的緩沖區用于存儲,而且從接收數據開始到打印機輸出打印要延誤很長時間。因此,這里采用前后臺程序方式即邊接收、邊查找、邊打印,該方式既節省時間又節省存儲空間。在系統中開一段存儲空間作為接收緩沖區,如圖6所示。設置2個指針:寫指針和讀指針,初始化時令這2個指針分別指向存儲區的起始位置。接收設備數據采用UART0串口接收中斷處理方式,以便不丟失設備發送的任何一個字符。在UART0每接收一行英文數據后,寫指針加1,當寫指針達到最大存儲空間位置時,令寫指針復位為起始存儲位置,這樣就形成一個環形緩沖區。當接收緩沖區非空,即有需要翻譯的英文行數據時,讀指針指向當前需要翻譯的英文行數據,和寫指針類似,每翻譯一行數據后通過UARTl控制打印機輸出打印且讀指針加1,當讀指針到達最大存儲空間位置時,令讀指針復位為起始存儲位置。實驗表明,設置成很少的幾行接收和發送緩沖區都可以正常接收數據和打印數據。
2.3 查找和翻譯算法
查找和翻譯算法是在主程序中進行的,就是將接收和發送緩沖區中接收的每一行英文數據和三個英文庫中的存儲的英文行數據進行比較,如果一致,就返回所在當前英文庫中的行號,然后根據行號再找到對應的中文庫巾的數據行號即可,最后就可以控制打印機按一定格式輸出打印。整個算法的流程如圖7所示。
3 實驗結果
圖8給出了英文和中文打印效果的對比,由于數據量非常大,此處只是截取了很少的一段??梢钥闯鲋形拇蛴≥敵龇g準確、格式整齊,字體大小合適。另外,由于選取了更快速的熱敏打印機,從調試過程中可以明顯看出中文打印的速度遠遠快于原來配套的英文打印速度。
4 結論
本系統實現的英文轉中文翻譯器在軟硬件方面都采取較好的方案,硬件集成度高,電路板尺寸小,軟件算法簡潔,編程時除了啟動代碼采用匯編語言外其他大部分功能代碼均采用了模塊化的C語言編程,所以針對其他相關的應用領域,在硬件和軟件上只需作相應改動即可方便實現。
評論
查看更多