想把AD转换结果在12864显示出来,有点问题,大家看看

2020-02-05 09:17发布

我的转换结果处理函数如下:

int ADC_av(uchar ch)
      {
            int ADC_avl=0;
               
       
                uchar num;
                num=10;
                for(num=10;num>0;num--)
                {
                  ADC_avl = ADC_avl +GET_ADCresult(ch);          //GET_ADCresult(ch)是一个ad转换驱动函数的转换结果
                  
                }
                  ADC_avl/=10;                                                         //求10次平均值
                  
                  
                   ADC_CHresult[ch*2] =(ADC_avl*4)/10;           //想把转换结果的十位和个位存在一个数组里面
                   ADC_CHresult[ch*2+1] =(ADC_avl*4)%10;


                  //return(ADC_CHresult[ch] );
           }

但是每次让lcd读取ADC_CHresult[ ] 里面的结果显示的时候,总是显示不出来正确的值,有的是乱码有的是其他东西。有没有
做过的或者懂的帮忙下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
xiaomu
1楼-- · 2020-02-07 20:31
lhcyy 发表于 2012-5-17 16:28
我的采样电压不超过5v其实那个结果乘以4其实是adval*1000/250的意思,想的到流过250电阻的电流值。/ 这个 ...

采样电压不超过5v, 你的模拟参考电压是多少,如果也是5v的话,
你的AD转换值 就在 0-255之间,  adval 不能超过25, 经过这样计算的话
你的采样点电压绝对不能超过 (25*5)/255 = 0.49v,
请楼主仔细确认,你的采样电阻的电压有没有超过0.49v

xiaomu
2楼-- · 2020-02-08 00:54
xiaomu 发表于 2012-5-23 12:15
采样电压不超过5v, 你的模拟参考电压是多少,如果也是5v的话,
你的AD转换值 就在 0-255之间,  adval 不能 ...

我的计算结果是以8位AD为参考的
lhcyy
3楼-- · 2020-02-08 04:44
 精彩回答 2  元偷偷看……
tlptotop
4楼-- · 2020-02-08 07:36
lhcyy 发表于 2012-5-23 11:29
这位大侠说的对,“/”,“%”两边的确应该是整数。对于小数是不成立的

我可没有这么说哟,我只说“%”的两边必须是整数,没有说“/”的两边必须是整数。
USACH
5楼-- · 2020-02-08 12:02
本帖最后由 USACH 于 2012-5-24 06:37 编辑
tlptotop 发表于 2012-5-23 09:13
%是求余(取模),用于计算左操作数除以右操作数的余数。该操作符的操作数只能为整形,包括char short in ...


不想多说,请看微软vs说明吧。虽然我从来没用过小数,但是确实存在这种用法。

给证据吧:http://msdn.microsoft.com/zh-cn/library/h6zfzfy7(v=vs.80).aspx
USACH
6楼-- · 2020-02-08 12:20
lhcyy 发表于 2012-5-21 11:33
这位兄弟你好好看看看吧。在郭天祥的书里面是用“/”来取得一个数除以另一个数的模,也就是整数部分 ...

好吧,如果你觉得老郭的书才是对的,而且你觉得你看懂啦,那你赢啦,我们都错啦,还不行?

一周热门 更多>