ADS1256模塊程序源代碼設(shè)計(jì)
#include 《avr/io.h》
#include 《avr/signal.h》
#include 《avr/interrupt.h》
#include 《avr/delay.h》
#include “ADS1256.h”
#include “main.h”
/***************************************************************
*名稱: void SPI_Init(void)
*功能: SPI初始化
*入口參數(shù): none
*出口參數(shù): none
*日期:
****************************************************************/
void SPI_Init(void)
{
SPI_IN; //輸入端口使能內(nèi)部上拉
SPI_DDR; //ADS1256的SPI端口方向設(shè)置
SPCR=(1《《SPE)|(1《《MSTR)|(1《《SPR0)|(1《《CPHA); // 使能SPI接口,主機(jī)模式,MSB高位在先,模式0, 16分頻,SPI時(shí)鐘約460KHz
}
*名稱: unsigned char read_register(unsigned char reg)
*功能: 讀ADS1256寄存器
*入口參數(shù): reg--要讀的寄存器
*出口參數(shù): 寄存器的值
*日期:
{
unsigned char x;
while(PIN_RDY); //DRDY信號(hào)低時(shí)才能讀寄存器
spi_TranByte(RREG|reg); //選擇寫入寄存器
spi_TranByte(0x00); //寫入1個(gè)寄存器
x=spi_TranByte(0xff);
return (x);
}
/***************************************************************
*名稱: long read_data()
*功能: 讀ADS1256的數(shù)據(jù)
*入口參數(shù): none
*出口參數(shù): none
*日期:
****************************************************************/
long read_data()
int main(void)
{
unsigned long x;
LCD_INIT();
SPI_Init();
ADS1256_Init();
while(1)
{
while(PIN_RDY); //DRDY信號(hào)低時(shí)才能讀寄存器
write_register(MUX,0x01);
spi_TranByte(WAKEUP);
spi_TranByte(RDATA); //選擇寫入寄存器
x=(unsigned long)(2*VREF*read_data())/0x007fffff;
LCD_NUM(x,0,0);
DelayMs(1000);
}
}
{
unsigned char rx_dat[4];
long x;
rx_dat[0]=spi_TranByte(0xFF);
rx_dat[1]=spi_TranByte(0xFF);
rx_dat[2]=spi_TranByte(0xFF);
x= (long)rx_dat[0]*65536+(long)rx_dat[1]*256 +(long)rx_dat[2];
return (x);
}
/***************************************************************
*名稱: void ADS1256_Init(void)
*功能: 初始化ADS1256
*入口參數(shù): none
*出口參數(shù): none
*日期:
****************************************************************/
void ADS1256_Init(void)
{
write_register(MUX,0x01); //MUX寄存器為默認(rèn)值
write_register(ADCON,0x20); //ADCON寄存器為默認(rèn)值
write_register(IO,0x00);
}
評(píng)論