[资料分享] ADS1100 驱动程序--51单片机

[复制链接]
774|1
 楼主| xyz549040622 发表于 2020-1-27 10:58 | 显示全部楼层 |阅读模式
  1. ADS1100的51单片机程序
  2. #include<reg52.h>   
  3. #include <intrins.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. /*****ADS1100****/
  7. sbit Sda=P3^0;      
  8. sbit Scl=P3^1;
  9. /****12864*****/
  10. sbit rs=P2^0;
  11. sbit rw=P2^1;
  12. sbit psb=P2^2;       
  13. sbit e=P2^5;
  14. sbit rst=P2^4;       
  15. sbit WEI=P2^7;//定义位选
  16. void delay_xms(uint xms)
  17. {
  18.         uint i,j;
  19.         for(i=xms;i>0;i--)
  20.                 for(j=112;j>0;j--);
  21. }
  22. /***************12864display********************/
  23. write_com(uchar com)
  24.   {
  25.           rs=0;
  26.         rw=0;
  27.         delay_xms(5);
  28.         P0=com;
  29.         e=1;
  30.         delay_xms(5);
  31.         e=0;
  32.   }
  33.   write_date(uchar date)
  34.   {
  35.           rs=1;
  36.         rw=0;
  37.         delay_xms(5);
  38.         P0=date;
  39.         e=1;
  40.         delay_xms(5);
  41.         e=0;
  42.   }
  43. void init_12864()
  44. {
  45.           P0=0xff;
  46.         WEI=1;
  47.         WEI=0;
  48.         rs=0;
  49.         rw=0;
  50.         e=0;
  51.         psb=1;
  52.         rst=1;
  53.         delay_xms(50);
  54.         write_com(0X30);
  55.         delay_xms(1);
  56.         write_com(0X30);
  57.         delay_xms(1);
  58.         write_com(0X0C);
  59.         delay_xms(1);
  60.         write_com(0X01);
  61.         delay_xms(15);
  62.         write_com(0X06);
  63.         delay_xms(1);
  64. }

  65. /***************AD TRANSFER*********************/
  66. /*------------------------------------------------
  67.                     启动IIC总线
  68. ------------------------------------------------*/
  69.   void start(void)
  70.   {
  71.    Sda=1;
  72.    _nop_();
  73.    Scl=1;
  74.    _nop_();
  75.    Sda=0;
  76.    _nop_();
  77.    Scl=0;
  78.   }


  79. /*------------------------------------------------
  80.                     停止IIC总线
  81. ------------------------------------------------*/
  82.   void stop(void)
  83.   {
  84.    Sda=0;
  85.    _nop_();
  86.    Scl=1;
  87.    _nop_();
  88.    Sda=1;
  89.    _nop_();
  90.    Scl=0;
  91.    }


  92. /*------------------------------------------------
  93.                    应答IIC总线
  94. ------------------------------------------------*/
  95.    void ack(void)
  96.    {
  97.     Sda=0;
  98.         _nop_();
  99.         Scl=1;
  100.         _nop_();
  101.         Scl=0;
  102.         _nop_();
  103.         }


  104. /*------------------------------------------------
  105.                  非应答IIC总线
  106. ------------------------------------------------*/
  107.         void noack(void)
  108.         {
  109.          Sda=1;
  110.          _nop_();
  111.          Scl=1;
  112.          _nop_();
  113.          Scl=0;
  114.          _nop_();
  115.          }


  116. /*------------------------------------------------
  117.               发送一个字节
  118. ------------------------------------------------*/
  119.          void send(unsigned char Data)
  120.          {
  121.           unsigned char BitCounter=8;
  122.           unsigned char temp;

  123.           do
  124.             {
  125.                  temp=Data;
  126.                  Scl=0;
  127.                  _nop_();
  128.                  if((temp&0x80)==0x80)
  129.                     Sda=1;
  130.                  else
  131.                     Sda=0;

  132.                         Scl=1;
  133.                         temp=Data<<1;
  134.                         Data=temp;
  135.                         BitCounter--;
  136.                   }
  137.           while(BitCounter);
  138.               Scl=0;
  139.           }


  140. /*------------------------------------------------
  141.                读入一个字节并返回
  142. ------------------------------------------------*/
  143.           unsigned char read(void)
  144.           {
  145.            unsigned char temp=0;
  146.            unsigned char temp1=0;
  147.            unsigned char BitCounter=8;

  148.            Sda=1;
  149.            do
  150.              {
  151.                   Scl=0;
  152.           _nop_();
  153.                   Scl=1;
  154.                   _nop_();
  155.                   if(Sda)
  156.                      temp=temp|0x01;
  157.                   else
  158.                      temp=temp&0xfe;

  159.                   if(BitCounter-1)
  160.                      {
  161.                           temp1=temp<<1;
  162.                           temp=temp1;
  163.                           }
  164.                           BitCounter--;
  165.                          }
  166.                 while(BitCounter);
  167.                 return(temp);
  168.           }
  169. void display(long k)
  170. {
  171.        
  172.         unsigned int temp;
  173.         unsigned long int v;  
  174.         v=3125*k ;
  175.         v=v/2048;
  176.         temp=v/10000;
  177.         write_com(0x80);
  178.         write_date(0x30+temp);
  179.         temp=v/1000%10;
  180.         write_date(0x30+temp);
  181.         temp=v/100%10;
  182.         write_date(0x30+temp);
  183.         temp=v/10%10;
  184.         write_date(0x30+temp);
  185.         write_date(0x2e);
  186.         temp=v%10;
  187.         write_date(0x30+temp);
  188. }

  189. void main()
  190. {
  191.     short m,n;
  192.         long k;
  193.         init_12864();
  194.         while(1)
  195.         {
  196.         start();
  197.         send(0x90);
  198.         ack();
  199.         send(0x8c);
  200.         ack();
  201.         stop();
  202.         start();
  203.         send(0x91);
  204.         ack();
  205.         m=read();
  206.         ack();
  207.         n=read();
  208.         noack();
  209.         stop();
  210.         k=(0x00ff & m)<<8|n;
  211.         display(k);
  212.         }       
  213. }


 楼主| xyz549040622 发表于 2020-1-27 10:59 | 显示全部楼层

本帖子中包含更多资源

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

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2841

主题

19330

帖子

110

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