打印
[Kinetis]

KL25AD转换后在液晶1602上显示的问题!!

[复制链接]
3413|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
774729254|  楼主 | 2013-11-15 14:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 FSL_TICS_Admin 于 2013-11-15 14:37 编辑

我的ADC初始化单端输入,10位采样精度,想采集电压并在1602液晶上显示,
ADCResult  = adc_read(14);        //进行一次模块0通道14采样


                ad=ADCResult*3.3*1000000/1024;        
                v[0]=ad/1000000+'0';
                v[1]='.';
                //v[2]=ad%1000000/100000+'0';
                /*v[3]=ad%1000000%100000/10000+'0';
                v[4]=ad%1000000%100000%10000/1000+'0';
                v[5]=ad%1000000%100000%10000%1000/100+'0';
                v[6]=ad%1000000%100000%10000%1000%100/10+'0';
                v[7]=ad%1000000%100000%10000%1000%100%10+'0';*/
                v[8]='V';
                 LCDCommand(0x80);
                for(i=0;i<9;i++)
                {
                         Writecmd(v);
                }  


为何没有显示??
若ad=3300000,就有显示??ADCResult采样出来的值是什么值?

相关帖子

沙发
springvirus| | 2013-11-15 14:43 | 只看该作者
单单1602的显示,调通了吗

使用特权

评论回复
板凳
motodefy| | 2013-11-15 15:03 | 只看该作者
应该是寄存器没读出来吧··初始化什么的都对么

使用特权

评论回复
地板
FSL_TICS_Admin| | 2013-11-15 15:25 | 只看该作者
是显示为0还是一片空白.如果AD为330000就可以正常显示了?

使用特权

评论回复
5
774729254|  楼主 | 2013-11-15 15:53 | 只看该作者
        //vol=add*3.3*1000000/1024;       
                       
                        LCDCommand(0x80);
                         Writecmd('0'+1);

吧第一行注释掉就可以显示,不注释就不显示,第一行全黑

使用特权

评论回复
6
774729254|  楼主 | 2013-11-15 15:53 | 只看该作者
FSL_TICS_Admin 发表于 2013-11-15 15:25
是显示为0还是一片空白.如果AD为330000就可以正常显示了?

我感觉是不是  /  的原因呢

使用特权

评论回复
7
FSL_TICS_Jeremy| | 2013-11-15 16:01 | 只看该作者
同问你单调1602通过了吗?

使用特权

评论回复
8
774729254|  楼主 | 2013-11-15 16:50 | 只看该作者
FSL_TICS_Jeremy 发表于 2013-11-15 16:01
同问你单调1602通过了吗?

通过了,初始化都没有问题,我参考电压是3.3v的,我输入3.3v,可以输出0x03ff

使用特权

评论回复
9
FSL_TICS_Robin| | 2013-11-15 17:02 | 只看该作者
你仿真看下ADCResult值是否与你期望的相同。
再撇开AD采样,直接给ad赋值看是否1602能输出。

使用特权

评论回复
10
Imakey| | 2013-11-15 17:25 | 只看该作者
同意楼上的,单步仿真跟踪看看~~

使用特权

评论回复
11
FSL_TICS_Jeremy| | 2013-11-15 20:19 | 只看该作者
774729254 发表于 2013-11-15 16:50
通过了,初始化都没有问题,我参考电压是3.3v的,我输入3.3v,可以输出0x03ff ...

可以参考9楼与10楼的建议,仿真时看看采样得到值与实际值是否一致。

使用特权

评论回复
12
KuMo_2011| | 2013-11-15 21:01 | 只看该作者
问个问题:你的1602是3.3V的吗?

使用特权

评论回复
13
黄小俊| | 2013-11-15 21:38 | 只看该作者
数据是浮点型还是整型啊?

使用特权

评论回复
14
774729254|  楼主 | 2013-11-16 09:37 | 只看该作者
KuMo_2011 发表于 2013-11-15 21:01
问个问题:你的1602是3.3V的吗?

3.3和5都可以

使用特权

评论回复
15
774729254|  楼主 | 2013-11-16 09:40 | 只看该作者
FSL_TICS_Jeremy 发表于 2013-11-15 16:01
同问你单调1602通过了吗?

通过了,lcd可以显示,

使用特权

评论回复
16
774729254|  楼主 | 2013-11-16 09:41 | 只看该作者
**n1131 发表于 2013-11-15 21:38
数据是浮点型还是整型啊?

你说的是什么数据

使用特权

评论回复
17
774729254|  楼主 | 2013-11-16 09:46 | 只看该作者
FSL_TICS_Robin 发表于 2013-11-15 17:02
你仿真看下ADCResult值是否与你期望的相同。
再撇开AD采样,直接给ad赋值看是否1602能输出。 ...

我现在不看采样,就把下一行注释掉就可以输出1,不注释,就是第一行显示全黑,第二行不显示
//vol=add*3.3*1000000/1024;       
                       
                        LCDCommand(0x80);
                         Writecmd('0'+1);

使用特权

评论回复
18
774729254|  楼主 | 2013-11-16 09:47 | 只看该作者
是不是vol=add*3.3*1000000/1024; 对程序有什么影响啊

使用特权

评论回复
19
黄小俊| | 2013-11-16 11:59 | 只看该作者
774729254 发表于 2013-11-16 09:41
你说的是什么数据

就是ad,v这些变量是整型吗?如果是的话*3.3又是什么意思?

使用特权

评论回复
20
jiemnij| | 2013-11-16 13:27 | 只看该作者
本帖最后由 jiemnij 于 2013-11-16 13:31 编辑

晕死的代码.
10位的采样精度.居然*1000000..
你想干吗啊.精度最多也就1024当..

另外为了这么点显示..还用到 4字节除法......

像你这种情况..真的为了显示多个0, 迷惑客户,表示精度 ,
直接在LCD那里多显示几个,
也用不到.用这种除法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

299

帖子

1

粉丝