[资料分享] ADS1232驱动分享--LPC11xx

[复制链接]
 楼主| xyz549040622 发表于 2019-12-21 10:51 | 显示全部楼层 |阅读模式
本帖最后由 xyz549040622 于 2019-12-21 23:18 编辑
  1. #include "LPC11xx.h"

  2. #define GAIN1 (1<<0)//P3.0
  3. #define GAIN0 (1<<11)//P0.11
  4. #define SPEED (1<<11)//P2.11
  5. #define SCLK  (1<<6)//P0.6
  6. #define DRDY  (1<<8)//P0.8
  7. #define PDWN  (1<<5)//P3.5
  8. #define TEMP  (1<<11)//P1.11
  9. #define A0    (1<<4)//P3.4
  10. #define TEMP_L     (LPC_GPIO1->DATA&=~(1<<11))
  11. #define TEMP_H     (LPC_GPIO1->DATA|=(1<<11))
  12. #define PDWN_L    (LPC_GPIO3->DATA &= ~PDWN)
  13. #define PDWN_H    (LPC_GPIO3->DATA |=  PDWN)
  14. #define SCLK_L    (LPC_GPIO0->DATA &= ~SCLK)
  15. #define SCLK_H    (LPC_GPIO0->DATA |=  SCLK)
  16. #define SPEED_L   (LPC_GPIO2->DATA &= ~SPEED)
  17. #define SPEED_H   (LPC_GPIO2->DATA |=  SPEED)
  18. #define A0_L      (LPC_GPIO3->DATA &= ~A0)
  19. #define A0_H      (LPC_GPIO3->DATA |=  A0)
  20. #define GAIN1_L   (LPC_GPIO3->DATA &= ~GAIN1)
  21. #define GAIN1_H   (LPC_GPIO3->DATA |=  GAIN1)
  22. #define GAIN0_L   (LPC_GPIO0->DATA &= ~GAIN0)
  23. #define GAIN0_H   (LPC_GPIO0->DATA |=  GAIN0)
  24. #define uchar unsigned char
  25. #define GPIO_BASE (0x50000000ul)
  26. #define GPIO0MASKED_ACCESS(bit) (*(volatile unsigned long*)(GPIO_BASE+0x00000+(bit)))         //gpio0---0x0000
  27. // sfr P0 = 0x0000;
  28. unsigned char TempData[3];
  29. float Voltage;
  30. unsigned long Ads1232Read(void);
  31. unsigned char WeightCounter;
  32. extern void Delay1ms(void); //ÑÓʱ1ms
  33. extern unsigned char free[];
  34. uint8_t bad1[]="getting datas...";
  35. uint8_t bad2[]="stacked here ...";
  36. extern void UARTSend(uint8_t *BufferPtr, uint32_t Length);
  37. void Delay_Us(unsigned char time)
  38. {
  39.    unsigned int i;
  40.    i=50*time;
  41.    while(i>0){i--;}

  42. }
  43. void Ads1232InitA0(void)
  44. {
  45.            uchar i;
  46.     PDWN_L;           //POWERDOWN
  47.     SCLK_L;
  48.     SPEED_H;  //0--10HZ        1--80HZ
  49.     TEMP_L ;
  50.         GAIN0_L;   //   PGA  0  0   1
  51.         GAIN1_L;   //                 0  1   2
  52.                 //         //             1  0   64
  53.                 //                   1  1   128
  54.                 A0_H;          //ͨµÀ2
  55.         Delay_Us(50);
  56.         PDWN_H;           //Éϵç
  57.         for(i=0;i<26;i++)
  58.         {
  59.                  SCLK_H;
  60.                  Delay_Us(1);
  61.                  SCLK_L;
  62.         }        
  63. }

  64. /**********************************************************************
  65. Ãû³Æ£º
  66. ¹¦ÄÜ£º
  67. ÃèÊö£º
  68. Ð޸ģº
  69. ***********************************************************************/
  70. void ADCDeal(void)
  71. {        
  72.             
  73.        // unsigned long X[9];
  74.            unsigned char TempData1[3];
  75.                 unsigned long Y;
  76.                 unsigned char tmp;        
  77.              unsigned long Voltag;
  78.         //        unsigned char i;
  79.           //    for(i=0;i<8;i++)
  80.                 //          {
  81.                                   Y=Ads1232Read(); //Delay_Us(10);
  82.                           
  83.                 //          }  
  84.                
  85.                         //        Y= X[5]+X[6]+X[7]+X[4];
  86.                         //        Y=(Y/4);
  87.                                 Voltage=(float)(Y*5.0/(0xffffff-1));
  88.                                 Voltag=Voltage*100000000;

  89.                                 free[190]=Voltag/100000000+0x30;
  90.                                 free[191]='.';
  91.                                 free[192]=(Voltag/10000000)%10+0x30;
  92.                                 free[193]=(Voltag/1000000)%10+0x30;
  93.                                 free[194]=(Voltag/100000)%10+0x30;
  94.                                 free[195]=(Voltag/10000)%10+0x30;
  95.                                 free[196]=(Voltag/1000)%10+0x30;
  96.                                 free[197]=(Voltag/100)%10+0x30;
  97.                                 free[198]=(Voltag/10)%10+0x30;
  98.                                 free[199]=(Voltag%10)+0x30; //ge         
  99.                 TempData[0]=(unsigned char)((Y)&0x000000ff);
  100.                 TempData[1]=(unsigned char )((Y>>8) &0x000000ff);
  101.                 TempData[2]=(unsigned char )((Y>>16)&0x000000ff);
  102.                                 TempData1[0]=TempData[2];
  103.                                 TempData1[1]=TempData[1];
  104.                                 TempData1[2]=TempData[0];
  105.                                         UARTSend( (uint8_t *)TempData1, 3 );


  106.                                         free[76]=((TempData[2]>>7)+0x30);
  107.         tmp=(TempData[2]>>6);
  108.         tmp=(tmp&0x01);
  109.         free[77]=(tmp+0x30);
  110.         tmp=(TempData[2]>>5);
  111.         tmp=(tmp&0x01);
  112.         free[78]=(tmp+0x30);
  113.         tmp=(TempData[2]>>4);
  114.         tmp=(tmp&0x01);
  115.         free[79]=(tmp+0x30);
  116.                 tmp=(TempData[2]>>3);
  117.         tmp=(tmp&0x01);
  118.         free[80]=(tmp+0x30);
  119.                 tmp=(TempData[2]>>2);
  120.         tmp=(tmp&0x01);
  121.         free[81]=(tmp+0x30);
  122.                 tmp=(TempData[2]>>1);
  123.         tmp=(tmp&0x01);
  124.         free[82]=(tmp+0x30);        
  125.         tmp=(TempData[2]&0x01);
  126.         free[83]=(tmp+0x30);

  127.                 free[85]=((TempData[1]>>7)+0x30);
  128.         tmp=(TempData[1]>>6);
  129.         tmp=(tmp&0x01);
  130.         free[86]=(tmp+0x30);
  131.         tmp=(TempData[1]>>5);
  132.         tmp=(tmp&0x01);
  133.         free[87]=(tmp+0x30);
  134.         tmp=(TempData[1]>>4);
  135.         tmp=(tmp&0x01);
  136.         free[88]=(tmp+0x30);
  137.                 tmp=(TempData[1]>>3);
  138.         tmp=(tmp&0x01);
  139.         free[89]=(tmp+0x30);
  140.                 tmp=(TempData[1]>>2);
  141.         tmp=(tmp&0x01);
  142.         free[90]=(tmp+0x30);
  143.                 tmp=(TempData[1]>>1);
  144.         tmp=(tmp&0x01);
  145.         free[91]=(tmp+0x30);
  146.         
  147.         tmp=(TempData[1]&0x01);
  148.         free[92]=(tmp+0x30);

  149.                 free[94]=((TempData[0]>>7)+0x30);
  150.         tmp=(TempData[0]>>6);
  151.         tmp=(tmp&0x01);
  152.         free[95]=(tmp+0x30);
  153.         tmp=(TempData[0]>>5);
  154.         tmp=(tmp&0x01);
  155.         free[96]=(tmp+0x30);
  156.         tmp=(TempData[0]>>4);
  157.         tmp=(tmp&0x01);
  158.         free[97]=(tmp+0x30);
  159.                 tmp=(TempData[0]>>3);
  160.         tmp=(tmp&0x01);
  161.         free[98]=(tmp+0x30);
  162.                 tmp=(TempData[0]>>2);
  163.         tmp=(tmp&0x01);
  164.         free[99]=(tmp+0x30);
  165.                 tmp=(TempData[0]>>1);
  166.         tmp=(tmp&0x01);
  167.         free[100]=(tmp+0x30);
  168.         
  169.         tmp=(TempData[0]&0x01);
  170.         free[101]=(tmp+0x30);
  171.                         
  172.                         
  173.   }
  174.          
  175.       

  176. /**********************************************************************
  177. Ãû³Æ£º
  178. ¹¦ÄÜ£º
  179. ÃèÊö£º
  180. Ð޸ģº
  181. ***********************************************************************/
  182. unsigned long Ads1232Read(void)
  183. {
  184.         unsigned char i;
  185.         unsigned long Ads_ReadData;

  186.                 while(GPIO0MASKED_ACCESS(1<<10));//==(1<<8));//DOUT ¸ßµçƽ£¬µÈ´ý£¬Ò»Ö±µ½Êý¾ÝÓÐЧºó±äΪµÍµçƽ           
  187.             for(i = 0; i < 24; i++)
  188.            {
  189.                            SCLK_H;               //ÉÏÉýÑØ¶ÁÈ¡Êý¾Ý                                
  190.                                 Ads_ReadData<<=1;          //ÏÈÓÒÒÆÒ»Î»£¬ÔÚ¶Ô×îµÍλÉèÖÃ
  191.                  if(GPIO0MASKED_ACCESS(1<<10))//==(1<<8))              //¶Á³öµÄÊý¾ÝΪ1        
  192.                     {
  193.                          Ads_ReadData |= 0x01;
  194.                     }
  195.                                 else ;                              //¶Á³öµÄÊý¾ÝΪ0

  196.                                     SCLK_L;
  197.                                         Delay_Us(1);
  198.              }
  199.                               SCLK_H;
  200.                   Delay_Us(1);
  201.                   SCLK_L;
  202.                                   Delay_Us(1);
  203.                                   SCLK_H;
  204.                   Delay_Us(1);
  205.                   SCLK_L;           //Ïû³ýÀÛ¼ÆÎó²î
  206.                
  207.         
  208.         Ads_ReadData&=0x00ffffff;               
  209.       //         UARTSend(bad1, 17);
  210.         return(Ads_ReadData);
  211.                 }


 楼主| xyz549040622 发表于 2019-12-21 10:51 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
internally 发表于 2019-12-23 19:43 | 显示全部楼层
感谢楼主分享!
yizhixiaoyang 发表于 2021-11-4 17:22 | 显示全部楼层
ads1234有没有用过
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2841

主题

19330

帖子

110

粉丝
快速回复 在线客服 返回列表 返回顶部