在全站儀應用于飛機的測量過程中,常會涉及到計算,以滿足不同的應用環(huán)境與測量要求。本文選用了意法半導體公司基于ARMCortex—M3內核的STM32F103RB作為主控芯片,通過選擇合適的液晶模塊,構建了一個高性能低功耗的中文人機界面系統(tǒng)。根據在全站儀應用于飛機的測量過程中的實際需要,設計了用于測量計算的
人機界面系統(tǒng),在該系統(tǒng)中,采用的處理器內核為ARM的Cortex—M3,它基于ARMv7架構,采用了至今為止zui小的ARM內核,有效地降低了系統(tǒng)功耗。
1、系統(tǒng)的工作原理
本系統(tǒng)以STM32F103RBT6為核心,采用晶彩光電的AM240320TFT液晶屏作為顯示器,完成內容的顯示,由于STM32F103RBT6內部Flash為128K,如果用來儲存漢字字庫,對芯片資源是一種極大的浪費,所以本文中采用微控制器外掛SPI接口Flash的設計思路,將不用重復改變的中文字庫存放在外部Flash芯片里面,需要時再通過SPI口調入處理器。由于STM32F103RBT6不帶有FSMC,所以采用軟件模擬總線的方法,完成對液晶模塊的驅動。
2、系統(tǒng)硬件設計
2.1供電部分電路
由于整個系統(tǒng)采用3.3V供電,所以必須外部穩(wěn)壓電路將電壓穩(wěn)定到3.3V,本設計中采用三端穩(wěn)壓芯片LM1117-3.3,將外部電池電壓穩(wěn)定為3.3V位系統(tǒng)提供電源,為處理器、液晶顯示器、SPIFlash供電,采用二極管IN4007串接在電源正極,為系統(tǒng)提供電源反接保護。供電部分原理圖如圖1所示。
2.2液晶顯示部分電路設計
液晶顯示部分主要由微控制器驅動液晶顯示模塊完成人機界面狀態(tài)的顯示,通過發(fā)送命令字,完成液晶模塊的初始化以及漢字的顯示。
2.2.1STM32F系列ARM微控制器的特點
STM32處理器采用ARM公司的V7體系架構的內核Cortex—M3,它的速度比ARM7快三分之一,功耗低四分之三,同時集成了分支預測,單周期乘法,硬件除法等功能,大大地提高了處理器的數據處理能力,同時采用的Thumb-2指令集,有效地降低了代碼的密度,提高了程序的執(zhí)行效率,通過對功耗和性能的分析,本文中采用的處理器為STM32F103RBT6,該處理器工作頻率為72MHz,內置高速存儲器(高達128K字節(jié)的閃存和20K字節(jié)的SRAM),豐富的增強I/O端口和聯(lián)接到2條APB總線的外設。供電電壓2.0~3.6V,一系列的省電模式保證低功耗應用的要求,達到了性能和功耗的平衡。
2.2.2TFT液晶顯示模塊的特點
TFT液晶顯示屏是薄膜晶體管型液晶顯示屏。TFT液晶為每個像素都設有一個半導體開關,每個像素都可以通過點脈沖直接控制,因而每個節(jié)點都相對獨立,并可以連續(xù)控制。不僅提高了顯示屏的反應速度,同時可以控制顯示色階,所以TFT液晶的色彩更真。
由于大多數帶有LCD控制器的ARM處理器都沒有內部的程序存儲器和數據存儲器,而一般的Cortex—M3內核微控制器都不帶有專門的LCD控制器,對于不帶有LCD控制器的系統(tǒng),一般長常用In8080接口或者Motorola的6800接口,本系統(tǒng)中采用STM32高速的IO口模擬8080接口時序。綜上所述,選用的TFT液晶必須滿足兩個條件,*,帶有獨立的顯存。第二,帶有8080接口。設計中采用了中國臺灣采用晶彩光電的AM240320TFT液晶屏,它的主控制芯片為ILI9320,自帶總大小為172820(24Ox320x18/8)的顯存,模塊的16位數據線與顯寸的對應關系為565方式,它支持包括8080接口在內多種控制輸入信號。
STM32采用外部8MHz的晶振作為輸入時鐘,內部鎖相環(huán)將時鐘倍頻到72MHz作為系統(tǒng)時鐘,采用GPIO口模擬8080時序并行驅動2.8寸TFT屏,顯示部分的處理器和液晶顯示器的硬件電路接口電路如圖2所示。
2.3SPI接口Flash存儲疊的特點
由于在本系統(tǒng)中整個的漢字字庫需要存儲在外部Flash中,所以需要選擇一種Flash存儲芯片,F(xiàn)lash芯片選擇需要滿足以下要求。*,盡量占用少的IO口,因為液晶顯示器已經采用了并行接口,如果繼續(xù)選用并行接口的Flash,對芯片的IO消耗較大,這樣勢必要選用IO更多的芯片,對于便攜式設備來說,這是不合理的,所以本系統(tǒng)的設計過程中選用的Flash為SST公司的SST25VF080B,它采用SPI接口,SPI是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,本文中的SPIFlash采用美國SST公司的SST25VF080B芯片,容量為8M位,它工作電壓范圍為2.7~3.6V,工作在SPI模式0或者模式3,zui高工作在50MHz,zui小擦除單位為4K字節(jié)的扇區(qū),可擦寫10萬次,數據保持100年以上。而STM32F103RBT6帶有高速的硬件SPI接口,可以很方便與SST25VF080B連接通信。所以我們采用SPIFlash來完成對漢字字庫的存儲,字庫存儲部分的硬件電路接口圖如圖3所示。
3、系統(tǒng)軟件設計
系統(tǒng)軟件包括字庫的調用和TFT液晶顯示軟件設計兩個部分,字庫調用主要是通過STM32F103RBT6的SPI接口調用存儲在SST25VF080B中的中文字庫。TFT液晶顯示部分主要是通過STM32F103RBT6通用I/O口模擬16位的8080并口,實現(xiàn)對液晶顯示器的驅動,在軟件設計的過程中需要注意一個問題。就是不同字庫編碼的標準時不一樣的,所以在解碼時略有不同,常用的漢字字庫有GB2312字庫和GBK字庫兩種。
3.1GB2312字庫和GBK字庫
GB2312收錄簡化漢字及符號、字母、日文假名等共7445個圖形字符,其中漢字占6763個。GB2312規(guī)定“對任意一個圖形字符都采用兩個字節(jié)表示,每個字節(jié)均采用七位編碼表示”,習慣上稱*個字節(jié)為“高字節(jié)”,第二個字節(jié)為“低字節(jié)”。GB2312—80包含了大部分常用的一、二級漢字,和9區(qū)的符號。該字符集是幾乎所有的中文系統(tǒng)和化的軟件都支持的中文字符集,這也是zui基本的中文字符集。其編碼范圍是高位0xa1~0xfe,低位也是0xa1~0xfe;漢字從0xb0a1開始,結束于0xf7fe。GB2312將代碼表分為94個區(qū),對應*字節(jié)(0xa1~0xfe);每個區(qū)94個位(0xa1~0xfe),對應第二字節(jié),兩個字節(jié)的值分別為區(qū)號值和位號值加32(20H),因此也稱為區(qū)位碼。01~09區(qū)為符號、數字區(qū),16~87區(qū)為漢字區(qū)(0xb0~0xf7),10~15區(qū)、88~94區(qū)是有待進一步標準化的空白區(qū)。GB2312將收錄的漢字分成兩級:*級是常用漢字計3755個,置于16~55區(qū),按漢語拼音字母/筆形順序排列:第二級漢字是次常用漢字計3008個,置于56~87區(qū),按部首/筆畫順序排列。故而GB2312zui多能表示6763個漢字。
而GBK內碼*兼容GB2312,同時支持繁體字,總漢字數有2萬多個,編碼格式如下,每個GBK碼由2個字節(jié)組成,*個字節(jié)為0X81~0XFE,第二個字節(jié)分為兩部分,一是0X40~0X7E,二是0X80~0XFE。其中與GB2312相同的區(qū)域,字*相同。把*個字節(jié)代表的意義稱為區(qū),那么GBK里面總共有126個區(qū)(0XFE~0X81+1),每個區(qū)內有190個漢字(0XFE~0X80+0X7E~0X40+2),總共就有126x190=23940個漢字。點陣庫只要按照這個編碼規(guī)則從0X8140開始,逐一建立,每個區(qū)的點陣大小為每個漢字所用的字節(jié)數乘以190。這樣,就可以得到在這個字庫里面定位漢字的方法:
當GBKL<0X7F時:Hp=((GBKH-0x81)×190+GBKL-0X40)×(sizex2);
當GBKL>0X80時:Hp=((GBKH-0x81)×190+GBKL-0X41)×(sizex2);
其中GBKH、GBKLL分別代表GBK的*個字節(jié)和第二個字節(jié)(也就是高位和低位),size代表漢字字體的大小(比如16字體,12字體等),Hp則為對應漢字點陣數據在字庫里面的起始地址。
3.2系統(tǒng)軟件流程
對于GBK字庫和GB2312字庫,他們的解碼部分部分略有不同,這個區(qū)別主要是由于他們的編碼方式不同引起的,對于GBK字庫,解碼的方式如下:
其中qh、ql分別代表GBK的*個字節(jié)和第二個字節(jié)(也就是高位和低位),size代表漢字字體的大?。ū热?6字體,12字體等),foffset則為對應漢字點陣數據在字庫里面的起始地址。
系統(tǒng)啟動以后,首先完成時鐘的初始化,采用外部8MHz的晶振作為輸入時鐘,內部鎖相環(huán)將時鐘倍頻到72MHz作為系統(tǒng)時鐘,完成GPIO的初始化,作為LCD驅動IO的通用IO口的時鐘設置為50MHz的推挽模式,接著完成硬件SPI1的初始化,SPI時鐘頻率設置為18MHz,接著完成液晶的初始化,此過程是通過發(fā)送特定的命令序列來實現(xiàn)的,然后刷新顯示背景顏色,設置字體顏色,通過上面的程序完成字庫中漢字點陣序列的查詢,將漢字點陣送液晶屏顯示。
系統(tǒng)軟件設計的流程圖如圖4所示。
采用方法還不但可以實現(xiàn)標準字體的顯示,還可以根據系統(tǒng)要求,采用軟件生成各種需要的字體,為設計多樣性的人機界面系統(tǒng)提供了一種可行的方案。
4、結論
采用SPIFlash來存儲漢字字庫,通過彩色TFT液晶屏顯示,有效地擴展了應用的范圍,經過實驗驗證,本系統(tǒng)的設計方法*達到設計要求。