初级会员

- 积分
- 90
- 金钱
- 90
- 注册时间
- 2015-5-8
- 在线时间
- 2 小时
|
发表于 2015-5-9 11:29:02
|
显示全部楼层
建议用TM7707(与AD7707完全兼容),性能差不多,价格要便宜很多,欢迎咨询使用,可以免费样品试用,联系QQ:3247925842
设置 TM7707的程序代码
表 16给出了 TM7707和微控制器接口的用C 代码写成的一组读、写程序。
此程序的几个步骤是:
1. 向通信寄存器写数据,选择通道 1 作为有效通道,将下一个操作设为对设置寄存器进行写操作。
2. 对设置寄存器写操作,选择 16倍增益,无 BUF 缓冲器,双极性。
3. 向通信寄存器写数据,选择通道 1 作为有效通道,将下一个操作设为对滤波低寄存器进行写操作。
4. 向滤波低寄存器写入 0X00。
5. 向通信寄存器写数据,选择通道 1 作为有效通道,将下一个操作设为对滤波高寄存器进行写操作。
6. 向滤波高寄存器写入 0X0F
7. 查询DRDY 输出。
8. 从数据寄存器上读数据。
9. 跳回第 7、第 8步,直到从选定的通道中取出指定数量的采样。
表 16 TM7707与微处理器接口的C语言代码
// MCU: AT89S52
// Target: TM7707
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SCLK=P1^0;
sbit DIO=P1^1;
sbit RESET=P1^2;
sbit CS=P1^3;
sbit DRDY=P1^4;
uchar *intp;
uchar idata date8[180];
void write_byte1(uchar date) //写一字节数据
{
uchar i;
CS=0; //CS拉低,
for(i=0;i<8;i++)
{
SCLK=0; //SCLK拉低准备写数据
_nop_();
if(date&0x80)
DIO=1;
else
DIO=0;
SCLK=1; //SCLK拉高,写入一位数据
Date<<=1;
}
CS=1; //写完一个字节后 CS拉高。
}
uchar read_byte1 ( ) //读一字节数据
{
uchar j,b1;
CS=0;
for(j=0;j<8;j++)
{
SCLK=0;
b1=(b1<<1)|DIO;
SCLK=1;
}
return b1;
}
void save_data(void)
{
uchar i0,i1;
intp=date8;
for(i0=0;i0<60;i0++)
{
while(DRDY); //等待 DRDT为低时,可读出数据
write_byte1(0x38); //向通信寄存器写入数据,选择通道1作为有效,将下一个操作设为读数据寄存器。
for(i1=0;i1<3;i1++) //连续存储一个数据。
{
*intp=read_byte1();
intp++;
}
CS=1;
}
}
void init( ) //初始化
{
RESET=1;
SCLK=1;
CS=1;
DRDY=1;
}
void main(void) //主函数
{
init();
write_byte1(0X10); //向通信寄存器写数据,选择通道 1 作为有效通道,将下一个操作设为对设置寄存器进行写操作。
write_byte1(0X20); //对设置寄存器写操作,选择16倍增益,无BUF缓冲器,双极性。
write_byte1(0X50); //向通信寄存器写数据,选择通道 1 作为有效通道,将下一个操作设为对滤波低寄存器进行写操作。
write_byte1(0X00); //向滤波低寄存器写入0X00。
write_byte1(0X20); //向通信寄存器写数据,选择通道 1 作为有效通道,将下一个操作设为对滤波高寄存器进行写操作。
write_byte1(0X0F); //向滤波高寄存器写入0X0F。
save_data(); //MCU连续存储 24位数据60个。
while(1); //循环等待。
} |
|