• 大小: 5KB
    文件类型: .c
    金币: 2
    下载: 0 次
    发布日期: 2024-02-02
  • 语言: 其他
  • 标签: AD7746  单片机  

资源简介

MCS51单片机读写AD7745采集电容传感器数据

资源截图

代码片段和文件信息

//**********************************
//   AD7746电容检测
//   IIC接口
//
//***********************************//

#include 
#include 
#include 

sbit SCL=P2^0;
sbit SDA=P2^1;
sbit RDY=P3^3;

#define CapDacvalue  4.97

void IIC_START(void);
void IIC_STOP(void);
void IICSendbyte(unsigned char ch);
void IICSendbyte2(unsigned char ch);
unsigned char IICRECVbyte(void);
unsigned char IICWatask(void);
unsigned char IICWatask2(void);
void IICSendask(void);
void IICSendNask(void);
unsigned char SETUP_7745(unsigned char addrunsigned char value);
void GET7745value(unsigned char *punsigned char n);
void delay(unsigned int x );
unsigned char IICreadstatus(unsigned char addr);
void AD7745_RESET();
unsigned char MRD[3]={000};
unsigned char flflageflag3flag4;
unsigned char stdata;
unsigned long int cfregvalueHcfregvalueMcfregvalueL;




void main()
{
unsigned char capdacreg;

  SCON=0x57;     //波特率发生器 串行方式1  9600
  TMOD=0x21;
  TH1=0xFD;
  TL1=0xFD;
  EA=1;
  TR1=1;
  IT1=1;
  EX1=1;
fl=1;
flage=1;
flag3=1;
flag4=1;
stdata=0x01;
//printf(“%d%d%d%d\n“flflageflag3flag4);
AD7745_RESET();
capdacreg=(int)((CapDacvalue*0x7F)/17);
capdacreg=0x80|capdacreg;
fl=SETUP_7745(0x070x80); //设置CAP SETUP寄存器值
flage=SETUP_7745(0x090x2B); //EXCSETUP  寄存器设置
flag3=SETUP_7745(0x0A0xA1);
flag4=SETUP_7745(0x0Bcapdacreg);
while(1);
 }




void AD7745_RESET(void)
{ IIC_START();
  IICSendbyte(0xBF);
  IIC_STOP();
   }

void IIC_START(void)
{
 //SCL=0;
  SDA=1;
  delay(2);
  SCL=1;
  delay(6);
  SDA=0;
  delay(6);
  SCL=0;
  delay(2);
  }
 void IIC_STOP(void)
 {
 // SCL=0;
  SDA=0;
  delay(2);
  SCL=1;
  delay(6);
  SDA=1;
  delay(6);
  SCL=0;
  delay(4);
 }


void IICSendbyte(unsigned char ch)
{
  unsigned char i;
  SCL=0;
  for (i=0;i<8;i++)
    {
      SDA=(bit)(ch&0x80);
      delay(6);
      ch<<=1;
      SCL=1;
      delay(6);
      SCL=0;
  delay(6);
 }
     delay(6);
  }


 void IICSendbyte2(unsigned char ch)
{
  unsigned char i;
  SCL=0;
  for (i=0;i<8;i++)
    {
      SDA=(bit)(ch&0x80);
      delay(6);
      ch<<=1;
      SCL=1;
      delay(6);
      SCL=0;
  delay(6);
 }
     delay(6);
  }

unsigned char IICRECVbyte(void)
{
  unsigned char i;
  unsigned char temp=0;
  SCL=0;
  SDA=1;
  for (i=0;i<8;i++)
    {

  SCL=1;
          delay(5);
  temp=temp<<1;
      if(SDA==1)
    temp=temp|0x01;
  else
    temp=temp&0xfe;
 SCL=0;
     }
    return(temp);
 }

unsigned char  IICWatask(void)     //等待AD7745向单片机发送应答信号函数
 {
   unsigned char i=0;
   unsigned

评论

共有 条评论