本帖最后由 电子酷酷 于 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);}
}
}
|