您现在的位置: 主页 > MCU > 单片机技术应用 > AD7730读写程序 -
本文所属标签:
为本文创立个标签吧:

AD7730读写程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]#i nclude sbit AD7730_CS=P0^4;
sbit AD7730_SCLK=P0^0;
sbit AD7730_DIN=P0^1;
sbit AD7730_DOUT=P0^2;
sbit AD7730_RDY=P0^3;void WriteByteToAd7730(unsigned char WriteData);
unsigned char ReadByteFro

#i nclude

sbit AD7730_CS=P0^4;
sbit AD7730_SCLK=P0^0;
sbit AD7730_DIN=P0^1;
sbit AD7730_DOUT=P0^2;
sbit AD7730_RDY=P0^3;

本文引用地址: http://www.21ic.com/app/mcu/201808/787293.htm

void WriteByteToAd7730(unsigned char WriteData);
unsigned char ReadByteFromAd7730(void);
void Ad7730_Ini(void);
long ReadAd7730ConversionData(void);/*
AD7730写寄存器函数
WriteData:要写的数据
*/
void WriteByteToAd7730(unsigned char WriteData)
{
unsigned char i;
AD7730_CS=0;
for(i=0;i<8;i++)
{
AD7730_SCLK=0;
if(WriteData&0x80)AD7730_DIN=1;
else AD7730_DIN=0;
WriteData=WriteData<<1;
AD7730_SCLK=1;
}
AD7730_DIN=0;
AD7730_CS=1;
}/*
AD7730读寄存器函数
*/
unsigned char ReadByteFromAd7730(void)
{
unsigned char i;
unsigned char ReadData;
AD7730_CS=0;
AD7730_DIN=0;
ReadData=0;
for(i=0;i<8;i++)
{
AD7730_SCLK=0;
ReadData=ReadData<<1;
if(AD7730_DOUT)ReadData+=1;
AD7730_SCLK=1;
}
AD7730_CS=1;
return(ReadData);
}void Ad7730_Ini(void)
{
unsigned char i;
WriteByteToAd7730(0x03);
/* Writes to Communications Register Setting Next Operation as Write to
Filter Register*/
WriteByteToAd7730(0x80);
WriteByteToAd7730(0x00);
WriteByteToAd7730(0x10);
/* Writes to Filter Register Setting a 50 Hz Output Rate in CHOP Mode*/
WriteByteToAd7730(0x04);
/* Writes to Communications Register Setting Next Operation as Write to
DAC Register*/
WriteByteToAd7730(0x20);
/* Writes to DAC Register Setting a Subtraction Value of 0 mV (5 V Reference)
on the TARE DAC*/
WriteByteToAd7730(0x14);
i=ReadByteFromAd7730();
WriteByteToAd7730(0x02);
/* Writes to Communications Register Setting Next Operation as Write to
Mode Register*/
WriteByteToAd7730(0xb1);
WriteByteToAd7730(0x80);
/* Writes to Mode Register Initiating Internal Full-Scale Calibration for 0 mV
to +10 mV Input Range*/
while(AD7730_RDY)RstWDT();
/* Wait for RDY pin to go low to indicate end of calibration cycle*/
WriteByteToAd7730(0x02);
/* Writes to Communications Register Setting Next Operation as Write to
Mode Register*/
WriteByteToAd7730(0x91);
WriteByteToAd7730(0x80);
/* Writes to Mode Register Initiating Internal Zero-Scale Calibration for
0 mV to +10 mV Input Range*/
while(AD7730_RDY)RstWDT();
/* Wait for RDY pin to go low to indicate end of calibration cycle*/

WriteByteToAd7730(0x02);
/* Writes to Communications Register Setting Next Operation as Write to
Mode Register*/
WriteByteToAd7730(0x31);
WriteByteToAd7730(0x80);
/* Writes to Mode Register Starting Continuous Conversions for 0 mV to
+10 mV Input Range*/
while(AD7730_RDY)RstWDT();
/* Wait for RDY pin to go low to indicate end of calibration cycle*/
}long ReadAd7730ConversionData(void)
{
long ConverData;
WriteByteToAd7730(0x21);
/* Writes to Communications Register Setting Next Operation as Continuous
Read From Data Register*/
AD7730_DIN=0;
while(AD7730_RDY)RstWDT();
/* Wait for RDY pin to go low to indicate end of calibration cycle*/
if(!AD7730_RDY)
{
ConverData=0;
ConverData=ReadByteFromAd7730();
ConverData=ConverData<<8;
ConverData=ReadByteFromAd7730()+ConverData;
ConverData=ConverData<<8;
ConverData=ReadByteFromAd7730()+ConverData;
}
/* Read Conversion Result from AD7730's Data Register*/
WriteByteToAd7730(0x30);
/* Ends Continuous Read Operation and Places Part in Mode Where It
Expects Write to Communications Register*/
return(ConverData);
}



              查看评论 回复



 

"AD7730读写程序 -"的相关文章

网站地图

围观()