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