|
ad轉(zhuǎn)換的數(shù)據(jù)在lcd1602上呈現(xiàn)非線性,怎么讓其呈線性?
while(1) //無(wú)限循環(huán)
{
ST=0; //使采集信號(hào)為低
ST=1; //開(kāi)始數(shù)據(jù)轉(zhuǎn)換
ST=0; //停止數(shù)據(jù)轉(zhuǎn)換
while(~EOC); //等待數(shù)據(jù)轉(zhuǎn)換完畢
OE=1; //允許數(shù)據(jù)輸出信號(hào)
AD0809=P1; //讀取數(shù)據(jù)
OE=0; //關(guān)閉數(shù)據(jù)輸出允許信號(hào)
// if(AD0809>=251) //電壓顯示不能超過(guò)5V
// AD0809=250;
date=AD0809; //數(shù)碼管顯示的數(shù)據(jù)值,其中20為采集數(shù)據(jù)的毫安值
voldata = date*1.0/255*500;
LED1=1,LED2=1,LED3=1,LED4=1,LED5=1,X=1;
switch(voldata/100)
{
case 0: LED1=0,X=0; break;
case 1: LED2=0; break;
case 2: LED3=0; break;
case 3: LED4=0; break;
case 4: LED5=0,X=0; break;
}
// voldata=voldata*4*0.7;
dis4[3] = voldata%10;
dis4[2] = voldata/10%10;
dis4[1] = voldata/100%10;
dis4[0] = voldata/1000;
lcd_wcmd(0x06);//向右移動(dòng)光標(biāo)
lcd_pos(0x86);//設(shè)置顯示位置為第一行的第1個(gè)字符
// lcd_wdat('0'+dis4[ 0 ]);
// lcd_pos(0x87);
// lcd_wdat('0'+dis4[ 1 ]);
// lcd_pos(0x88);
// lcd_wdat('0'+dis4[ 2 ]);
// lcd_pos(0x89);
// lcd_wdat('0'+dis4[ 3 ]);
// lcd_pos(0x8A);
// lcd_wdat('0'+dis4[ 4 ]);
for(i=0;i<4;i++)
{
lcd_wdat('0'+dis4[ i ]);
delay(10);//控制兩字之間顯示速度
}
lcd_pos(0x40);//設(shè)置顯示位置為第二行第1個(gè)字符
i = 0;
while(dis3[ i ] != '\0')
{
lcd_wdat(dis3[ i ]);
i++;
delay(30);//控制兩字之間顯示速度
}
|
|