新人求教51单片机PCF8591的一个有关问题
新人求教51单片机PCF8591的一个问题!
我想问switch(AD_CHANNEL) 这个AD_CHANNEL是哪个通道我怎么知道啊? 怎么选择是哪个通道的? 我只知道控制字符能控制是哪个通道,但是怎么是先判断是哪个通道再写控制字符的? 谢谢了!
main()
{ char i,j;
while(1)
{/********以下AD-DA处理*************/
switch(AD_CHANNEL)
{
// 四个通道又是起什么作用呢???
case 0: ISendByte(PCF8591,0x41);
D[0]=IRcvByte(PCF8591)*2; //ADC0 模数转换1 放大2倍显示 case0是用来读取8591第一通 道所采集到模拟量的值
break; //0x41是控制字节 D[0]=IRcvByte(PCF8591)*用来读取AD转换的数据
case 1: ISendByte(PCF8591,0x42);
D[1]=IRcvByte(PCF8591)*2; //ADC1 模数转换2 4个模拟输入在该单片机中只用到两个
break;
case 2: ISendByte(PCF8591,0x43);
D[2]=IRcvByte(PCF8591)*2; //ADC2 模数转换3
break;
case 3: ISendByte(PCF8591,0x40);
D[3]=IRcvByte(PCF8591)*2; //ADC3 模数转换4
break;
case 4: DACconversion(PCF8591,0x40, D[4]/4); //DAC 数模转换
break;
}
D[4]=400; //数字--->>模拟输出
D[4]=D[0]; // 把模拟输入 采样的信号 通过数模转换输出 即把D0 转化成模拟量输出
if(++AD_CHANNEL>4) AD_CHANNEL=0;
------解决方案--------------------
这有什么不明白的? AD_Channel 存的就是通道号啊。取值范围0 - 4,0 - 3 分别对应 ADC0 - ADC3,4 则做DA转换。你是不明白 switch 语句吗?就是根据变量的值跳到相应的 case 去执行
我想问switch(AD_CHANNEL) 这个AD_CHANNEL是哪个通道我怎么知道啊? 怎么选择是哪个通道的? 我只知道控制字符能控制是哪个通道,但是怎么是先判断是哪个通道再写控制字符的? 谢谢了!
main()
{ char i,j;
while(1)
{/********以下AD-DA处理*************/
switch(AD_CHANNEL)
{
// 四个通道又是起什么作用呢???
case 0: ISendByte(PCF8591,0x41);
D[0]=IRcvByte(PCF8591)*2; //ADC0 模数转换1 放大2倍显示 case0是用来读取8591第一通 道所采集到模拟量的值
break; //0x41是控制字节 D[0]=IRcvByte(PCF8591)*用来读取AD转换的数据
case 1: ISendByte(PCF8591,0x42);
D[1]=IRcvByte(PCF8591)*2; //ADC1 模数转换2 4个模拟输入在该单片机中只用到两个
break;
case 2: ISendByte(PCF8591,0x43);
D[2]=IRcvByte(PCF8591)*2; //ADC2 模数转换3
break;
case 3: ISendByte(PCF8591,0x40);
D[3]=IRcvByte(PCF8591)*2; //ADC3 模数转换4
break;
case 4: DACconversion(PCF8591,0x40, D[4]/4); //DAC 数模转换
break;
}
D[4]=400; //数字--->>模拟输出
D[4]=D[0]; // 把模拟输入 采样的信号 通过数模转换输出 即把D0 转化成模拟量输出
if(++AD_CHANNEL>4) AD_CHANNEL=0;
------解决方案--------------------
这有什么不明白的? AD_Channel 存的就是通道号啊。取值范围0 - 4,0 - 3 分别对应 ADC0 - ADC3,4 则做DA转换。你是不明白 switch 语句吗?就是根据变量的值跳到相应的 case 去执行