打印
[MSP430]

求大神,430f1611单片机控制ads1115,不能采样

[复制链接]
1929|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序网上下的,自己稍微改动了一下

#include  <msp430x16x.h>
#include"nokia_5110.h"
#include"nokia_5110.c"
#define SCL_Out P2DIR |= BIT0;
#define SDA_Out P2OUT |= BIT1;
#define SDA_In  P2OUT &= ~BIT1;
#define SCL_L P2OUT &= ~BIT0;
#define SCL_H P2OUT |= BIT0;
#define SDA_L P2OUT &= ~BIT1;
#define SDA_H P2OUT |= BIT1;
#define uchar unsigned char
#define uint unsigned int
unsigned int Initdata[4]={0};
extern unsigned int Initdata[4];
uint result_gd=0;
unsigned long sum = 0;
uint real;
void start()
{      
        SDA_Out;
        SDA_L;
        SCL_Out;
        SCL_H;
        SDA_H;
        SDA_L;
        SCL_L;
}
/*************终止信号*************/
void stop()
{       SDA_Out;
        SDA_L;
        SCL_H;
        SDA_H;
}
/*************向I2C总线发送一个字节************/
void Send1byte(uint byte)
{
        uint i;
        SDA_Out;
        for(i=0;i<8;i++)
        {
           if((byte<<i) & 0x80)
                   SDA_H
           else
           SDA_L;
           SCL_H;
           SCL_L;
         }
  SDA_H;
  SCL_H;
  SCL_L;
}
/**************读取一个字节**************/
uint Read1byte()
{
    uint temp=0,i;
    SDA_In;
    for(i=0;i<8;i++)
    {
            temp=temp<<1;
            SCL_L;
        SCL_H;
        if(P2IN&0x02)
        {
                temp|=0x01;
        }

    }
    SDA_Out;
    SCL_L;
    SDA_L;
    SCL_H;
    SCL_L;
    SDA_H;
    return temp;
}
/*******************Config寄存器*********************/
void Confige_1115(uchar channel )
{
    uchar i=0;
    switch(channel)
    {
    case 0:  Initdata[2] = 0xc2; break;
    case 1:  Initdata[2] = 0x52; break;
    case 2:  Initdata[2] = 0x62; break;
    case 3:  Initdata[2] = 0x72;
    }
    Initdata[0] =0x90;       // 启动配置命令
    Initdata[1] =0x01;       // 指向配置寄存器
    Initdata[3] =0x83;       // 配置字低字节
    SCL_H;
    start();
    for(i=0;i<4;i++)
    {
              Send1byte(Initdata[i]);
              _NOP();
    }
    stop();
}
/************指向转换结果寄存器***************/
void Point_reg(void)
{
        uchar i=0;
        Initdata[0] =0x90;           // 地址 + 写命令
        Initdata[1] =0x00;            // 指向转换结果寄存器
          SDA_Out;
          SCL_H;
          start();
          for(i=0;i<2;i++)
            {
                  Send1byte(Initdata[i]);
            }
          stop();
}
/**************读取转换结果***************/
uint Read_1115(void)
{
  uchar   ResultL,ResultH;
  uint    Result;
  SCL_H;
  start();
  Send1byte(0x91);
  ResultH=Read1byte();
  ResultL=Read1byte();
  stop();
  Result=ResultH*256+ResultL;
  return   Result;
}

/**************起始信号***************/

void Init_clk()
{
    unsigned int i;
    BCSCTL1&=~XT2OFF;  //XT2OFF=0x80 初始化XT2(开启xt2振荡器)
    BCSCTL2|=SELM1+SELS;//选择MCLK、SMCLK的时钟源是TX2LCK(8M的高频晶体振荡器)
    do
    {
      IFG1&=~OFIFG;   //将IFG1.1位置0
      for(i=0xff;i>0;i--);  
    }
    while((IFG1&OFIFG));   //晶体振荡器的故障诊断,OFIFG=0x02,若该位是置位状态则振荡器有故障出现,若复位则表示振荡器没有故障,已经起振了
    BCSCTL2|=SELM_2;     //MCLK的时钟源为XT2CLK
}
/*************************************************************
本例仅供参考,希望各位在浏览程序的同时去看看ADS1115的Datasheet,
这样才能更深刻的体会到怎么去看懂一个芯片的数据手册,当自己拿着
一块从来没有接触过的芯片的时候能凭借自己的能力征服它。
*************************************************************/
unsigned int value;
void main(  )
{
  uchar j,i;                        
  WDTCTL = WDTPW + WDTHOLD;
  Init_clk();
      
    P3SEL = 0x00;                     //设置IO口为普通I/O模式
    P3DIR = 0xff;                     //设置IO口方向为输出
     P3OUT = 0x01;
         LCD_Init();
         LCD_clear();  
         while(1)
        {  int v1,v2,v3,v4;
            for(i=0;i<16;i++)
            sum+=Read_1115();//将ad转换的值赋给sum,取16次转换的平均值
            sum>>=4;//左移相当于除以16
            real=sum/10;//4.096*(2/3)=2.731,因为参考电压3.3/2.731=1.2084,再扩大1000倍便于显示  
                                      //对于AINn不是GND的情况,+FS最高为7fff,最低-FS为1000,只显示0~+FS只除以32768,
                                       //90用于误差矫正
           v1 = real / 1000; //最高位      
           v2 = (real - v1*1000)/100;//次高位
           v3 = (real - v1*1000 - v2*100)/10;//次低位
           v4 = real - v1*1000 - v2*100 - v3*10; //最低位
            display_char(7,1,v1+48);
            display_char(8,1,46);
            display_char(9,1,v2+48);
            display_char(10,1,v3+48);
            display_char(11,1,v4+48);
}
}

相关帖子

沙发
凤凰游天|  楼主 | 2013-8-5 17:37 | 只看该作者
这是电路图

N`T~IR}U899(XN398RTYU)3.zip

22.45 KB

使用特权

评论回复
板凳
凤凰游天|  楼主 | 2013-8-6 09:28 | 只看该作者

使用特权

评论回复
地板
dirtwillfly| | 2013-8-6 10:13 | 只看该作者
不能采样的原因有很多,猜不到楼主的原因

使用特权

评论回复
5
qzc13457| | 2013-8-6 10:15 | 只看该作者
看见这样的帖子就头疼,问题描述的太笼统,木有看下去的兴趣啊

使用特权

评论回复
6
dirtwillfly| | 2013-8-6 10:15 | 只看该作者
帮楼主把电路图贴出来

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
凤凰游天 + 1 赞一个!
7
凤凰游天|  楼主 | 2013-8-6 21:21 | 只看该作者
dirtwillfly 发表于 2013-8-6 10:15
帮楼主把电路图贴出来

谢谢了!

使用特权

评论回复
8
凤凰游天|  楼主 | 2013-8-6 21:24 | 只看该作者
qzc13457 发表于 2013-8-6 10:15
看见这样的帖子就头疼,问题描述的太笼统,木有看下去的兴趣啊

看了两天,没搞出来,我也头疼啊

使用特权

评论回复
9
dirtwillfly| | 2014-10-24 09:12 | 只看该作者
楼主问题解决了吗?解决了记得及时结贴哦~~
结贴方法:https://bbs.21ic.com/icview-442857-1-1.html

使用特权

评论回复
10
ssttww| | 2014-10-24 10:12 | 只看该作者

使用特权

评论回复
11
wsnsyy| | 2014-10-24 10:26 | 只看该作者
簡單描述一下,做了哪些嘗試?什麽結果?什麽現象。

使用特权

评论回复
12
cdf1214| | 2015-3-28 15:19 | 只看该作者
                 北京长实拓展电子有限公司
本公司主营TI. NXP. IR. ON. SiLicon                                                                                                       等著名世界品牌产品。
MSP430F一系列TI储存芯片 微控处理器
MSP430F149IPMR MSP430F5438AIPZR MSP430F5438IPZR等。
C8051F 一系列SILICON 单片机 微控处理器
C8051F020 C8051F120 C8051F340 C8051F040等
LPC一系列NXP单片机  
LPC2132FBD64 LPC2134FBD64 LPC2214FBD144  
LPC2378FBD144 LPC2292FBD144等一系列供应
专营:低压差 基准源 三 五 七端稳压 二三极管 场效应 快恢复 肖特基二极管 可控硅 达林顿 整流桥 TVS管 光藕 MAX AD 集成电路 
                   北京长实拓展电子销售:陈冬锋
                                     QQ:2850327057
                      电话:15711002528,13641144498

使用特权

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

本版积分规则

3

主题

13

帖子

0

粉丝