蔡驍
(貴州航天電子科技有限公司,貴州貴陽,550009)
本文給出一個構成該系統的設計方案,文中介紹了該方案涉及的電路器件和關鍵程序示例。本方案采取的方法是通過FPGA控制電壓采集芯片MAX1312將電壓模擬量轉換為電子數字量,并根據電壓數字量得到顯示數字量,最后控制液晶顯示屏SG240128-01D進行顯示數字量的顯示。本方案中FPGA選用低端即可。
本方案設計的電壓測試系統主要包含電源電路、電壓采集電路、FPGA電路和串口電路,測量電壓范圍為0V~+5.0V。電路供電電壓為+5.0V,電路中需要使用的電壓有+5.0V、+3.3V和+1.5V。電源電路就是+5.0V的輸入電壓經過芯片LM1117-3.3和芯片LM-1117-1.5得到需要的+3.3V和+1.5V的電壓。為避免電壓采集電路對前級電路狀態的影響,可在電壓模擬量在輸入MAX1312芯片之前經過一個可增大輸入阻抗的運放AD824。MAX1312是8通道輸入、采樣精度12位、可采電壓范圍為-10V~+10V的電壓采集芯片,可滿足多數情況下電壓測量需求。隨著FPGA的普及,已廣泛使用在各種領域,其電路簡單常見。本方案中選用10MHz的工作頻率。
顯示電路設計,實質就是一個電壓轉換與電流驅動,由于從FPGA芯片出來的電壓是3.3V,而顯示屏的工作電壓是+5.0V,而且既有輸入,又有輸出,因此需要使用將FPGA輸出的+3.3V電壓轉換為+5.0V電壓,也需要將由液晶顯示屏輸出的+5.0V電壓轉化為+3.3V。本方案中,選用具備+5.0V電壓與+3.3V電壓互轉功能的驅動芯片74LVX4245,74LVX4245有一個電壓轉換方向選擇管腳,當該管腳連接到高電平(+3.3V)時,該綦江實現的是從+5.0V電壓到+3.3V的轉換;當該管腳連接到低電平時,該期間實現的是從+3.3V電壓到+5.0V電壓的轉換。
液晶顯示屏選用的是北京集粹電子設備制造有限公司的SG240128-01D產品。該系列的液晶顯示屏內部集成了T6963C控制芯片,自身帶有常用字符庫(沒有漢子庫)。對液晶顯示屏的使用主要是對T6963C顯示控制器的控制,然后由T6963C顯示控制器完成對行驅動器、列驅動器和存儲器的驅動,從而得到我們所需要的各種字符或圖形的顯示。
SG240128-01D液晶顯示屏內部電路工作原理較為復雜,留有一個與外部通信的22芯片接口,在使用的時候,只需通過這個接口根據控制要求發送相應的控制命令或數據給T6963C顯示控制器,就可顯示所期望字符或圖形。因此使用者只需要了解22芯片的接口定義及各種控制輸入即可。
SG240128-01D液晶顯示屏內部對液晶顯示的控制和驅動都是由模塊內部的芯片及電路來實現的,顯示驅動所需的參數(如占空比系數、驅動傳輸的字節數/行以及字符的字體選擇等)均有引腳電平來設置,液晶顯示屏的初始化在上電時就已基本設置完成。除此之外,它還具有很強的軟件控制能力,也就是由FPGA通過接口寫入液晶模塊的指令來實現模塊控制。軟件控制主要集中于顯示功能的設置上。
采集模塊程序就是控制MAX1312芯片工作,得到所想要的電壓模擬量轉換后的數字量。MAX1312的工作頻率可以使用其內部時鐘頻率,也可使用外部時鐘頻率,本方案中選用頻率為10MHz的外部時鐘頻率,采集模塊程序的時鐘頻率也選用10MHz,8路通道同時使用。采集模塊的程序思路是:先對MAX1312芯片進行初始化,延遲一段時間后,啟動電壓轉換,當轉換結束后,即可讀取電壓轉換后的數字量。
得到模擬電壓轉換的數字量后,還不知道要顯示的具體數值,要想得到具體數值,有多種方法,其中一種是根據MAX1312的工作原理進行計算的計算法,還有一種是通過查表直接得到的查表法。由于計算法涉及到二進制小數、二進制乘法等教復雜的程序,而使用軟核,又對FPGA芯片有要求,本方案中使用查表法。該方法雖繁瑣,但是對FPGA芯片要求低,而且程序簡單。該方法原理是先根據顯示電壓值的位數和精度,推算出對應的電壓數字量范圍,然后根據采集模塊得到的電壓數字量,得到要顯示的數字量。比如用MAX1312測量正電壓時,要顯示的電壓值是到小數點后一位,顯示精度為0.1V,如果要顯示的電壓值為4.0V,那么實際測量出的電壓值范圍應該是:3.95V~4.04V。計算3.995V對應的數字量:3.95V×212÷20V≈809,將809換算為12位的二進制:001100101001;計算4.04V對應的數字量:4.04V×212÷20V≈827,將827換算為12位的二進制:001100111011。
以此類推,可得到0V~+10V的顯示轉換程序。如果用MAX1312測量的電壓中有負電壓,由于采集模塊得到的電壓數字量是補碼,在進行轉換時,先要判斷得到的電壓數字量表示的是正電壓還是負電壓,如果是正電壓,采用方法如上所述。如果是負電壓,則需先標識顯示符號,再計算出不帶符號位的原碼,然后采用與上相同的方法,即可得到負電壓的顯示數字量。
得到電壓顯示數字量后,就是將其值顯示出來,根據液晶顯示屏的工作原理,先要對其進行初始化和清屏處理,然后進行顯示。初始化就是確定采用哪種方式進行顯示(文本/圖形),再來設置顯示緩沖區中圖形區的首地址、寬度和文本區的首地址、寬度。此后可選擇光標的形狀,繼而進行顯示開關設置。而清屏操作就是讓顯示屏清掉不必要的顯示,為正確的顯示做好準備,一般都是讓整個屏全部顯示空格符。顯示電壓值時,要顯示的字符都是從字符庫里調用的。這時使用自動寫模式,這條命令對整屛數據操作十分黨鞭,設置自動模式后,每個數據之間不再需要讀/寫命令。“數據自動讀/寫”命令后應根“地址指針設置”命令,每個數據讀/寫后,地址指針自動加1,所有數據讀/寫完成后,需要執行自動模式復位命令返回到正常操作模式。每個數據讀/寫之間應當檢查狀態寄存器自動模式位,自動模式復位也應當在檢查自動模式位后執行。
在調用字符庫時,“寫顯示數據”的內容就是要顯示字符在字庫中的地址,由于在顯示模塊程序匯總使用最后的是檢查狀態位以及對數據或命令的讀寫。
本文提供的電壓測量方案適用于多種場合,轉換程序可根據實際情況選用其他方法,如選用較高端的FPGA,可使用軟核進行設計;也可使用計算機代替液晶顯示屏進行顯示,這時程序就只需要采集模塊,轉換模塊和顯示模塊部分程序在計算中完成,整個方案就更加簡單。