ADC0809,3路模数转换后,比较的问题

steve_shen 2011-12-02 08:29:21
我的程序ADC0809,3个in输入,得到了3个模数转换的结果,但是为什么一拿来比较就出现问题?
void ShowDianliu()
{
uint IONE,ITWO,ITHREE,Electric_Current;
Delay(2);
IONE=DianYa_ADC0809_Get(0)*1.0*10/255; //获得一路电压
Delay(20);
ITWO=DianYa_ADC0809_Get(1)*1.0*10/255; //获得第二路电压
Delay(20);
ITHREE=DianYa_ADC0809_Get(2)*1.0*10/255;//获得第三路电压
Delay(20);
Electric_Current=MAX(IONE,ITWO,ITHREE); //3路电压取最大值
IntToStr(&TempBuffer[0],&TempBuffer[0]); //int转换成string
LCD_Play(&TempBuffer[0],17); //LCD显示字符串
IntToStr(IONE,&TempBuffer[1]);
LCD_Play(&TempBuffer[1],21);
IntToStr(ITWO,&TempBuffer[2]);
LCD_Play(&TempBuffer[2],25);



在主函数中调用void main()
{

LCD_Init();
ADC0809Initial();

while(1)
{ ShowDianliu(); //电压显示

}

}
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
steve_shen 2011-12-08
  • 打赏
  • 举报
回复
if((max-IONE)>1 || (max-ITWO)>1 ||(max-ITHREE)>1)
{
ErrorFlag = 4;
STOP = 1;
}

这个函数 if语句里面的比较是否存在问题?
为什么即使max与其他的几个数字值差1,2,甚至更大,这个语句内部没有执行?
liangboone 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 steve_shen 的回复:]
读进来的三个数据为什么总是一样的呢??
[/Quote]
(1)如果读进来的三个数据一样,那可能是你的DianYa_ADC0809_Get()函数有问题。
(2)另外,你可以先不用DianYa_ADC0809_Get函数,直接给IONE,ITWO,ITHREE赋值一个常数,这样就可以看看你的比较函数,转换函数以及显示有没有问题
steve_shen 2011-12-06
  • 打赏
  • 举报
回复
读进来的三个数据为什么总是一样的呢??
steve_shen 2011-12-06
  • 打赏
  • 举报
回复
读进来的三个数据,总是不能正常读入
IntToStr,这个函数没问题,我有这个函数的
leiiiii 2011-12-02
  • 打赏
  • 举报
回复
MAX没问题啊,三个数比较后出现什么问题?
liangboone 2011-12-02
  • 打赏
  • 举报
回复
你说的一比较就出问题是什么意思??
IntToStr(&TempBuffer[0],&TempBuffer[0]); //int转换成string
这句话是不是写错了。
steve_shen 2011-12-02
  • 打赏
  • 举报
回复
//获取的三个电流比较大小,取得最大值*****************************/
uint MAX(uint one,uint two,uint three)
{
uint max=one;
max=(one>two&&one>three)?one:(two>three)?two:three;
return max;
}
leiiiii 2011-12-02
  • 打赏
  • 举报
回复
把你的MAX函数贴出来。

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧