#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#include <string.h>
#include <ctype.h>
void exdelay(void);
void putstrxy(unsigned char cx,unsigned char cy,unsigned char idata *s);
void putstrxyStr(unsigned char cx,unsigned char cy,unsigned char code *s);
void putstr(unsigned char code *s);
void putchar(unsigned char c);
unsigned char getchar(void);
void charlcdpos(void);
void charcursornext(void);
void charfill(unsigned char c);
void lcdreset(void);
void delay3ms(void);
void lcdwc(unsigned char c);
void lcdwd(unsigned char d);
unsigned char lcdrd(void);
void lcdwaitidle(void);
void DataCollection(unsigned char);
unsigned char xdata LCDCRREG_at_0xc2ff;
unsigned char xdata LCDCWREG_at_0xc0ff;
unsigned char xdata LCDDRREG_at_0xc3ff;
unsigned char xdata LCDDWREG_at_0xc1ff;
unsigned char xdata StartAN0_at_0xc8fff;
unsigned char xdata ReadAN0H_at_0xc9fff;
unsigned char xdata ReadAN0L_at_0xcbfff;
unsigned char xdata CXPOS;
unsigned char xdata CYPOS;
unsigned char idata *ss;
unsigned int ch;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit BUSY=P3^2;
main()
{lcdreset();
charfill("");
exdelay();
while(1)
{DataCollection (0);
putstrxyStr(0,0,"CHANEL0:");
putstrxyStr(10,0,"");
putstrxy(10,0,ss);
putstrxyStr(16,0,"mV");
DataCollection (1);
putstrxyStr(0,1,"CHANEL1:");
putstrxyStr(10,1,"");
putstrxy(10,1,ss);
putstrxyStr(16,1,"mV");
DataCollection (2);
putstrxyStr(0,2,"CHANEL2:");
putstrxyStr(10,2,"");
putstrxy(10,2,ss);
putstrxyStr(16,2,"mV");
DataCollection (3);
putstrxyStr(0,3,"CHANEL3:");
putstrxyStr(10,3,"");
putstrxy(10,3,ss);
putstrxyStr(16,3,"mV");}
}
void DataCollection (unsigned char Chanel)
{unsigned char i,k;
unsigned char lenx=0;
unsigned int tn=0;
unsigned char string[4][10];
unsigned int dataH=0;
unsigned int dataL=0;
unsigned int dataA=0;
for(i=0;i<=3;i++)
{for(k=0;k<=9;k++)
{string[i][k]=0;}
}
switch(Chanel)
{case0: P3_1=0;
P3_0=0;
ch=0;
break;
case1: P3_1=0;
P3_0=1;
ch=1;
break;
case2: P3_1=1;
P3_0=0;
ch=2;
break;
case3: P3_1=1;
P3_0=1;
ch=3;
break;
default:ch=0;
break;
}
BUSY=1;
StartAN0=0;
while(BUSY==0){;}
{dataH=ReadAN0H;
dataLReadAN0L;
dataH=dataH<<8;
dataA=(unsigned int)(dataH+dataL);
dataA=dataA*0.3125;
tn=dataA;
if(tn==0)
{putstrxyStr(10,ch,"0000");}
else
{while(tn!=0)
{tn=tn/10;
lenx=lenx+1;
}
for(i=0;i<lenx;i++)
{string[ch][lenx-i-1]=(char)(dataA%10)+0x30;
dataA=dataA/10;
}
string[ch][lenx]='\0';
ss=string[ch];}
}
exdelay();
}
void putstrxyStr(unsigned char cx,unsigned char cy,unsigned char code *s)
{
CXPOS=cx;
CYPOS=cy;
for(; *s!=0;s++)
{ putchar(*s);
charcursornext();
}
}
void putstrxy(unsigned char cx,unsigned char cy,unsigned char idata *s)
{
CXPOS=cx;
CYPOS=cy;
for(; *s!=0;s++)
{ putchar(*s);
charcursornext();
}
}
void putstr(unsigned char code *s)
{for(;s!=0;s++)
{putchar(*s);
charcursornext();
}
void charfill(unsigned char c)
{ for(CXPOS=CYPOS=0;1;)
{putchar(c);
charcursornext();
if((CXPOS==0)&&(CYPOS==0))break;
}
} }
void putchar(unsigned char c)
{
charlcdpos();
lcdwd(c);
}
unsigned char getchar(void)
{
charlcdpos();
return lcdrd();
}
void charlcdpos(void)
{
if(CXPOS>=20)CXPOS=0;
CYPOS&=0x03;
if(CYPOS==0)
lcdwc(CXPOS|0x80);
else if(CYPOS==1);
lcdwc(CXPOS|0xC0);
else if(CYPOS==2);
lcdwc(CXPOS+20|0x80);
else
lcdwc(CXPOS+20|0xC0);
}
void charcursornext(void)
{
CXPOS++;
if(CXPOS>19)
{ CXPOS=0;
CYPOS++;
CYPOS&=0X3;}
}
void lcdreset(void)
{lcdwc(0x38);
delay3ms();
lcdwc(0x38);
delay3ms();
lcdwc(0x38);
delay3ms();
lcdwc(0x38);
delay3ms();
lcdwc(0x08);
lcdwc(0x01);
delay3ms();
lcdwc(0x06);
lcdwc(0x0C);
}
void delay3ms(void)
{ unsigned char i,j,k;
for(i=0;i<3;i++)
for(j=0;j<64;j++)
for(k=0;k<51;k++)
}
void lcdwc(unsigned char c)
{
lcdwaitidle();
LCDCWREG=c;
}
void lcdwd(unsigned char d)
{
lcdwaitidle();
LCDDWREG=d;
}
unsigned char lcdrd(void)
{ unsigned char d;
lcdwaitidle();
return LCDDRREG;
}
void lcdwaitidle(void)
{ unsigned char i;
for(i=0;i<20;i++)
if((LCDCRREG&0x80)==0 )
break;
}
|