|
通過(guò)adc0809采集了電壓和電流信號(hào),但是電壓和電流相乘的結(jié)果會(huì)出錯(cuò)(大于6.多w就計(jì)算錯(cuò)誤了)
1
2
- uchar ADC(uchar CH) //AD轉(zhuǎn)換程序
- {
- uchar n;
- if(CH==0) //通道選擇
- {
- ADDA=0; //使用IN0
- EOC=1;TR0=1;START=0;OE=0;DelayMS(5);
- START=1;DelayMS(5);
- START=0;
- while(EOC==0);
- OE=1;
- n=P1;
- DelayMS(1);
- OE=0;
- TR0=0;
- return n;
- }
- else
- {
- ADDA=1; //使用IN1
- EOC=1;TR0=1;START=0;OE=0;DelayMS(5);
- START=1;DelayMS(5);
- START=0;
- while(EOC==0);
- OE=1;
- n=P1;
- DelayMS(1);
- OE=0;
- TR0=0;
- return n;
- }
- }
- void change1() //數(shù)據(jù)轉(zhuǎn)換
- {
- x=ADC(0)*1.0*5/255*100*20; //擴(kuò)大100倍,方便計(jì)算顯示
- LCDDSY1[2]=x/1000+0x30; //取每一位
- LCDDSY1[3]=x%1000/100+0x30;
- LCDDSY1[4]='.';
- LCDDSY1[5]=x%100/10+0x30;
- LCDDSY1[6]=x%10+0x30;
- LCDDSY1[7]='v';
- }
- void change2() //數(shù)據(jù)轉(zhuǎn)換
- {
- y=ADC(1)*1.0*5/255*100/5;
- LCDDSY1[11]=y/100+0x30;
- LCDDSY1[12]='.';
- LCDDSY1[13]=y%100/10+0x30;
- LCDDSY1[14]=y%10+0x30;
- LCDDSY1[15]='A';
- }
- void display2() //顯示程序2
- {
- uchar i;
- change1();
- Set_LCD_POS(0x00);i=0; //設(shè)定初顯示位置
- while(LCDDSY1[i]!='\0') //判斷字符串是否結(jié)束,沒(méi)結(jié)束則執(zhí)行下方程序
- {
- Write_LCD_Data(LCDDSY1[i]); i++; //寫(xiě)數(shù)據(jù)
- }
- DelayMS(1);
-
- change2();
- Set_LCD_POS(0x08);i=8;//設(shè)定初顯示位置
- while(LCDDSY1[i]!='\0')//判斷字符串是否結(jié)束
- {
- Write_LCD_Data(LCDDSY1[i]);i++; //寫(xiě)數(shù)據(jù)
- }
- DelayMS(1);
- z=x*y;
- LCDDSY2[2]=z/100000+0x30; //取每一位數(shù)據(jù)
- LCDDSY2[3]=z%100000/10000+0x30;
- LCDDSY2[4]='.';
- LCDDSY2[5]=z%10000/1000+0x30;
- LCDDSY2[6]=z%1000/100+0x30;
- LCDDSY2[7]='W';
- Set_LCD_POS(0x40);i=0; //設(shè)定初顯示位置
- while(LCDDSY2[i]!='\0') //判斷字符串是否結(jié)束
- {
- Write_LCD_Data(LCDDSY2[i]);i++; // 寫(xiě)數(shù)據(jù)
- }
- }
復(fù)制代碼
|
|