ad7705 带SPI接口的16位AD7705驱动程序( 二 )


spk(1,100);
cls();
delay _ ms(20);
高光();//显示广告语言
delay _ ms(2000);
cls();//清除屏幕
delay _ ms(200);
TCCR1B = 0x03//启动定时器
cls();
while(1)
{

}
}
/****************************************
M16下ad7705的驱动器*
*文件名称:AD7705.c *
*描述:16位σ-δ模数转换器*
*周长虹*
*成立日期:2007年12月27日*
*版本:V2007.01 *
*修订日期:2007年12月27日*
*控制芯片:Mega16 *
*时钟频率:7.3728兆赫兹*
*波特率:9600BPS *
*连接模式:AD7705 ________ M16 *
*芯片选择:CS _ 7705 _ _ _ _ _ _ _ PA4 *
*重置:重置_ _ _ _ _ _ _ _ _ PA5 *
*有效数据:DRRY __________ PB3 *
****************************************/
#include &lt。iom16v.h&gt。
#include &lt。macros.h&gt。
#包含“delay.h”
//控制端口定义
//端口操作定义
# define cs _ 7705 pa 4//ad 7705的芯片选择连接到PA4
# define SET _ CS _ 7705 PORTA | = 1 & lt& ltCS_7705
#定义CLR _ CS _ 7705 PORTA & amp= ~(1 & lt;& ltCS_7705)
#define RET PA5 //AD7705的复位连接到PA5
#定义SET _ RET PORTA | = 1 & lt& lt将…沤软
#定义CLR _ RET PORTA & amp= ~(1 & lt;& ltRET)
#定义DRRY PB3 //AD7705数据有效连接到PB3
#定义DRRY _ 7705(PINB & amp;(1 & lt& ltDRRY))
//初始化函数
void spi_init(void)
{
DDRB | =(1 & lt;& ltPB5)|(1 & lt;& ltPB7);//将MOSI和SCK设置为输出
DDRB & amp;= ~(1 & lt;& ltPB6);//输入MISO
SPCR =(1 & lt;& ltSPE)|(1 & lt;& ltMSTR);//使能SPI主模式fck/4
}
//写入AD7705单字节函数
//入口:由数据写入的字节数据
void wr_byte(无符号字符数据)
{
SPDR =数据;//开始数据传输
while(!(SPSR & amp;(1 & lt& ltSPIF))) //等待传输结束
{

}
}
//读取AD7705数据功能
//出口:读取2字节数据
无符号int rd_7705(void)
{
无符号int temp//定义临时变量
wr _ byte(0x 38);//选择读取数据寄存器,1通道
SPDR = 0;//开始数据传输
while(!(SPSR & amp;(1 & lt& ltSPIF))) //等待传输结束
{

}
temp = SPDR & lt;& lt8;//读取高字节
SPDR = 0;//开始数据传输
while(!(SPSR & amp;(1 & lt& ltSPIF))) //等待传输结束
【ad7705 带SPI接口的16位AD7705驱动程序】{

}
temp | = SPDR;//读取低位字节
返回(temp);
}
//判断是否有数据函数
//出口:读取2字节数据
无符号整数ad7705(void)
{
if(DRRY_7705==0)
{
return(rd _ 7705());
}
其他
{
return(0);
}
}
//AD7705初始化功能
void init_7705(void)
{
SPI _ init();
DDRA | =(1 & lt;& ltCS _ 7705)|(1 & lt;& ltRET);//定义端口方向
DDRB & amp;= ~(1 & lt;& ltDRRY);
PORTB|= 1&lt。& ltDRRY
CLR _ CS _ 7705//芯片选择有效
CLR _ RET//复位端子低电平有效
delay _ ms(500);//保持低电平500MS
SET _ RET//复位端子返回高电平
delay _ ms(1);
wr _ byte(0x 20);//选择时钟寄存器
wr _ byte(0x0C);//50HZ转换频率
wr _ byte(0x 10);//选择设置寄存器
wr _ byte(0x 44);//自校准模式,增益1,单极性
}
原始链接:

推荐阅读