久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5844|回復(fù): 8
收起左側(cè)

ADS1256 ADS1115采集芯片單片機程序源碼與資料下載

  [復(fù)制鏈接]
ID:372761 發(fā)表于 2018-7-16 18:19 | 顯示全部樓層 |閱讀模式
24位采集芯片資料,含STM32與其他各平臺的單片機源程序,需要的請查收
0.png

ADS1256的源程序:
0.png
  1. /*********************************************************************************
  2. * 文件名  :main.c
  3. * 描述    :ADS1256模塊測試程序         
  4. * 實驗平臺:
  5. * 庫版本  :ST3.0.0
  6. * 連線    :            
  7.                          ADS_DRDY     PA2
  8.                          ADS_RESET    PA4
  9.                          ADS_CS       PA3
  10.                          ADS_CLK      PA5
  11.                          ADS_DIN          PA7
  12.                          ADS_DOUT          PA6
  13.            //水平有限,可能有些地方寫法不標(biāo)準(zhǔn),歡迎提建議。
  14. **********************************************************************************/
  15. #include "stm32f10x.h"
  16. #include "usart1.h"
  17. #include "delay.h"
  18. #include "ads1256.h"

  19. #define MEDIAN_LEN  5                     //中直濾波的總長度,一般選取奇數(shù)   
  20. #define MEDIAN      2                     //中值在濾波數(shù)組中的位置
  21. unsigned long   AD_buffer[MEDIAN_LEN];    //ad采集數(shù)組緩存
  22. //unsigned long   MED_buffer[MEDIAN_LEN];   //中值濾波數(shù)組緩存
  23. unsigned char   medleng = 0;          //存入緩存的數(shù)據(jù)個數(shù)

  24. unsigned long medina_filter(unsigned long *MED_buffer);
  25. /**********************************************************/
  26. // 函數(shù)名:main
  27. // 描述  :主函數(shù)
  28. // 輸入  :無
  29. // 輸出  :無
  30. /*********************************************************/
  31. int main(void)
  32. {  
  33.         unsigned long results = 0;
  34.         unsigned char i = 0;
  35.         SystemInit();                              //主頻時鐘初始化
  36.         delay_init(72);                            //延時時鐘初始化
  37.         USART1_Config();                                                                    //串口初始化          
  38.         SPI_ADS1256_Init();                                                                  //SPI初始化
  39.         ADS1256_GPIO_init();                                                          //端口初始化
  40.         ADS1256_Init();
  41.        
  42.         while(1)
  43.         {
  44. //                ADS1256WREG(ADS1256_MUX,ADS1256_MUXP_AIN2 | ADS1256_MUXN_AIN3);                //設(shè)置通道
  45.                 results = ADS1256ReadData();                                        //讀取AD值,返回24位數(shù)據(jù)
  46.                 AD_buffer[i] = results;
  47.                 results = medina_filter(AD_buffer);                                 //調(diào)用排序函數(shù)獲得濾波中值
  48.                 i ++;                                                               //AD采集緩存計數(shù)
  49.                 if(i > MEDIAN_LEN)
  50.                 {
  51.                         i = 0;
  52.                 }
  53.                                
  54.                 results1 = (results >> 16) & 0x0000ff; //發(fā)送最高位       
  55.                 results2 = (results >> 8) & 0x0000ff;  //發(fā)送中間位
  56.                 results3 = results & 0x0000ff;                   //發(fā)送低位
  57.                 sendChar(results1);
  58.                 sendChar(results2);
  59.                 sendChar(results3);

  60.                 sendChar(0x0a);                                  //換行
  61.                 sendChar(0x0d);                                  //換行

  62. //                delay_ms(100);
  63.         }
  64. }

  65. /**********************************************************/
  66. // 函數(shù)名:中值濾波函數(shù)
  67. // 描述  :提取前9次采集的數(shù)據(jù),去掉高3個,去掉低3個,然后中間的
  68. // 描述  :3個數(shù)據(jù)求平均值,該算法可盡可能的濾掉干擾數(shù)據(jù),并不影響采集速度。
  69. // 輸入  :9個數(shù)據(jù)的數(shù)組
  70. // 輸出  :中間3個數(shù)據(jù)的平均值
  71. /*********************************************************/
  72. unsigned long medina_filter(unsigned long *MED_buffer)  //xad - ADC轉(zhuǎn)換值   
  73. {   
  74.        
  75.         unsigned char i,j;
  76.         unsigned long xd;
  77.         u32 xxd;
  78.        
  79.         for(i = 0; i < MEDIAN_LEN; i ++)     
  80.         {   
  81.                 for(j = 0; j < MEDIAN_LEN - i; j ++)
  82.                 {
  83.                        
  84.                         if( MED_buffer[i] > MED_buffer[i + 1]) // 輪詢到的當(dāng)前元素>AD值,則交換它們的值   
  85.                         { xd = MED_buffer[i]; MED_buffer[i] = MED_buffer[i + 1]; MED_buffer[i + 1] = xd;}
  86.                 }                       
  87.         }
  88.         xxd = MED_buffer[MEDIAN - 1] + MED_buffer[MEDIAN] + MED_buffer[MEDIAN + 1];
  89.         xd = xxd/3;
  90.         return xd; //中值     
  91. }

  92. /******************* (C) COPYRIGHT 2014 三峰電子開發(fā)工作室 *****END OF FILE****/
復(fù)制代碼



ADS1115測量正負10V模塊資料單片機源程序如下:
  1. /********************************************************************
  2.                                          ADS1115模塊
  3.         功能:ADS1115采集電壓,采用中值濾波算法,串口將電壓數(shù)值返回PC
  4.         單片機測試: 89C52
  5.         使用軟件:串口助手
  6.         修改日期:2014.4.26
  7.         作者:夢想電子工作室
  8. **********************************************************************/        

  9. #include "main.h"

  10. void main()
  11. {
  12.         unsigned long ADS1115_Value;

  13.         Com_Init();                //串口初始化

  14.         while(1)
  15.     {                                                                 
  16.                 ADS1115_Value = ADS1115(0);                                //0 1 2 3:分別代表通道0、1、2、3               
  17.                 medina_filter(ADS1115_Value);                        //中值濾波算法, 串口顯示包含在其中

  18.                 DelayNms(20);
  19.         }
  20. }



復(fù)制代碼
  1. #include "ads1115.h"
  2. int D_ADS;                 //轉(zhuǎn)換的數(shù)字量
  3. float VIN_DAS;         //輸入的電壓值
  4. unsigned char  t_DAS;

  5. unsigned int Config;
  6. unsigned char Writebuff[4],Readbuff[3];
  7. unsigned int Result[2];

  8. uchar Channel_Value;

  9. int  Format[5]={0};  //轉(zhuǎn)換的數(shù)字量轉(zhuǎn)換成十進制

  10. ///*******************************************
  11. //函數(shù)名稱:Start
  12. //功    能:完成IIC的起始條件操作
  13. //參    數(shù):無
  14. //返回值  :無
  15. //********************************************/
  16. void Start(void)
  17. {
  18.         SCL=1;
  19.         SDA=1;
  20.         DelayNus (15);
  21.                 SDA=0;
  22.         DelayNus (15);
  23.                 SCL=0;
  24.         DelayNus (15);
  25. }
  26. //
  27. ///*******************************************
  28. //函數(shù)名稱:Stop
  29. //功    能:完成IIC的終止條件操作
  30. //參    數(shù):無
  31. //返回值  :無
  32. //********************************************/
  33. void Stop(void)
  34. {
  35.         SDA=0;
  36.         DelayNus (15);
  37.         SCL=1;
  38.         DelayNus (15);
  39.                 SDA=1;
  40.         DelayNus (15);
  41. }
  42. ///*******************************************
  43. //函數(shù)名稱:ACK
  44. //功    能:完成IIC的主機應(yīng)答操作
  45. //參    數(shù):無
  46. //返回值  :無
  47. //********************************************/
  48. void ACK(void)
  49. {
  50.         SDA=0;
  51.         _nop_(); _nop_();
  52.         SCL=1;
  53.         DelayNus (15);
  54.         SCL=0;
  55.                 _nop_(); _nop_();
  56.                 SDA=1;
  57.         DelayNus (15);
  58. }
  59. //*******************************************
  60. //函數(shù)名稱:NACK
  61. //功    能:完成IIC的主機無應(yīng)答操作
  62. //參    數(shù):無
  63. //返回值  :無
  64. //********************************************/
  65. void NACK(void)
  66. {
  67.         SDA=1;
  68.         _nop_(); _nop_();
  69.         SCL=1;
  70.         DelayNus (15);
  71.         SCL=0;
  72.         _nop_(); _nop_();
  73.         SDA=0;   
  74.         DelayNus (15);      
  75. }
  76. //**********檢查應(yīng)答信號函數(shù)******************/
  77. ///*如果返回值為1則證明有應(yīng)答信號,反之沒有*/
  78. ///*******************************************
  79. //函數(shù)名稱:Check
  80. //功    能:檢查從機的應(yīng)答操作
  81. //參    數(shù):無
  82. //返回值  :從機是否有應(yīng)答:1--有,0--無
  83. //********************************************/
  84. unsigned char Check(void)
  85. {
  86.     unsigned char slaveack;
  87.    
  88.     SDA=1;
  89.     _nop_(); _nop_();
  90.     SCL=1;
  91.     _nop_(); _nop_();

  92.     _nop_(); _nop_();
  93.     slaveack = SDA;   //讀入SDA數(shù)值
  94.     SCL=0;
  95.     DelayNus (15);
  96.   
  97.     if(slaveack)    return FALSE;
  98.     else            return TRUE;
  99. }

  100. /***************Write a Byte****************/
  101. void Write_1_Byte(unsigned char DataByte)
  102. {
  103.         int i;

  104.         for(i=0;i<8;i++)
  105.         {
  106.                 if(DataByte&0x80)  //if((DataByte<<i)&0x80)
  107.                   SDA=1;
  108.                 else
  109.                   SDA=0;
  110.         DelayNus (15);
  111.                 SCL=1;
  112.         DelayNus (15);
  113.         SCL=0;
  114.         DelayNus (15);
  115.         DataByte <<= 1;
  116.         }
  117.         SDA=1;
  118.         _nop_();
  119. }
  120. /***************Write N Byte****************/
  121. unsigned char Write_N_Byte(unsigned char *writebuffer,unsigned char n)
  122. {
  123.         int i;

  124.         for(i=0;i<n;i++)
  125.         {
  126.                 Write_1_Byte(*writebuffer);
  127.                 if(Check())
  128.                 {
  129.                         writebuffer ++;
  130.                 }
  131.                 else
  132.                 {
  133.                         Stop();
  134.                     return FALSE;
  135.                 }
  136.         }
  137.         Stop();
  138.         return TRUE;
  139. }

  140. //***************Read a Byte****************/
  141. unsigned char Read_1_Byte(void)
  142. {
  143.     unsigned char data_Value = 0, FLAG, i;
  144.         
  145.     for(i=0;i<8;i++)
  146.     {
  147.         
  148.         SDA=1;
  149.         DelayNus (15);
  150.     SCL=1;
  151.         DelayNus (15);
  152.         FLAG=SDA;
  153.         data_Value <<= 1;
  154.         if( FLAG)
  155.            data_Value |= 0x01;

  156.     SCL=0;
  157.     DelayNus (15);
  158.     }
  159.     return data_Value;
  160. }

  161. //***************Read N Byte****************/
  162. void Read_N_Byte(unsigned int*readbuff, unsigned char n)
  163. {
  164.         unsigned char i;
  165.         
  166.         for(i=0;i<n;i++)
  167.         {
  168.                 readbuff[i]=Read_1_Byte();
  169.                 if(i==n-1)
  170.                         NACK();  //不連續(xù)讀字節(jié)
  171.                 else
  172.                         ACK(); //連續(xù)讀字節(jié)
  173.         }
  174.         Stop();

  175. }
  176. //*****************初始化******************/
  177. void InitADS1115(bit S_MUX_0, bit S_MUX_1)
  178. {
  179.         if (S_MUX_0 == 0 && S_MUX_1 == 0)
  180.         Config = OS+MUX_A0+PGA+DR+COMP_QUE+MODE;
  181.         if (S_MUX_0 == 0 && S_MUX_1 == 1)
  182.         Config = OS+MUX_A1+PGA+DR+COMP_QUE+MODE;
  183.         if (S_MUX_0 == 1 && S_MUX_1 == 0)
  184.         Config = OS+MUX_A2+PGA+DR+COMP_QUE+MODE;
  185.         if (S_MUX_0 == 1 && S_MUX_1 == 1)
  186.         Config = OS+MUX_A3+PGA+DR+COMP_QUE+MODE;
  187.    
  188.     Writebuff[0]=ADDRESS_W;
  189.     Writebuff[1]=Pointer_1;
  190.     Writebuff[2]=Config/256;
  191.     Writebuff[3]=Config%256;
  192.         
  193.     Readbuff[0]=ADDRESS_W;
  194.     Readbuff[1]=Pointer_0;
  195.         
  196.     Readbuff[2]=ADDRESS_R;
  197. }

  198. //***************Write a Word***********************/
  199. void WriteWord(void)
  200. {
  201.      int t;
  202.      Start();   //寫入4個字節(jié)
  203.      do
  204.      {
  205.           t=Write_N_Byte(Writebuff,4);
  206.      }while(t==0);
  207. }
  208. //***************Read Word***********************/
  209. void ReadWord(void)
  210. {
  211.     int t;
  212.     Start();  //寫入2個字節(jié)
  213.     do
  214.     {
  215.       t=Write_N_Byte(Readbuff,2);
  216.     }while(t==0);

  217.     Start();   //寫入2個字節(jié)
  218.     do
  219.     {
  220.       t=Write_N_Byte(&Readbuff[2],1);
  221.     }while(t==0);
  222.    
  223.     Read_N_Byte(Result,2);  //讀出2個字節(jié)

  224. }
  225. //***************ADS1115********************/
  226. unsigned int ADS1115(int Channel)
  227. {
  228.         bit S_MUX_0, S_MUX_1;

  229.         switch(Channel)
  230.         {
  231.                 case 0:
  232.                         S_MUX_0 = 0;
  233.                         S_MUX_1 = 0;
  234.                         Channel_Value = Channel + '0';
  235.                         break;
  236.                 case 1:
  237.                         S_MUX_0 = 0;
  238.                         S_MUX_1 = 1;
  239.                         Channel_Value = Channel + '0';
  240. ……………………

  241. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
ADS1256模塊資料.rar (13.69 MB, 下載次數(shù): 139)
ADS1115測量正負10V模塊資料.zip (2.15 MB, 下載次數(shù): 144)


評分

參與人數(shù) 1黑幣 +1 收起 理由
ygloo + 1 很給力!

查看全部評分

回復(fù)

使用道具 舉報

ID:372961 發(fā)表于 2018-11-14 10:37 | 顯示全部樓層
運行通過了嗎?就貼出來,不負責(zé)任
回復(fù)

使用道具 舉報

ID:403447 發(fā)表于 2018-11-21 08:10 | 顯示全部樓層
正想學(xué)習(xí)ADS,沒通過運行,白下了。賠我?guī)艓?/td>
回復(fù)

使用道具 舉報

ID:468406 發(fā)表于 2019-1-19 11:15 | 顯示全部樓層
學(xué)習(xí)了
回復(fù)

使用道具 舉報

ID:487362 發(fā)表于 2019-3-9 13:52 | 顯示全部樓層
有誰下下來了,可以私發(fā)一份么
回復(fù)

使用道具 舉報

ID:377519 發(fā)表于 2019-8-3 15:14 | 顯示全部樓層
為了賺黑幣不擇手段嗎
回復(fù)

使用道具 舉報

ID:616761 發(fā)表于 2019-9-26 16:32 | 顯示全部樓層
例程直接用不行,需要自己修改
回復(fù)

使用道具 舉報

ID:64765 發(fā)表于 2019-10-14 20:06 | 顯示全部樓層
下載學(xué)習(xí),謝謝分享。
回復(fù)

使用道具 舉報

ID:115740 發(fā)表于 2019-10-27 18:37 | 顯示全部樓層
謝謝分享,學(xué)習(xí)了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久久久下一站 | 操一草| 日韩视频一区在线观看 | 99国产视频 | jizz中国日本| 午夜精品福利视频 | 欧美无乱码久久久免费午夜一区 | 人人种亚洲 | 欧美精品一区二区三区在线播放 | 亚洲在线| 欧美日韩在线免费 | 久久久久久一区 | 国产精品2 | 日韩a在线| 国产ts人妖系列高潮 | www视频在线观看 | 成人在线精品 | 久久国产精品一区二区三区 | 日韩无| 亚洲精品在线看 | 国产性网 | 国产伦精品一区二区三区高清 | 91精品久久久久久久久久入口 | 在线中文字幕亚洲 | 亚洲精品视频免费看 | 一级h片 | 91在线视频观看 | 国产最新网址 | 久久99精品久久久久久国产越南 | 国产精品亚洲一区二区三区在线 | 久久久久久久久久久蜜桃 | 日韩三级 | 亚洲成人精品一区 | 成人午夜影院 | 精品视频在线播放 | 国产高清视频在线观看 | 国产精品毛片一区二区在线看 | 黄色欧美 | 国产高清视频 | 亚洲精品久久久久中文字幕二区 | 91影院在线观看 |