• 大小: 5KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: C/C++
  • 标签: ADS1115  51  

资源简介

用C语言写的51单片机驱动ADS1115的程序源码,经实测,有效。

资源截图

代码片段和文件信息


/************************************************************************
程序功能:   为IIC总线的基本驱动程序(此程序没有写主函数,只是一些IIC必备的子函数)。
***********************************************************************/

#include                                                  //1脚接三脚接地  二脚置空  4、5信号  sd、sl见程序
#include 
#define uint unsigned int
#define uchar unsigned char
sbit sda=P2^0;                          //IO口定义
sbit scl=P2^1;
sbit dula=P2^6;  //数码管段选锁存器控制信号
sbit wela=P2^7;  //数码管位选锁存器控制信号

/*定义数码管显示字符跟数字的对应数组关系*/
uchar code mun_to_char[]={0x3f0x060x5b0x4f0x660x6d0x7d           //数码管显示编码(1-F)
                        0x070x7f0x6f0x770x7c0x390x5e0x790x710x40};

uchar code sled_bit_table[]={0x7e0x7d0x7b0x770x6f0x5f};/*定义点亮的数码管与数组的关系*/

void nop()
{
    _nop_();
    _nop_();
}
/////////24C02读写驱动程序////////////////////
void delay1(unsigned int m)
{   unsigned int n;
    for(n=0;n}
void delay(uchar x)
{
    uchar j;
    while(x--){
        for(j=0;j<125;j++)
            {;}
        }   
}

void init()  //24c02初始化子程序
{
    scl=1;
    nop();
    sda=1;
    nop();
}

void start()        //启动I2C总线
{
    sda=1;
    nop();
    scl=1;
    nop();
    sda=0;
    nop();
    scl=0;
    nop();
}

void stop()         //停止I2C总线
{
    sda=0;
    nop();
    scl=1;
    nop();
    sda=1;
    nop();
}

void writebyte(unsigned char j)  //写一个字节
{
    unsigned char itemp;
    temp=j;
    for (i=0;i<8;i++)
   {
       temp=temp<<1;
       scl=0;
       nop();
       sda=CY;      //temp左移时,移出的值放入了CY中
       nop();
       scl=1;       //待sda线上的数据稳定后,将scl拉高
       nop();
   }
   scl=0;
   nop();
   sda=1;
   nop();
}

unsigned char readbyte()   //读一个字节
{
   unsigned char ijk=0;
   scl=0; nop(); sda=1;
   for (i=0;i<8;i++)
   {  
        nop(); scl=1; nop();
        if(sda==1) 
        j=1;
        else
        j=0;
        k=(k<<1)|j;
        scl=0;
    }
    nop();
    return(k);
}

void respons()         //I2C总线时钟
{
   unsigned char i=0;
   scl=1;
   nop();
   while((sda==1)&&(i<255))
      i++;
   scl=0;
   nop();
}
void respons_()         //I2C总线时钟
{
   unsigned char i=0;
   sda=0;
   scl=1;
   nop();
   no

评论

共有 条评论