找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1109|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

AD1100.h單片機驅(qū)動源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:618096 發(fā)表于 2019-9-29 17:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
僅供學(xué)習(xí)

單片機源程序如下:
  1. #include<intrins.h>  
  2. sbit SDA=P1^0;
  3. sbit SCL=P1^1;
  4. #define VREF 5.0
  5. /****************開始位********************/
  6. void start()

  7. {
  8.         SDA = 1;   
  9.         SCL = 1;   
  10. delaynus(50);   
  11.         SDA = 0;   
  12. delaynus(50);      
  13.         SCL = 0;   
  14. }
  15. // 停止位
  16. void stop()

  17. {
  18.         SDA = 0;   
  19. delaynus(50);      
  20.         SCL = 1;     
  21. delaynus(50);      
  22.         SDA = 1;   
  23. }
  24. bit ACK()
  25. {
  26.    bit ack_bit;
  27.         SCL = 1;      
  28. delaynus(50);        
  29.         ack_bit = SDA;                       
  30.         SCL = 0;
  31.         return ack_bit;
  32. }

  33. unsigned char ReadData()

  34. {
  35.         unsigned char i;
  36.         unsigned char x;   
  37.         for(i = 0; i < 8; i++)
  38.         {
  39.                 SCL = 1;               
  40.                 x<<=1;                  
  41.                 x|=(unsigned char)SDA;  
  42.                 SCL = 0;                       
  43.         }
  44.         return(x);               
  45. }

  46. void WriteCurrent(unsigned char y)
  47. {
  48.         unsigned char i;            
  49.         for(i = 0; i < 8; i++)               
  50.         {
  51.             SDA = (bit)(y&0x80);                                                   
  52. delaynus(50);           
  53.            SCL = 1;               
  54. delaynus(50);  
  55.                   SCL = 0;           
  56.                 y <<= 1;           
  57.         }

  58. }

  59. float ReadVoltage()
  60. {
  61. unsigned char dat1,dat2;
  62. unsigned int dat3;
  63. start();
  64. WriteCurrent(0x97);
  65. ACK();
  66. dat1=ReadData();
  67.   ACK();
  68. dat2=ReadData();
  69. ACK();
  70. dat3=ReadData();
  71. ACK();
  72. stop();
  73. delay(20);
  74. dat3=(int)(dat1*256+dat2);
  75.   return (dat3*VREF/32768);
  76. }
  77. /*
  78. *配置寄存器
  79. *BIT  7      6      5      4     3      2      1      0
  80. *   ST/BSY          0                 0                SC         |DR1  DR0|   |PGA1   PGA0|
  81. */
  82. void AD1100_initi(unsigned char com)
  83. {

  84. start();
  85. WriteCurrent(0x96);
  86. ACK();
  87. WriteCurrent(com);
  88. ACK();
  89. stop();
  90. delay(10);
  91. }
復(fù)制代碼

所有資料51hei提供下載:
AD1100.zip (56.68 KB, 下載次數(shù): 5)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表