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

[复制链接]
4141|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就可以正常显示了?
 楼主| 774729254 发表于 2013-11-15 15:53 | 显示全部楼层
        //vol=add*3.3*1000000/1024;       
                       
                        LCDCommand(0x80);
                         Writecmd('0'+1);

吧第一行注释掉就可以显示,不注释就不显示,第一行全黑
 楼主| 774729254 发表于 2013-11-15 15:53 | 显示全部楼层
FSL_TICS_Admin 发表于 2013-11-15 15:25
是显示为0还是一片空白.如果AD为330000就可以正常显示了?

我感觉是不是  /  的原因呢
FSL_TICS_Jeremy 发表于 2013-11-15 16:01 | 显示全部楼层
同问你单调1602通过了吗?
 楼主| 774729254 发表于 2013-11-15 16:50 | 显示全部楼层
FSL_TICS_Jeremy 发表于 2013-11-15 16:01
同问你单调1602通过了吗?

通过了,初始化都没有问题,我参考电压是3.3v的,我输入3.3v,可以输出0x03ff
FSL_TICS_Robin 发表于 2013-11-15 17:02 | 显示全部楼层
你仿真看下ADCResult值是否与你期望的相同。
再撇开AD采样,直接给ad赋值看是否1602能输出。
Imakey 发表于 2013-11-15 17:25 | 显示全部楼层
同意楼上的,单步仿真跟踪看看~~
FSL_TICS_Jeremy 发表于 2013-11-15 20:19 | 显示全部楼层
774729254 发表于 2013-11-15 16:50
通过了,初始化都没有问题,我参考电压是3.3v的,我输入3.3v,可以输出0x03ff ...

可以参考9楼与10楼的建议,仿真时看看采样得到值与实际值是否一致。
KuMo_2011 发表于 2013-11-15 21:01 | 显示全部楼层
问个问题:你的1602是3.3V的吗?
黄小俊 发表于 2013-11-15 21:38 | 显示全部楼层
数据是浮点型还是整型啊?
 楼主| 774729254 发表于 2013-11-16 09:37 | 显示全部楼层
KuMo_2011 发表于 2013-11-15 21:01
问个问题:你的1602是3.3V的吗?

3.3和5都可以
 楼主| 774729254 发表于 2013-11-16 09:40 | 显示全部楼层
FSL_TICS_Jeremy 发表于 2013-11-15 16:01
同问你单调1602通过了吗?

通过了,lcd可以显示,
 楼主| 774729254 发表于 2013-11-16 09:41 | 显示全部楼层
**n1131 发表于 2013-11-15 21:38
数据是浮点型还是整型啊?

你说的是什么数据
 楼主| 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);

 楼主| 774729254 发表于 2013-11-16 09:47 | 显示全部楼层
是不是vol=add*3.3*1000000/1024; 对程序有什么影响啊
黄小俊 发表于 2013-11-16 11:59 | 显示全部楼层
774729254 发表于 2013-11-16 09:41
你说的是什么数据

就是ad,v这些变量是整型吗?如果是的话*3.3又是什么意思?
jiemnij 发表于 2013-11-16 13:27 | 显示全部楼层
本帖最后由 jiemnij 于 2013-11-16 13:31 编辑

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

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

像你这种情况..真的为了显示多个0, 迷惑客户,表示精度 ,
直接在LCD那里多显示几个,
也用不到.用这种除法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

299

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部