資源簡介
MCS51單片機讀寫AD7745采集電容傳感器數(shù)據(jù)
代碼片段和文件信息
//**********************************
//???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;?????//波特率發(fā)生器?串行方式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);?//設(shè)置CAP?SETUP寄存器值
flage=SETUP_7745(0x090x2B);?//EXCSETUP??寄存器設(shè)置
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向單片機發(fā)送應(yīng)答信號函數(shù)
?{
???unsigned?char?i=0;
???unsigned
評論
共有 條評論