2356|1

1704

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

基于MSP430F5529单片机的ADS1115 [复制链接]

给大家带来还是TI公司出品的芯片——ads1115。
再看本篇之前最好先备好ads1115的datasheet。

(一)、芯片简介
ADS1115是具有内部基准、振荡器和可编程比较器且兼容 I2C 的ADS111x、超小型、低功耗 860SPS、16 位 ADC 。
在操作之前,你需要一块ads1115,一块单片机,CCS,还要会一点I2C协议的内容。

(二)、电路图


在这里先说明一下,为什么要接三个上拉电阻,因为在datasheet里面有明确的要求。

(三)、核心代码
1、ads1115通讯
首先来说说ads1115与430单片机之间的通讯,该通讯是采用I2C协议。

/******************************
 * 2 start i2c 启动
 ****************************/
void start()
{
    SCL_H;
    SDA_H;
    delay();
    SDA_L;
    delay();
    SCL_L;
}
/********************************
 * 3  结束 I2c
 ********************************/
void stop()  //和例程不太一样!
{
    SCL_L;
    SDA_L;
    delay();
    SCL_H;
    delay();
    SDA_H;
}
/******************
 * 4 i2c主机应答操作
 *******************/
void mack(void)
{
    SDA_L;
    _NOP();
    _NOP();
    SCL_H;
    delay();
    SCL_L;
    _NOP();
    _NOP();
    SDA_H;
    delay();
}
/**********************
 * 5 i2c 主机无应答操作
 *******************/
void mnack()
{
    SDA_H;
    _NOP();
    _NOP();
    SCL_H;
    delay();
    SCL_L;
    _NOP();
    _NOP();
    SDA_L;
    delay();
}
/*************
 * 6
 */
void ack()
{
    uchar i=0;
    SDA_in;
    SCL_H;
    delay();
    while((P3IN&BIT5)&&(i<250))
        i++;
    SDA_out;
    SCL_L;
    delay();
}
/************************
 * 7  写1
 *************************/
void write1()
{
    SDA_H;
    delay();
    SCL_H;
    delay();
    SCL_L;
    delay();
}
/********************8
 * 8  写0
 */
void write0()
{
    SDA_L;
    delay();
    SCL_H;
    delay();
    SCL_L;
    delay();
}
/*************
 * 9  写字节
 */
void write1byte(uchar data)
{
    uchar i;
    for(i=8;i>0;i--)
    {
        if(data&0x80)
            write1();
        else
            write0();
        data<<=1;
    }
    SDA_H;
    _NOP();
}
/**************
 *   读字节
 */
uchar read1byte(void)
{
 uchar  rdata = 0x00,i;
    uchar flag;
     for(i = 0;i < 8;i++)
     {
      SDA_H;
      SCL_H;
      SDA_in;
      flag = SDA_val;
      rdata <<= 1;
      if(flag)
          rdata |= 0x01;
       SDA_out;
        SCL_L;
     }
return rdata;
}


3、main函数介绍
#include<msp430f5529.h>
#include"ads1115.h"
#include"LCD12864.h"
#include"stdio.h"
#include"math.h"

unsigned int valuex[];

unsigned int value_0;
unsigned long temp;
unsigned char result[6];

void float_to_result(int value_temp)
{
    temp = (float)value_temp*0.6250190741;           //将AD值转化为数组  6.144/32767*10000
    result[0] = (temp/10000)+'0';
    result[1] =  '.';
    result[1] = (temp/1000%10)+'0';
    result[2] = (temp/100%10)+'0';
    result[3] = (temp/10%10)+'0';
    result[4] = (temp%10)+'0';
}


void main()
{
    WDTCTL=WDTPW+WDTHOLD;
    LCD_Ioinit();      //12864显示初始化
    LCD_Init();
    LCD_Clean();
    LCD_Write(0,0,"电压:");
    ads1115_init();
    while(1)
    {

        value_0=Start_1115(0);               //得到数值
        float_to_result(value_0);                //数值转化为数组以便输出
        LCD_Setpos(1,0);
        LCD_Writestring(result,6);
    }
}

最新回复

谢谢,分享。   详情 回复 发表于 2020-12-7 22:03
 
点赞(1) 关注

回复
举报

2618

帖子

0

TA的资源

纯净的硅(高级)

沙发
 

谢谢,分享。

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表