2007年11月30日金曜日

PSoC温度計を作ってみた(その4)

コードも載せときます。
プロジェクト全部は
こちら
から。


//---------------------------------------------------
// C main line
//---------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules

#include <stdlib.h>

#define ADC 4096.0
#define PGAGAIN 4.0
#define VREF 2.6
#define SUM 50


void main()
{
// Insert your main routine code here.

int data , i, j;
float temp ;
char *ostr ;

LCD_1_Init() ;
LCD_1_Position(0,0) ;
LCD_1_PrCString("PSoC Thermometer") ;
M8C_EnableGInt ; // global interrupt enabling macro

PGA_1_SetGain(PGA_1_G4_00) ;
PGA_1_Start(PGA_1_HIGHPOWER) ;
ADCINC_1_Start(ADCINC_1_HIGHPOWER) ;
ADCINC_1_GetSamples(0) ; // read AD convert continuously
for(;;) {
temp = 0 ;
for( i=0; i<SUM; i++) {
while(ADCINC_1_fIsDataAvailable() == 0 ) ;
ADCINC_1_iClearFlagGetData() ;
data = ADCINC_1_iGetData() ;
temp += (data * VREF * 100 ) / ( ADC * PGAGAIN) ; //calculate AD --> temp
}
temp /= SUM ;

ostr = ftoa(temp,&j) ;
ostr[5] = '\0' ;

LCD_1_Position(1,2) ;
LCD_1_PrHexInt(data) ;
LCD_1_Position(1,7) ;
LCD_1_PrString(ostr) ;
}
}

0 件のコメント: