📄 ad7705c.c
字号:
/******************************************************************/
/* 这是用C51语言编的双通道16位A/D转换器AD7705驱动程序,文件名 */
/* 为AD7705C.C */
/* 功能:本程序主要是读出AD7705芯片输入通道CH0(CH1)的模数转换值, */
/* 转换值放在变量a中,AD7705芯片的2个通道可编程为单极性/双极性 */
/* 和差动/单端工作,这里采用单端\单极性输入。本例中AD7705连接的 */
/* 晶振为4MHZ,参考电压为5V,选择通道增益为1,采用自校准方式 。 */
/*******************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DRDY=P1^3;
sbit CS=P1^4;
sbit SO=P1^5;
sbit SCK=P1^6;
sbit SI=P1^7;
void delay(uint z) //延时
{
uchar p;
while(z-->0)
{for(p=0;p<125;p++);}
}
void write(uchar x) //写一个字节子程序
{
uchar i;
CS=0;
SCK=1;
for (i=0;i<8;i++)
{
SCK=0;
delay(1);
SI=(bit)(x&0x80);
delay(1);
SCK=1;
delay(1);
x<<=1;
};
SI=0;
CS=1;
}
uint read(void) //读转换数据子程序
{
uchar i;
uint w ;
w=0;
CS=0;
SCK=1 ;
for(i=0;i<16;i++)
{
SCK=0;
delay(2);
w<<=1;
if(SO==1)
w|=0x01;
SCK=1;
delay(2);
};
CS=1;
return w;
}
void main() //主程序
{
uint a;
write(0x20); //AD7705初始化-读第1通道A/D转换值
write(0x04);
write(0x10);
write(0x44);
delay(3);
while(1)
{
if(DRDY==0) //等待DRDY变低
{
write(0x38);
if(DRDY==0)
{
a=read(); //把A/D转换值送给变量a
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -