欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
ADS1256 ADS1115采集芯片單片機程序源碼與資料下載
[打印本頁]
作者:
24981232
時間:
2018-7-16 18:19
標題:
ADS1256 ADS1115采集芯片單片機程序源碼與資料下載
24位采集芯片資料,含STM32與其他各平臺的單片機源程序,需要的請查收
0.png
(40.73 KB, 下載次數: 66)
下載附件
2018-7-17 03:07 上傳
ADS1256的源程序:
0.png
(52.2 KB, 下載次數: 58)
下載附件
2018-7-17 03:11 上傳
/*********************************************************************************
* 文件名 :main.c
* 描述 :ADS1256模塊測試程序
* 實驗平臺:
* 庫版本 :ST3.0.0
* 連線 :
ADS_DRDY PA2
ADS_RESET PA4
ADS_CS PA3
ADS_CLK PA5
ADS_DIN PA7
ADS_DOUT PA6
//水平有限,可能有些地方寫法不標準,歡迎提建議。
**********************************************************************************/
#include "stm32f10x.h"
#include "usart1.h"
#include "delay.h"
#include "ads1256.h"
#define MEDIAN_LEN 5 //中直濾波的總長度,一般選取奇數
#define MEDIAN 2 //中值在濾波數組中的位置
unsigned long AD_buffer[MEDIAN_LEN]; //ad采集數組緩存
//unsigned long MED_buffer[MEDIAN_LEN]; //中值濾波數組緩存
unsigned char medleng = 0; //存入緩存的數據個數
unsigned long medina_filter(unsigned long *MED_buffer);
/**********************************************************/
// 函數名:main
// 描述 :主函數
// 輸入 :無
// 輸出 :無
/*********************************************************/
int main(void)
{
unsigned long results = 0;
unsigned char i = 0;
SystemInit(); //主頻時鐘初始化
delay_init(72); //延時時鐘初始化
USART1_Config(); //串口初始化
SPI_ADS1256_Init(); //SPI初始化
ADS1256_GPIO_init(); //端口初始化
ADS1256_Init();
while(1)
{
// ADS1256WREG(ADS1256_MUX,ADS1256_MUXP_AIN2 | ADS1256_MUXN_AIN3); //設置通道
results = ADS1256ReadData(); //讀取AD值,返回24位數據
AD_buffer[i] = results;
results = medina_filter(AD_buffer); //調用排序函數獲得濾波中值
i ++; //AD采集緩存計數
if(i > MEDIAN_LEN)
{
i = 0;
}
results1 = (results >> 16) & 0x0000ff; //發送最高位
results2 = (results >> 8) & 0x0000ff; //發送中間位
results3 = results & 0x0000ff; //發送低位
sendChar(results1);
sendChar(results2);
sendChar(results3);
sendChar(0x0a); //換行
sendChar(0x0d); //換行
// delay_ms(100);
}
}
/**********************************************************/
// 函數名:中值濾波函數
// 描述 :提取前9次采集的數據,去掉高3個,去掉低3個,然后中間的
// 描述 :3個數據求平均值,該算法可盡可能的濾掉干擾數據,并不影響采集速度。
// 輸入 :9個數據的數組
// 輸出 :中間3個數據的平均值
/*********************************************************/
unsigned long medina_filter(unsigned long *MED_buffer) //xad - ADC轉換值
{
unsigned char i,j;
unsigned long xd;
u32 xxd;
for(i = 0; i < MEDIAN_LEN; i ++)
{
for(j = 0; j < MEDIAN_LEN - i; j ++)
{
if( MED_buffer[i] > MED_buffer[i + 1]) // 輪詢到的當前元素>AD值,則交換它們的值
{ xd = MED_buffer[i]; MED_buffer[i] = MED_buffer[i + 1]; MED_buffer[i + 1] = xd;}
}
}
xxd = MED_buffer[MEDIAN - 1] + MED_buffer[MEDIAN] + MED_buffer[MEDIAN + 1];
xd = xxd/3;
return xd; //中值
}
/******************* (C) COPYRIGHT 2014 三峰電子開發工作室 *****END OF FILE****/
復制代碼
ADS1115測量正負10V模塊資料單片機源程序如下:
/********************************************************************
ADS1115模塊
功能:ADS1115采集電壓,采用中值濾波算法,串口將電壓數值返回PC
單片機測試: 89C52
使用軟件:串口助手
修改日期:2014.4.26
作者:夢想電子工作室
**********************************************************************/
#include "main.h"
void main()
{
unsigned long ADS1115_Value;
Com_Init(); //串口初始化
while(1)
{
ADS1115_Value = ADS1115(0); //0 1 2 3:分別代表通道0、1、2、3
medina_filter(ADS1115_Value); //中值濾波算法, 串口顯示包含在其中
DelayNms(20);
}
}
復制代碼
#include "ads1115.h"
int D_ADS; //轉換的數字量
float VIN_DAS; //輸入的電壓值
unsigned char t_DAS;
unsigned int Config;
unsigned char Writebuff[4],Readbuff[3];
unsigned int Result[2];
uchar Channel_Value;
int Format[5]={0}; //轉換的數字量轉換成十進制
///*******************************************
//函數名稱:Start
//功 能:完成IIC的起始條件操作
//參 數:無
//返回值 :無
//********************************************/
void Start(void)
{
SCL=1;
SDA=1;
DelayNus (15);
SDA=0;
DelayNus (15);
SCL=0;
DelayNus (15);
}
//
///*******************************************
//函數名稱:Stop
//功 能:完成IIC的終止條件操作
//參 數:無
//返回值 :無
//********************************************/
void Stop(void)
{
SDA=0;
DelayNus (15);
SCL=1;
DelayNus (15);
SDA=1;
DelayNus (15);
}
///*******************************************
//函數名稱:ACK
//功 能:完成IIC的主機應答操作
//參 數:無
//返回值 :無
//********************************************/
void ACK(void)
{
SDA=0;
_nop_(); _nop_();
SCL=1;
DelayNus (15);
SCL=0;
_nop_(); _nop_();
SDA=1;
DelayNus (15);
}
//*******************************************
//函數名稱:NACK
//功 能:完成IIC的主機無應答操作
//參 數:無
//返回值 :無
//********************************************/
void NACK(void)
{
SDA=1;
_nop_(); _nop_();
SCL=1;
DelayNus (15);
SCL=0;
_nop_(); _nop_();
SDA=0;
DelayNus (15);
}
//**********檢查應答信號函數******************/
///*如果返回值為1則證明有應答信號,反之沒有*/
///*******************************************
//函數名稱:Check
//功 能:檢查從機的應答操作
//參 數:無
//返回值 :從機是否有應答:1--有,0--無
//********************************************/
unsigned char Check(void)
{
unsigned char slaveack;
SDA=1;
_nop_(); _nop_();
SCL=1;
_nop_(); _nop_();
_nop_(); _nop_();
slaveack = SDA; //讀入SDA數值
SCL=0;
DelayNus (15);
if(slaveack) return FALSE;
else return TRUE;
}
/***************Write a Byte****************/
void Write_1_Byte(unsigned char DataByte)
{
int i;
for(i=0;i<8;i++)
{
if(DataByte&0x80) //if((DataByte<<i)&0x80)
SDA=1;
else
SDA=0;
DelayNus (15);
SCL=1;
DelayNus (15);
SCL=0;
DelayNus (15);
DataByte <<= 1;
}
SDA=1;
_nop_();
}
/***************Write N Byte****************/
unsigned char Write_N_Byte(unsigned char *writebuffer,unsigned char n)
{
int i;
for(i=0;i<n;i++)
{
Write_1_Byte(*writebuffer);
if(Check())
{
writebuffer ++;
}
else
{
Stop();
return FALSE;
}
}
Stop();
return TRUE;
}
//***************Read a Byte****************/
unsigned char Read_1_Byte(void)
{
unsigned char data_Value = 0, FLAG, i;
for(i=0;i<8;i++)
{
SDA=1;
DelayNus (15);
SCL=1;
DelayNus (15);
FLAG=SDA;
data_Value <<= 1;
if( FLAG)
data_Value |= 0x01;
SCL=0;
DelayNus (15);
}
return data_Value;
}
//***************Read N Byte****************/
void Read_N_Byte(unsigned int*readbuff, unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
{
readbuff[i]=Read_1_Byte();
if(i==n-1)
NACK(); //不連續讀字節
else
ACK(); //連續讀字節
}
Stop();
}
//*****************初始化******************/
void InitADS1115(bit S_MUX_0, bit S_MUX_1)
{
if (S_MUX_0 == 0 && S_MUX_1 == 0)
Config = OS+MUX_A0+PGA+DR+COMP_QUE+MODE;
if (S_MUX_0 == 0 && S_MUX_1 == 1)
Config = OS+MUX_A1+PGA+DR+COMP_QUE+MODE;
if (S_MUX_0 == 1 && S_MUX_1 == 0)
Config = OS+MUX_A2+PGA+DR+COMP_QUE+MODE;
if (S_MUX_0 == 1 && S_MUX_1 == 1)
Config = OS+MUX_A3+PGA+DR+COMP_QUE+MODE;
Writebuff[0]=ADDRESS_W;
Writebuff[1]=Pointer_1;
Writebuff[2]=Config/256;
Writebuff[3]=Config%256;
Readbuff[0]=ADDRESS_W;
Readbuff[1]=Pointer_0;
Readbuff[2]=ADDRESS_R;
}
//***************Write a Word***********************/
void WriteWord(void)
{
int t;
Start(); //寫入4個字節
do
{
t=Write_N_Byte(Writebuff,4);
}while(t==0);
}
//***************Read Word***********************/
void ReadWord(void)
{
int t;
Start(); //寫入2個字節
do
{
t=Write_N_Byte(Readbuff,2);
}while(t==0);
Start(); //寫入2個字節
do
{
t=Write_N_Byte(&Readbuff[2],1);
}while(t==0);
Read_N_Byte(Result,2); //讀出2個字節
}
//***************ADS1115********************/
unsigned int ADS1115(int Channel)
{
bit S_MUX_0, S_MUX_1;
switch(Channel)
{
case 0:
S_MUX_0 = 0;
S_MUX_1 = 0;
Channel_Value = Channel + '0';
break;
case 1:
S_MUX_0 = 0;
S_MUX_1 = 1;
Channel_Value = Channel + '0';
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
ADS1256模塊資料.rar
(13.69 MB, 下載次數: 139)
2018-7-17 03:14 上傳
點擊文件名下載附件
源碼
下載積分: 黑幣 -5
ADS1115測量正負10V模塊資料.zip
(2.15 MB, 下載次數: 144)
2018-7-16 18:18 上傳
點擊文件名下載附件
源碼
下載積分: 黑幣 -5
作者:
Vence
時間:
2018-11-14 10:37
運行通過了嗎?就貼出來,不負責任
作者:
大米861
時間:
2018-11-21 08:10
正想學習ADS,沒通過運行,白下了。賠我幣幣
作者:
abolisalohei
時間:
2019-1-19 11:15
學習了
作者:
coffeexz
時間:
2019-3-9 13:52
有誰下下來了,可以私發一份么
作者:
基51hei33
時間:
2019-8-3 15:14
為了賺黑幣不擇手段嗎
作者:
12sshddnigngb
時間:
2019-9-26 16:32
例程直接用不行,需要自己修改
作者:
lyl_420819
時間:
2019-10-14 20:06
下載學習,謝謝分享。
作者:
zyt心有所寄
時間:
2019-10-27 18:37
謝謝分享,學習了
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1