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