智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3245|回复: 9
打印 上一主题 下一主题

[采集类] AD转换问题

[复制链接]

8

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
410
威望
275
贡献
99
兑换币
0
注册时间
2010-4-24
在线时间
18 小时
跳转到指定楼层
1#
发表于 2011-2-19 16:14:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
  1. #include <hidef.h> /* common defines and macros */
  2. #include "derivative.h" /* derivative-specific definitions */

  3. word AD_wValue;

  4. void PLL_Init(void)
  5. {
  6. REFDV=1;
  7. SYNR=2;
  8. while(!(CRGFLG&0x08));
  9. CLKSEL=0x80;

  10. }
  11. void AD_Init(void)
  12. {
  13. ATD0CTL1=0x00;
  14. ATD0CTL2=0x40;
  15. ATD0CTL3=0xa0;
  16. ATD0CTL4=0x01;
  17. ATD0CTL5=0x30;
  18. ATD0DIEN=0x00;
  19. }

  20. void AD_GetValue(word *AD_wValue)
  21. {
  22. *AD_wValue=ATD0DR0;
  23. }

  24. void main(void)
  25. {
  26. /* put your own code here */
  27. PLL_Init();
  28. AD_Init();
  29. DDRB=0xFF;
  30. PORTB=0x00;
  31. EnableInterrupts;

  32. for(;;)
  33. {
  34. while(!ATD0STAT2_CCF0);
  35. AD_GetValue(&AD_wValue);
  36. PORTB=(byte)AD_wValue;
  37. }

  38. }
复制代码

这是一个将ad转换值在B口显示的程序。
请问在B口显示时候怎么看它的变化啊?变化在哪个地方?寄存器?

10

主题

416

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3914

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

QQ
威望
1338
贡献
1476
兑换币
141
注册时间
2010-11-18
在线时间
550 小时
2#
发表于 2011-2-19 16:49:46 | 只看该作者
在B口接LED灯也行,cw的debug界面也有显示寄存器值的窗口
回复

使用道具 举报

3

主题

40

帖子

0

精华

高级会员

Rank: 4

积分
659
威望
436
贡献
199
兑换币
18
注册时间
2010-4-9
在线时间
12 小时
3#
发表于 2011-2-20 19:32:23 | 只看该作者
你用BDM下载的话就在点了那个绿色的东西以后出来个界面里面就可以看到各个寄存器和全局变量的值..如果是用监控下载.那你就在B口接灯..最简单的就是用串口啊..把B口的值发到电脑上来..
回复

使用道具 举报

8

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
410
威望
275
贡献
99
兑换币
0
注册时间
2010-4-24
在线时间
18 小时
4#
 楼主| 发表于 2011-2-24 15:25:25 | 只看该作者
如果我只要用一个ad端口呢,比如AN0端口,使得AN0端口到达一定的电压值后,在PB0口显示高电平???
怎么做啊?
回复

使用道具 举报

2

主题

13

帖子

0

精华

高级会员

珍珠

Rank: 4

积分
562
威望
257
贡献
287
兑换币
6
注册时间
2011-1-17
在线时间
9 小时
5#
发表于 2011-4-15 10:30:40 | 只看该作者
我也正苦恼,不知道你解决没有?分享一下你的心得。
回复

使用道具 举报

8

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
410
威望
275
贡献
99
兑换币
0
注册时间
2010-4-24
在线时间
18 小时
6#
 楼主| 发表于 2011-4-17 20:02:58 | 只看该作者
  1. }*/
  2.    void ADC_Init(void)
  3. {  
  4.   
  5.   ATD0CTL1=0x00;   //7:1-外部触发,65:00-8位精度,4:放电,3210:ch
  6.   ATD0CTL2=0x40;   //禁止外部触发, 中断禁止   
  7.   ATD0CTL3=0xa0;   //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转   
  8.   ATD0CTL4=0x01;   //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]
  9.   ATD0CTL5=0x30;   //6:0特殊通道禁止,5:1连续转换 ,4:1多通道轮流采样
  10.   ATD0DIEN=0x00;   //禁止数字输入
  11. }
  12.   unsigned int AD_Sample()               
  13.   {
  14.     //int ad0;
  15.     ad0=ATD0DR0;
  16.     //ad1=ATD0DR1;
  17.     //ad2=ATD0DR2;
  18.    // ad3=ATD0DR3;
  19.    // ad4=ATD0DR4;
  20.      return ad0;
  21.   }
复制代码
这个就能用,放进去以后可以看到ad0的变化,就在data里面
回复

使用道具 举报

3

主题

50

帖子

0

精华

高级会员

Rank: 4

积分
759
威望
301
贡献
406
兑换币
10
注册时间
2011-2-12
在线时间
26 小时
7#
发表于 2011-4-18 09:13:32 | 只看该作者
手机回帖,在电脑上看应该会好一点、
回复

使用道具 举报

4

主题

221

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1161

优秀会员奖章

QQ
威望
452
贡献
673
兑换币
0
注册时间
2011-4-9
在线时间
18 小时
8#
发表于 2011-4-23 17:06:28 | 只看该作者
回复

使用道具 举报

0

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
365
威望
253
贡献
90
兑换币
0
注册时间
2011-6-4
在线时间
11 小时
9#
发表于 2011-7-7 15:54:17 | 只看该作者
接led灯显示
回复

使用道具 举报

3

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1179
威望
439
贡献
438
兑换币
39
注册时间
2012-2-8
在线时间
151 小时
毕业学校
北方民族大学
10#
发表于 2012-2-13 15:29:48 | 只看该作者
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 03:12 , Processed in 0.045840 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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