资源简介

此为ADS1115的全部代码,包括一个主函数,一个ADS1115的函数,一个12864的函数

资源截图

代码片段和文件信息

/*
 * ads1115.c
 *
 *  Created on: 2019年7月19日
 *      Author: Administrator
 */
#include“ads1115.h“
/*************************
 * 1 delay
 *************************/
void delay(void)
{
    uchar i;
    for(i=0;i<5;i++)
        _NOP(); //延时一个机器周期

}
/******************************
 * 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 = 0x00i;
    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;
}

/*
 * 1115写寄存器
 */

void Confige1115(uchar channel)
{
    uchar a_channel;
    switch(channel)
    {
    case 0:
        a_channel=0xC0;   //单通道输入
        break;
    case 1:
          a_channel=0xD0;
          break;
    case 2:
          a_channel=0xE0;
          break;
    case 3:
          a_channel=0xF0;
          break;
    case 4:
        a_channel=0x84;    //差分输入 的指令
    default :
          break;

    }
    start();
    write1byte(address);
    ack();
    write1byte(config);
    ack();
    write1byte(a_channel);
    ack();
    write1byte(Lsiwei);
    ack();
    stop();

}
/*
 * 读取数值
 */
uint read1115(void)

{
  uchar result_lresult_h;
  uint result;
  start();
  write1byte(address);
  ack();
   write1byte(conversion);
  ack();
  stop();
  start();
  write1byte(address+1);
   ack();
  result_h=re

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1823  2019-08-03 19:44  LCD12864.c

     文件        519  2019-08-20 11:17  LCD12864.h

     文件       1108  2019-08-20 16:05  main.c

     文件       3492  2019-08-20 16:05  ads1115.c

     文件       1111  2019-08-20 11:10  ads1115.h

----------- ---------  ---------- -----  ----

                 8053                    5


评论

共有 条评论