智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3443|回复: 7
打印 上一主题 下一主题

[编程类] AD转换加显示问题

[复制链接]

7

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
614
威望
438
贡献
142
兑换币
52
注册时间
2010-12-31
在线时间
17 小时
跳转到指定楼层
1#
发表于 2011-2-14 14:21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4贡献
本人用XS128做电压表,就是想看看AD采样的数据对不对,可是显示的结果就是不对,只能正确的显示0.000.其他的电压值就不对了,只要接上电压,就显示一个代码。任何电压都一样,恳请高手解答:、

//前面的显示程序没有问题,我就不发了,很简单的查表。

下面的是主要的程序:

void ADCInit()
{
  ATD0CTL2=0xC0;  //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
  ATD0CTL3=0x22; // 每个序列4次转换,转换完成后睡眠
  ATD0CTL4=0x45; //0100.0101 10位, 8个AD时钟,12div
  ATD0CTL5=0xa0; //右对齐无符号,单通道采样,通道0
  ATD0DIEN=0x00;
}

void main(void)
{  /* put your own code here */
   
ADCInit();   //AD初始化   
  
  DDRA = 0xFF;   //端口定义为out
  DDRB = 0xFF;   //端口定义为OUT
  PORTA  = 0xFF;   //端口拉1, on  LED
  PORTB  = 0xFF;   //端口拉1,off LED
  
  /* put your own code here */
  EnableInterrupts;
  for(;;)
  {   ATD0CTL5=0xA0;  //因为有  ATD0CTL3=0x22;转换完成休眠,故每次要重新启动
           
      while(!ATD0STAT0_SCF);  //等待转换结束
      
      data=(ATD0DR0+ATD0DR1+ATD0DR2+ATD0DR3)/4 ;//一个通道采4次求平均。
  
      t=((data)/1023)*5000;  //我觉得关键的就是这里,能不能这样换算?我用的是10位的AD,满量程1023.
      dispbuf[0]=t%10; // 个位
      dispbuf[1]=t/10%10;//十位
      dispbuf[2]=t/100%10;//百位
      dispbuf[3]=t/1000;//千位
      Display();
  
  }
}

14

主题

44

帖子

0

精华

高级会员

Rank: 4

积分
866
威望
316
贡献
432
兑换币
6
注册时间
2010-11-22
在线时间
59 小时
2#
发表于 2011-2-23 00:45:28 | 只看该作者
参考电压接错了吧?检查一下
回复

使用道具 举报

7

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
614
威望
438
贡献
142
兑换币
52
注册时间
2010-12-31
在线时间
17 小时
3#
 楼主| 发表于 2011-3-24 20:48:34 | 只看该作者
参考电压是开发板子上已经接好的啊。5V
回复

使用道具 举报

12

主题

1121

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3668

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
1871
贡献
1107
兑换币
93
注册时间
2011-3-14
在线时间
345 小时
4#
发表于 2011-3-24 21:00:45 | 只看该作者
t是什么类型的数?Unsigned int?
回复

使用道具 举报

12

主题

1121

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3668

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
1871
贡献
1107
兑换币
93
注册时间
2011-3-14
在线时间
345 小时
5#
发表于 2011-3-24 21:01:32 | 只看该作者
建工程时,定义浮点数了没?
回复

使用道具 举报

7

主题

120

帖子

0

精华

高级会员

Rank: 4

积分
614
威望
438
贡献
142
兑换币
52
注册时间
2010-12-31
在线时间
17 小时
6#
 楼主| 发表于 2011-4-8 21:20:15 | 只看该作者
定义浮点数?什么意思啊?希望能解释的明白一点,谢谢了
回复

使用道具 举报

10

主题

416

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3914

特殊贡献奖章优秀会员奖章在线王奖章活跃会员奖章

QQ
威望
1338
贡献
1476
兑换币
141
注册时间
2010-11-18
在线时间
550 小时
7#
发表于 2011-4-8 23:16:38 | 只看该作者
学下数据结构吧...

先乘5000再除1023试试,另外把这个数定义为long型
回复

使用道具 举报

15

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
威望
436
贡献
1080
兑换币
30
注册时间
2012-3-3
在线时间
46 小时
8#
发表于 2012-3-22 19:25:10 | 只看该作者
试试用超频PLL来设定频率,我觉得是频率不够高,这个跟t没关系,t=((data)/1023)*5000;这个算法是对的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 01:43 , Processed in 0.124257 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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