?? read7731.c
字號:
#include <reg51.h>
#include <absacc.h>
#include <math.h>
sbit B_AB = P1^7;
sbit CS = P1^0; //P1^4; P1^0;
sbit READY = P1^1; //P3^2 P1^1;
sbit SCLK = P1^4; //P1.7 P1^4;
sbit DIN = P1^3; //P1^6 P1^3;
sbit DOUT = P1^2; //P1.5 P1^2;
signed int s = 0;
void exint0_ist(void) interrupt 0 using 0
{
if (B_AB)
s = s+1;
else s=s-1;
}
//寫7731函數,寫入一個字節,如寫入多個字節,重復該函數。
void print_led(int cord,int i)
{
short bcd,p1_bcd;
if (i==1)
{
bcd=cord/1000;
bcd=bcd<<4;
p1_bcd=bcd+0x0e;
P3=p1_bcd;
}
if (i==2)
{
cord=cord%1000;
bcd=cord/100;
bcd=bcd<<4;
p1_bcd=bcd+0x0d;
P3=p1_bcd;
}
if (i==3)
{
cord=cord%100;
bcd=cord/10;
bcd=bcd<<4;
p1_bcd=bcd+0x0b;
P3=p1_bcd;
}
if (i==4)
{
cord=cord%10;
bcd=cord/1;
bcd=bcd<<4;
p1_bcd=bcd+0x07;
P3=p1_bcd;
}
}
void write7731(short val)
{short temp,i;
temp = val;
for (i=0;i<8;i++)
{
temp = temp & 0x80;
if (temp == 0x80)
DIN = 1;
else
DIN = 0;
temp = val; temp = temp<<1; val=temp;
SCLK = 0;
SCLK = 1;
}
}
//讀7731函數,每次讀取一個字節。
short read7731(void)
{
short i,temp=0;
for (i=0;i<8;i++)
{
SCLK = 0;
SCLK = 1;
temp = temp << 1;
if (DOUT)
temp = temp | 0x01;
else
temp=temp | 0x00;
}
return(temp);
}
// AD7731 初始化。
void int7731(void)
{
int i;
i=0;
while(i<10) i=i+1;
CS = 0;
write7731(0x03); //設置濾波器,輸出速率為50Hz 。
write7731(0x13);
write7731(0x34);
write7731(0x02); //滿量程校準。
write7731(0xa1);
write7731(0xf4);
while(READY);
write7731(0x02); //零刻度校準。
write7731(0x81);
write7731(0xf4);
while(READY);
CS = 1;
}
//初始化成連續讀取24位轉換數據。
void int_continuous_conversion(void)
{
CS = 0;
write7731(0x02);
write7731(0x21);
write7731(0xf4);
while(READY);
DIN = 0;
CS = 1;
}
//單次讀取24位轉換數據。
long single_conversion(void)
{
unsigned short f1, f2,f3;
unsigned long f;
CS=0;
write7731(0x02);
write7731(0x41);
write7731(0xf4);
while (READY);
write7731(0x11);
f1=read7731();
f2=read7731();
f3=read7731();
f=0;
f=f1*256;
f=256*(f+f2);
f=f+f3;
CS=1;
return (f);
}
void main(void)
{
unsigned short a, b,c,i;
unsigned long x;
biaozhi();
int7731();
int_continuous_conversion();
IT0=1;
EX0=1;
EA=1;
CS = 0;
while(1)
{
while(!READY)
{
if (i>4) i=1;
write7731(0x11);
a=read7731();
b=read7731();
c=read7731();
x=0;
x=a*256;
x=256*(x+b);
x=x+c;
i=i+1;
}
}
CS=1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -