アットウィキロゴ

AD変換確認プログラム

<3052.h>

#define
E_SIG 0x20
#define
RS_SIG 0x10

void ioinit(void)
{
 P3.DDR = 0xff;
}

void adinit(void)
{
 AD.ADCSR.BIT.ADF = 0;
 AD.ADCSR.BIT.SCAN = 1;
 AD.ADCSR.BIT.CKS = 1;
 AD.ADCSR.BIT.CH = 3;
 AD.ADCSR.BIT.ADST = 1;
}


void wait(void)
{
 int t = 1000;
 while(t--);
}

void lcdo8(unsigned char d)
{
 d = d | E_SIG;
 P3.DR.BYTE = d;
 d = d & 0xdf;
 P3.DR.BYTE = d;
 wait();
}

void lcdini(void)
{
 lcdo8(3);
 lcdo8(3);
 lcdo8(3);
 lcdo8(2);
 lcdo8(2);
 lcdo8(8);
 lcdo8(0);
 lcdo8(0x0c);
 lcdo8(0);
 lcdo8(6);
}

void lcdclr(void)
{
 P3.DR.BYTE = 0;
 lcdo8(0);
 lcdo8(1);
 wait();
}

void lcdxy1(void)
{
 P3.DR.BYTE = 0;
 lcdo8(8);
 lcdo8(0);
 wait();
}

void lcdxy2(void)
{
 P3.DR.BYTE = 0;
 lcdo8(0x0c);
 lcdo8(0);
 wait();
}

void lcdxy(int x,int y)
{
 P3.DR.BYTE = 0;
 lcdo8(x);
 lcdo8(y);
 wait();
}

lcdo4(unsigned char d)
{
 unsigned dd;
 dd = d;
 d = d >> 4;
 d = d & 0x0f;
 d = d | RS_SIG;
 lcdo8(d);
 wait();
 dd = dd & 0x0f;
 dd = dd | RS_SIG;
 lcdo8(dd);
 wait();
}

void dsp1g(char *str)
{
 int c = 16;
 for(c=0;c<16;c++)
   {
     lcdo4(*str);
     str++;
   }
}

int main(void)
{
int add=0;
int adcdata[3];
char s[4];
int i;
ioinit();
adinit();
wait();
lcdini();
wait();
lcdclr();
lcdxy1();
dsp1g("AN0 Input VOLT ");
wait();
lcdxy2();
dsp1g(" ");
while(1){
 AD.ADCSR.BIT.ADST = 1;
 while(AD.ADCSR.BIT.ADF == 0);
 adcdata[0] = (AD.ADDRA & 0xff00) >> 6;
 adcdata[1] = (AD.ADDRB & 0xff00) >> 6;
 adcdata[2] = (AD.ADDRC & 0xff00) >> 6;
 AD.ADCSR.BIT.ADF = 0;
 add = (int)((adcdata[0]*(5.0/1024.0)*1000.0)+0.5);
 for(i=0;i<4;i++)
 {
   s[i] = add % 10;
   add/=10;
 }
 lcdxy(0x0c,5);
 lcdo4(s[3]+'0');
 lcdo4('.');
 lcdo4(s[2]+'0');
 lcdo4(s[1]+'0');
 lcdo4(s[0]+'0');
 lcdo4('V');
 wait();
 
  
       } 
}

タグ:

+ タグ編集
  • タグ:
最終更新:2011年02月06日 21:13
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。