摘 要: 采用Cypress公司生產(chǎn)的PSoC3芯片實現(xiàn)了一個數(shù)字電壓表的設(shè)計。設(shè)計使用芯片集成的A/D轉(zhuǎn)換模塊完成模數(shù)轉(zhuǎn)換,并且通過程序調(diào)用讀取相應(yīng)的數(shù)字量及芯片強大的LCD顯示模塊,將轉(zhuǎn)換后的數(shù)字量和相應(yīng)的模擬量顯示出來。本設(shè)計具有硬件設(shè)計簡單、軟件設(shè)計圖形化、可以充分利用PSoC提供的固件元件的優(yōu)點。
關(guān)鍵詞: PSoC3;電壓表;A/D;LCD;PSoC creator
隨著電子技術(shù)的發(fā)展,電子測量技術(shù)對測量精度和功能的要求也越來越高,而數(shù)字電壓表作為實驗室的基本測量設(shè)備,可以很好地滿足測量的精度和功能。數(shù)字電壓表DVM(Digital Voltmeter)采用數(shù)字化測量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表[1]。在設(shè)計的過程中,通常要用到A/D轉(zhuǎn)換芯片,一般在A/D轉(zhuǎn)換芯片的模擬輸入端輸入模擬信號(電壓),然后通過微型機的I/O端口讀取A/D轉(zhuǎn)換芯片數(shù)字量輸出端的數(shù)字信號,接著通過線性化處理得到相應(yīng)的模擬量并顯示出來。在這個過程中,為了驗證轉(zhuǎn)換的準(zhǔn)確性,會使用電壓表測量轉(zhuǎn)化的輸入電壓與轉(zhuǎn)化后的顯示電壓進行比較。在這個過程中,會遇到兩個問題:(1)一般的電壓表精度不夠;(2)不能看到此時的數(shù)字量。本設(shè)計采用PSoC3很好地解決了這個問題,PSoC3中集成的A/D轉(zhuǎn)換模塊轉(zhuǎn)換精度最大可以達到16位,基本可以滿足所有的精度要求;通過模塊化的調(diào)用,還可以讀取相應(yīng)的數(shù)字量,并且使用LCD顯示模塊實時顯示出來。傳統(tǒng)的指針式電壓表功能單一、精度低,不能滿足數(shù)字化時代的需求。數(shù)字電壓表的設(shè)計和開發(fā)已有很多類型和款式,采用PSoC設(shè)計的數(shù)字電壓表,具有精度高、抗干擾能力強,可擴展性強、集成方便等優(yōu)點。
1 系統(tǒng)總體設(shè)計
圖1為基于PSoC的數(shù)字電壓表設(shè)計的原理方框圖。其工作原理:利用模擬總線將外部的電壓信號傳送到A/D轉(zhuǎn)換模塊,將得到的數(shù)字信號傳送給LCD驅(qū)動模塊,然后通過數(shù)字總線將要顯示的內(nèi)容傳送給外部的LCD液晶顯示屏。在本設(shè)計中采用Cy83c3866AXI-040作為控制芯片,此處理器為PSoC3可編程混合信號處理器。此處理器以8051作為內(nèi)核,包含了非易失性存儲子系統(tǒng)、編程和調(diào)試子系統(tǒng)、輸入和輸出、時鐘資源、電源、數(shù)字子系統(tǒng)及模擬子系統(tǒng)。在本設(shè)計中主要使用芯片上集成的8051處理器、ADC模塊及LCD驅(qū)動模塊來實現(xiàn)數(shù)字電壓表的設(shè)計。
Cypress半導(dǎo)體公司推出的可編程片上系統(tǒng)PSoC(Programmable System on Chip),集微控制器、可編程數(shù)字陣列和可編程模擬陣列為一體,實現(xiàn)“在系統(tǒng)可編程”,既滿足了一般電子系統(tǒng)的資源要求,又順應(yīng)了現(xiàn)代電子設(shè)計方法的發(fā)展方向,非常適合用于模數(shù)混和的嵌入式系統(tǒng)設(shè)計[2-3]。新一代產(chǎn)品PSoC3分別包含8位8051微處理器、32位ARMCortex-M3微處理器。
2 軟件設(shè)計
2.1 開發(fā)環(huán)境PSoC Creator簡介
PSoC Creator是一個功能齊全的圖形化軟硬件設(shè)計及編程環(huán)境,帶有創(chuàng)新性的圖形設(shè)計界面,可以對PSoC3芯片進行硬件設(shè)計、軟件設(shè)計及調(diào)試、工程的編譯和下載。
圖形化的設(shè)計入口簡化了配置一個特殊元件的任務(wù)。設(shè)計者可以從元件庫內(nèi)選擇所需要的功能,并將其放置在設(shè)計中。所有的參數(shù)化元件都有一個編輯器對話框,允許設(shè)計者根據(jù)需要對功能進行裁減。
PSoC Creator軟件平臺自動配置時鐘和布線I/O到所選擇的引腳,并且為給定的應(yīng)用程序接口函數(shù)API對硬件進行控制。在開發(fā)的任意階段,能自由地修改硬件配置,甚至是目標(biāo)處理器,也可修改C編譯器和進行性能評估。
PSoC Creator軟件平臺的特點主要有:集成了原理圖捕獲功能用于設(shè)備配置;提供了豐富的元件IP核資源;集成了源代碼編輯器;內(nèi)置調(diào)試器;支持自定義元件創(chuàng)建(設(shè)計重用)功能;PSoC 3編譯器——Keil CA51(無代碼大小限制);PSoC 5編譯器——CodeSourcery TM的Sourcery TM Lite版[4]。
圖2為在PSoC Creator下實現(xiàn)的數(shù)字電壓表程序功能圖。在本設(shè)計中包含INPUT、ADC_Delsig及CharacterLCD三個模塊,INPUT用來將外部電壓信號輸入到ADC_Delsig,ADC_Delsig將范圍為(0~Vdda)V的電壓轉(zhuǎn)換成12位的二進制數(shù)字量,通過線性化處理可以得到相應(yīng)的電壓值,并通過CharacterLCD驅(qū)動模塊連接外部的LCD顯示屏,將數(shù)字量和模擬量都顯示出來。
圖3為INPUT參數(shù)配置圖。在這個對話框中,設(shè)置Type為“Analog”,因為在這個設(shè)計中,要求從外部輸入模擬電壓信號,所以采用模擬輸入模式。
2.3 程序流程圖設(shè)計
圖7為數(shù)字電壓表總體程序流程圖設(shè)計。在PSoC Creator開發(fā)環(huán)境支持下,編譯器自動生成了固件元件的C語言源代碼。但是,中斷子程序和main子程序僅提供了程序框架,子程序內(nèi)容需要開發(fā)者根據(jù)固件元件原理圖所要完成的任務(wù)來編寫。在工作空間瀏覽區(qū)找到元件的源程序,打開后在編輯區(qū)找到中斷子程序框架,在里面嵌入應(yīng)用的源代碼即可。在main主函數(shù)中需要對使用的元件進行初始化和啟動(有的元件不需要),根據(jù)應(yīng)用程序流程調(diào)用元件的子程序和函數(shù)。數(shù)字電壓表的程序見下所示:
#include<device.h>
#include"stdio.h"
#include"math.h"
void main()
{ uint32 result;
uint32 value;
char displayStr[15]={′0′};ADC_DelSig_1_Start();
ADC_DelSig_1_StartConvert();
LCD_Char_1_Start();
LCD_Char_1_Position(0u,0u);
LCD_Char_1_PrintString("ADC Output:");
LCD_Char_1_Position(1u,0u);
LCD_Char_1_PrintString("voltage:");
for(;;)
{ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);result=ADC_DelSig_1_GetResult16();
value=result*3300/4096.0;
if((value<0)||(value>3400))value=0;
LCD_Char_1_Position(0,strlen("ADC Output:"));
LCD_Char_1_PrintInt16(ADC_DelSig_1_GetResult16());
sprintf(displayStr,"%7ldmV",value);
LCD_Char_1_Position(1,7);
LCD_Char_1_PrintString(displayStr); }
}
利用PSoC強大的圖形化集成開發(fā)環(huán)境Creator提供的固件元件實現(xiàn)數(shù)字電壓表的設(shè)計,通過簡單的軟件設(shè)計實現(xiàn)硬件電路是一種值得重視和推廣的嵌入式系統(tǒng)開發(fā)方法。
參考文獻
[1] 徐毅,趙龍,王海峰.基于單片機的新型數(shù)字電壓表設(shè)計[J].河南科技,2010(11):44-45.
[2] 葉朝輝,華成英.可編程片上系統(tǒng)(PSoC)原理及實訓(xùn)[M].北京:清華大學(xué)出版社,2008.
[3] 王瑩,李健.PSoC3和PSoC5:可編程嵌入式SoC的新時代[J].電子產(chǎn)品世界,2009(10):7-9.
[4] Cypress發(fā)布PSoC Creator 集成開發(fā)環(huán)境.http://www.mcuol.com/News/214/33438.htm[OL].