4224|7

26

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

ADC采样——led显示 [复制链接]

#include <msp430g2231.h>
#include <intrinsics.h>

long volCalibrated,volMeasured[8],volAverage;
unsigned char volMeasuredPosition = 0;
unsigned char i,j;
void main(void)
{
  //unsigned char i;
  //float average_AD;
  WDTCTL = WDTPW + WDTHOLD;
  ADC10CTL0 = SREF_1 + ADC10SHT_0 + ADC10ON + REFON;
  ADC10CTL0 |= REF2_5V;
  ADC10CTL1 = INCH_1+CONSEQ_0+ADC10DIV_0+ADC10SSEL_2;
  ADC10AE0 |= BIT1;
  P1DIR = 0x75;
  __delay_cycles(1000);
  ADC10CTL0 |= ENC + ADC10SC;
  volCalibrated = ADC10MEM;
  for(i = 0;i < 8;i++)
    volMeasured = volCalibrated;
  volAverage = volCalibrated;
  while(1)
  {
    ADC10CTL0 |= ENC + ADC10SC;
    volMeasured[volMeasuredPosition++] = ADC10MEM;
    if(volMeasuredPosition == 8)
      volMeasuredPosition = 0;
    volAverage = 0;
    for(j = 0;j < 8;j++)
    {
      volAverage += volMeasured[j];
    }
    volAverage >>= 3;
    if(volAverage<0x019A)
      P1OUT = BIT0;
    else if(0x019A<=volAverage<0x0267)
      P1OUT = BIT2;
    else if(0x0267<=volAverage<0x0334)
      P1OUT = BIT4;
    else if(0x0334<=volAverage<0x0400)
      P1OUT = BIT5;
    else
      P1OUT = BIT6;
  }

}

 

想实现     当P1.1引脚的电压U<1.0V时,LED1亮

                当P1.1引脚的电压1.0V<=U<1.5V时,LED3亮

                当P1.1引脚的电压1.5V<=U<2.0V时,LED4亮

                当P1.1引脚的电压2.0V<=U<2.5V时,LED5亮

                当P1.1引脚的电压U>2.5V时,LED2亮

 

下载到DEMO板上后实际的情况是

                当P1.1引脚的电压U<1.0V时,LED1亮

                当P1.1引脚的电压U>1.0V时,LED3亮

 

 

是为什么呢?

01.png (40.94 KB, 下载次数: 1)

01.png

最新回复

  红色箭头处就是插入代码功能。      详情 回复 发表于 2012-5-31 09:49
 
点赞 关注

回复
举报

7

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
你看看DATA SHEET吧,应该是你的输入电压超出输入范围了!!使用片内参考电压的话,只有0~1.2V的有效范围,超了就被当成溢出了,所以只有前两个范围有效。
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 starswings 的帖子

不对吧,当我把判断程序改成
if(volAverage<0x0334)  //2.0V基准
      P1OUT = BIT0;
else
      P1OUT = BIT6;

超过2.0V时都可以,不会存在“只有0~1.2V的有效范围,超了就被当成溢出了,所以只有前两个范围有效”的问题
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

4
 

ADC采样——led显示

一楼的问题解决了吗?
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

5
 
奇怪,我的站内短消息,23号的今天短消息才变成红色的提醒,也许是我的浏览器问题。

不好意思,现在才看到。

还没仔细看,扫了一眼,说错了别见怪,没道理我再看看想想学学其它原因因素

转换需要一定时间吧?一般在中断中处理或者等待询问AD模块转换完成的标志位吧?

建议在论坛之类的帖源码,最好在一些设置语句后面或者前面添加配置注释,除非整天设计用msp430的,可能很多人是记不住那些配置符号的含义的
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 wangfuchong 的帖子

谢谢,这个问题已经解决了,把判断语句改为:
if(volAverage<0x019A)
      P1OUT = BIT0;
    else if((volAverage>=0x019A) & (volAverage<0x0267))
      P1OUT = BIT2;
    else if((volAverage>=0x0267) & (volAverage<0x0334))
      P1OUT = BIT4;
    else if((volAverage>=0x0334) & (volAverage<0x0400))
      P1OUT = BIT5;
    else
      P1OUT = BIT6;
就OK了。
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

7
 
原来是语法错误呀

不过您改过的还是冗余呀

再说我之前提的是不是还是要注意?

[ 本帖最后由 wangfuchong 于 2012-5-30 22:46 编辑 ]
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复

2万

帖子

71

TA的资源

管理员

8
 

原帖由 wangfuchong 于 2012-5-29 06:33 发表 奇怪,我的站内短消息,23号的今天短消息才变成红色的提醒,也许是我的浏览器问题。 不好意思,现在才看到。 还没仔细看,扫了一眼,说错了别见怪,没道理我再看看想想学学其它原因因素 转换需要一定时间吧 ...

 

红色箭头处就是插入代码功能。

 

 

未命名.jpg (10.34 KB, 下载次数: 0)

未命名.jpg
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表