-
大小: 3KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-04
- 語言: 其他
- 標(biāo)簽: AD7940??驅(qū)動(dòng)程序??
資源簡介
AD7940 14位AD轉(zhuǎn)換芯片 可準(zhǔn)確讀取模擬量數(shù)據(jù) 周期約為4us

代碼片段和文件信息
?/*
?********************************************************************************************************
?*??????????????????????????????????????????All?Rights?Reserved
?*?Version???:?V1.00
?*?Data??????:?AD7940.C
?*?By????????:?skeletonwei
?*?For???????:?MSP430F5438
?*?Toolchain?:?IAR?????EverEdit
?*********************************************************************************************************
?*/
#include?“..\config.h“
//參考電壓選擇內(nèi)部5V??
uint??channel_x_data[6][100];??//二維數(shù)組存儲6哥通道讀取的AD值,每個(gè)通道每次采集100次,在求平均值
????????????????????????????//其中最后一組數(shù)據(jù)位每個(gè)通道256次采樣的數(shù)據(jù)之和
UINT32??skeltonwei;
void??ad7940_init()??/*AD7940和*CD4051B端口初始化*/
{
?/*CD4051B端口配置*/
??P6DIR?|=?BIT5;????/*AD_EN*/
??P6OUT?|=?BIT5;???/*輸出為高*/
??
??P6DIR?|=?BIT6;???/*AD_A0*/
??P6OUT?|=?BIT6;?
?
??P6DIR?|=?BIT7;??/*AD_A1*/
??P6OUT?|=?BIT7;?
??
??P7DIR?|=?BIT4;?/*AD_A2*/
??P7OUT?|=?BIT4;?
??/*AD7940端口配置*/??
??P7DIR?|=?BIT5;?/*AD_CS*/
??P7OUT?|=?BIT5;?/*輸出為高*/
??
??P7DIR?|=?BIT6;??/*AD_CLK*/??
??P7OUT?|=?BIT6;?
?
??P7DIR?&=?~BIT7;?/*AD_SDATA作為數(shù)據(jù)輸入*/
??/*以下管腳配置為普通I/O*/??
??P6SEL?&=?~BIT5;?P6SEL?&=?~BIT6;?P6SEL?&=?~BIT7;?
??P7SEL?&=?~BIT4;?P7SEL?&=?~BIT5;?P7SEL?&=?~BIT6;
?
??P7SEL?&=?~BIT7;
?
}??
??
/********************各通道使能(0-6)***************************/
void??CH0_Enable(void)??/*CBA=000???使能*/
{
????????AD_EN_ENABLE;??/*CD4051使能*/
AD_A2_L;
AD_A1_L;
AD_A0_L;
????????delay_ms(5);
}
void??CH1_Enable(void)
{
????????AD_EN_ENABLE;??/*CD4051使能*/
AD_A2_L;
AD_A1_L;
AD_A0_H;
????????delay_ms(5);
}
void??CH2_Enable(void)
{
????????AD_EN_ENABLE;??/*CD4051使能*/
AD_A2_L;
AD_A1_H;
AD_A0_L;
????????delay_ms(5);
}
void??CH3_Enable(void)
{
????????AD_EN_ENABLE;??/*CD4051使能*/
AD_A2_L;
AD_A1_H;
AD_A0_H ;
????????delay_ms(5);
}
void??CH4_Enable(void)
{
????????AD_EN_ENABLE;??/*CD4051使能*/
AD_A2_H;
AD_A1_L;
AD_A0_L;
????????delay_ms(5);
}
void??CH5_Enable(void)
{
????????AD_EN_ENABLE;??/*CD4051使能*/
AD_A2_H;
AD_A1_L;
AD_A0_H;
delay_ms(5);
}
/**************AD7040驅(qū)動(dòng)程序*******************/
uint??AD7940_Read(void)
{
uint?dat;
AD_CS_H;//初始CS線置為1
AD_CLK_H;//初始時(shí)鐘線置為0
delay_ms(2);
AD_CS_L;//初始CS置為0,AD轉(zhuǎn)換和數(shù)據(jù)傳輸同時(shí)開始
dat=AD7940_ReadByte();//讀取要得到數(shù)據(jù)
AD_CLK_H;//時(shí)鐘線拉高
delay_ms(2);
AD_CS_H;//讀取結(jié)束,CS置為1,結(jié)束數(shù)據(jù)的傳輸
delay_ms(2);
return?dat;//返回得到數(shù)據(jù)
}
/*************讀取AD7940的數(shù)據(jù),高位在前、低位在后*********************/
uint??AD7940_ReadByte(void)
{
uint?idat_bit=0;
delay_ms(500);
??????for(i=0;i<16;i++)/*包括前置零點(diǎn)一共16位數(shù)據(jù)*/
{ ????
?????????dat_bit<<=1;//要返回的數(shù)據(jù)左移一位???
if(data_7940!=0)//當(dāng)數(shù)據(jù)線為高時(shí),證明該位數(shù)據(jù)為1
?{?
??????????dat_bit|=0x0001;??????????
?????????}//要傳輸數(shù)據(jù)的當(dāng)前值置為1若不是則為0
?delay_us(1);
?????????AD_CLK_L;//拉低時(shí)鐘線
?????????delay_us(2);
?????????AD_CLK_H;//制造上升沿? ????
?delay_us(1);?
????}
return?dat_bit;//返回讀取出的數(shù)據(jù)
}
/******************************************************************************************
獲得通道X的AD轉(zhuǎn)換值
********************************
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????10780??2013-09-12?09:52??AD7940.c
?????文件????????1647??2013-09-06?13:26??AD7940.h
評論
共有 條評論