本帖最后由 電子酷酷 于 2018-4-8 10:17 編輯
求教 ADC0809+AT89C52+LCD1602怎么同時顯示4組電壓值? 不知道主程序哪里出錯
void main()
{
uchar num=0;
unsigned char temp[7];//顯示區域臨時存儲數組
float Voltage; //浮點變量
ADC0809_init();
LCD_Init(); //LCD初始化
DelayMs(20);
LCD_Clear(); //清屏
LCD_Write_String(0,0,""); //設置表頭"PYH_DVM /V"
LCD_Write_String(2,1,"0593"); //設置表頭"PYH_DVM /V"
DelayMs(500);
ADC0809_init(); //AD0809初始化
ST=0;
while(1)
{
ST=1; //啟動ADC0809
ST=0;
//keyscan(); //0~2
if(r==0)
{ ALE=1; //允許寫入地址
ADDA=0;
ADDB=0;
ADDC=0;
ALE=0;
num=Read_AD(); //讀取AD0809數據
Voltage=(float)num*5/256; //數據轉換,float是強制轉換符號,將結果轉換為浮點型
sprintf(temp,"V1:%4.1f ",Voltage); //格式輸出電壓值,%4.1表示浮點輸出,小數點后1位
LCD_Write_String(0,0,temp); } //將數據寫入1602顯示
else if(r==1)
{ ALE=1; //允許寫入地址
ADDA=1;
ADDB=0;
ADDC=0;
ALE=0;
num=Read_AD(); //讀取AD0809數據
Voltage=(float)num*5/256; //數據轉換,float是強制轉換符號,將結果轉換為浮點型
sprintf(temp,"V2:%4.1f ",Voltage); //格式輸出電壓值,%4.1表示浮點輸出,小數點后1位
LCD_Write_String(0,1,temp);}
else if(r==2)
{ALE=1; //允許寫入地址
ADDA=0;
ADDB=1;
ADDC=0;
ALE=0;
num=Read_AD(); //讀取AD0809數據
Voltage=(float)num*5/256; //數據轉換,float是強制轉換符號,將結果轉換為浮點型
sprintf(temp,"V3:%4.1f ",Voltage); //格式輸出電壓值,%4.1表示浮點輸出,小數點后1位
LCD_Write_String(9,0,temp); }
else if(r==3)
{ALE=1; //允許寫入地址
ADDA=1;
ADDB=1;
ADDC=0;
ALE=0;
num=Read_AD(); //讀取AD0809數據
Voltage=(float)num*5/256; //數據轉換,float是強制轉換符號,將結果轉換為浮點型
sprintf(temp,"V4:%4.1f ",Voltage); //格式輸出電壓值,%4.1表示浮點輸出,小數點后1位
LCD_Write_String(9,1,temp);}
}
}
|