搜索
bottom↓
回复: 26

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

[复制链接]

出0入0汤圆

发表于 2012-5-17 15:01:46 | 显示全部楼层 |阅读模式
我的转换结果处理函数如下:

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[ ] 里面的结果显示的时候,总是显示不出来正确的值,有的是乱码有的是其他东西。有没有
做过的或者懂的帮忙下

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-5-17 16:22:34 | 显示全部楼层
ADC_avl能保证在25以下么?

如果可能大于25,乘4以后就可能大于100,那么你用“%10”操作将得到其个位,可用“/10”操作将得到什么呢?还能显示么??

出0入0汤圆

 楼主| 发表于 2012-5-17 16:28:27 | 显示全部楼层
eduhf_123 发表于 2012-5-17 16:22
ADC_avl能保证在25以下么?

如果可能大于25,乘4以后就可能大于100,那么你用“%10”操作将得到其个位, ...

我的采样电压不超过5v其实那个结果乘以4其实是adval*1000/250的意思,想的到流过250电阻的电流值。/ 这个是求模的意思

出0入0汤圆

发表于 2012-5-17 17:53:24 | 显示全部楼层
lhcyy 发表于 2012-5-17 16:28
我的采样电压不超过5v其实那个结果乘以4其实是adval*1000/250的意思,想的到流过250电阻的电流值。/ 这个 ...

首先没问你adval表示什么意思,你只要考虑它的值是不是会超过25就好。

其次,“/”运算符表示取模?你用的什么C语言教材??

出0入0汤圆

 楼主| 发表于 2012-5-18 09:54:01 | 显示全部楼层
eduhf_123 发表于 2012-5-17 17:53
首先没问你adval表示什么意思,你只要考虑它的值是不是会超过25就好。

其次,“/”运算符表示取模?你用 ...

/是取模这个解释我是在郭天祥的新概念51单片机教程里面看到的。至于上面程序,我是想把得到的采样值变成十进制数,取个位和十位放入数组,然后在lcd显示时候从数组取出应用

出0入0汤圆

发表于 2012-5-18 10:04:57 | 显示全部楼层
lhcyy 发表于 2012-5-18 09:54
/是取模这个解释我是在郭天祥的新概念51单片机教程里面看到的。至于上面程序,我是想把得到的采样值变成 ...

再去看一遍这个教程……

出0入0汤圆

 楼主| 发表于 2012-5-18 11:09:17 | 显示全部楼层
本帖最后由 lhcyy 于 2012-5-18 11:13 编辑
USACH 发表于 2012-5-18 10:04
再去看一遍这个教程……


可是教程里面好像就是这样的啊上个教程里面的截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-5-18 11:18:22 | 显示全部楼层
lhcyy 发表于 2012-5-18 11:09
可是教程里面好像就是这样的啊上个教程里面的截图

再看一遍吧?

出0入0汤圆

发表于 2012-5-18 11:20:03 | 显示全部楼层
你的数超过了吧

出0入0汤圆

发表于 2012-5-18 11:30:36 | 显示全部楼层
我见到的说法是这样的:
取模(或者余数)运算符 (%)  比如  5.1%0.5  余数是  0.1   比如  7%3  余数是1

除法运算符 (/)   比如  6/3   等于2   注:这个是除法……

出0入0汤圆

发表于 2012-5-18 13:50:38 | 显示全部楼层
int ADC_avl=0;  改成unsigned int 类型

出0入0汤圆

 楼主| 发表于 2012-5-21 11:33:21 | 显示全部楼层
USACH 发表于 2012-5-18 11:30
我见到的说法是这样的:
取模(或者余数)运算符 (%)  比如  5.1%0.5  余数是  0.1   比如  7%3  余数是1

这位兄弟你好好看看看吧。在郭天祥的书里面是用“/”来取得一个数除以另一个数的模,也就是整数部分

出0入0汤圆

发表于 2012-5-22 18:26:03 | 显示全部楼层
lhcyy 发表于 2012-5-21 11:33
这位兄弟你好好看看看吧。在郭天祥的书里面是用“/”来取得一个数除以另一个数的模,也就是整数部分


那个叫“取商”,通常我们所说的“取模”指的都是“取余”。

出0入0汤圆

发表于 2012-5-23 09:13:40 | 显示全部楼层
本帖最后由 tlptotop 于 2012-5-23 09:15 编辑
USACH 发表于 2012-5-18 11:30
我见到的说法是这样的:
取模(或者余数)运算符 (%)  比如  5.1%0.5  余数是  0.1   比如  7%3  余数是1


%是求余(取模),用于计算左操作数除以右操作数的余数。该操作符的操作数只能为整形,包括char short int long类型,以及对应的unsigned类型(C++中还包括bool类型)。所以你举的第一个例子是完全错误的!

出0入0汤圆

发表于 2012-5-23 10:53:26 | 显示全部楼层
取模 取余

出0入0汤圆

发表于 2012-5-23 11:03:20 | 显示全部楼层
不管取啥了,反正意思就是转成10进制数了
问一下楼主,ch*2是什么意思?这样操作数组元素会不会产生越界?

出0入0汤圆

 楼主| 发表于 2012-5-23 11:28:38 | 显示全部楼层
xiaobendan001 发表于 2012-5-23 11:03
不管取啥了,反正意思就是转成10进制数了
问一下楼主,ch*2是什么意思?这样操作数组元素会不会产生越界? ...

你把ch取“0.1.2.3.4等等”代入就可以i帧到为什么ch*2了,

出0入0汤圆

 楼主| 发表于 2012-5-23 11:29:57 | 显示全部楼层
tlptotop 发表于 2012-5-23 09:13
%是求余(取模),用于计算左操作数除以右操作数的余数。该操作符的操作数只能为整形,包括char short in ...

这位大侠说的对,“/”,“%”两边的确应该是整数。对于小数是不成立的

出0入0汤圆

发表于 2012-5-23 11:51:24 | 显示全部楼层
lhcyy 发表于 2012-5-23 11:28
你把ch取“0.1.2.3.4等等”代入就可以i帧到为什么ch*2了,

你的意思是把很多个结果都转换为10进制然后一次按照十位个位的顺序都存到一个数组里面,我问的是这个数组有没有越界操作?

出0入0汤圆

发表于 2012-5-23 12:15:53 | 显示全部楼层
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

出0入0汤圆

发表于 2012-5-23 12:17:01 | 显示全部楼层
xiaomu 发表于 2012-5-23 12:15
采样电压不超过5v, 你的模拟参考电压是多少,如果也是5v的话,
你的AD转换值 就在 0-255之间,  adval 不能 ...

我的计算结果是以8位AD为参考的

出0入0汤圆

 楼主| 发表于 2012-5-23 14:30:20 | 显示全部楼层
xiaomu 发表于 2012-5-23 12:15
采样电压不超过5v, 你的模拟参考电压是多少,如果也是5v的话,
你的AD转换值 就在 0-255之间,  adval 不能 ...

谢谢,首先我上面发的程序里面数据类型发错了。我的adval和函数我都定义为uint,而不是int,在int下的确如你所说。但在uint下可以为65536.所以没问题了。。我采样结果是10位的。现在我已经能分离出十位个个位了。而且也在12864上面都显示出来。

现在遇到的问题是想把结果转换为小数。然后带小数显示在12864上面。这个不知道怎么弄了。求指导下

出0入0汤圆

发表于 2012-5-23 14:33:40 | 显示全部楼层
lhcyy 发表于 2012-5-23 11:29
这位大侠说的对,“/”,“%”两边的确应该是整数。对于小数是不成立的

我可没有这么说哟,我只说“%”的两边必须是整数,没有说“/”的两边必须是整数。

出0入0汤圆

发表于 2012-5-24 06:26: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

出0入0汤圆

发表于 2012-5-24 06:28:35 | 显示全部楼层
lhcyy 发表于 2012-5-21 11:33
这位兄弟你好好看看看吧。在郭天祥的书里面是用“/”来取得一个数除以另一个数的模,也就是整数部分 ...

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

出0入0汤圆

发表于 2012-5-24 09:30:24 | 显示全部楼层
USACH 发表于 2012-5-24 06:26
不想多说,请看微软vs说明吧。虽然我从来没用过小数,但是确实存在这种用法。

给证据吧:http://msdn.mi ...

是的,这种用法的确存在,但是不是在C / C++中。在51单片板块里,通常是C语言,你这样说,很容易误导初学者。
你提供的证据能证明这种用法在vs里是正确的,但vs支持多种语言,在Jscipt里正确,在C / C++里是错误的。我在14楼说的那句,基本上是 C++ Primer中文版(第四版)里的原话。
下面是 5.1 % 0.5 在VC++2010 和 Keil uV4 里的错误信息:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-5-24 11:38:10 | 显示全部楼层
tlptotop 发表于 2012-5-24 09:30
是的,这种用法的确存在,但是不是在C / C++中。在51单片板块里,通常是C语言,你这样说,很容易误导初学 ...

其实我为了说明  \  %  哪是求余数。

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-6 18:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表