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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2908|回復: 1
打印 上一主題 下一主題
收起左側

AD7705雙通道顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:592709 發表于 2020-4-22 17:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
AD雙通道

單片機源程序如下:
  1. #ifndef __ADC7705_H__
  2. #define        __ADC7705_H__

  3. sbit AdDrdy= P1^2;
  4. sbit AdDin = P1^5;
  5. sbit AdDout= P1^6;         
  6. sbit AdClk = P1^7;
  7. unsigned int data4,data7;
  8. float data2,data6,data3,data5;

  9. //通訊寄存器地址定義
  10. #define     WR_Communic_REG     0x00   //選中寫通信寄存器
  11. #define     WR_SETUP_REG        0x10   //選中寫設置寄存器
  12. #define     RD_SETUP_REG        0x18   //選中設置寄存器
  13. #define     WR_CLOCK_REG        0x20   //選中寫時鐘寄存器
  14. #define     RD_DATA_REG1        0x38   //選中數據寄存器讀 通道1
  15. #define     RD_DATA_REG2        0x39   //選中數據寄存器讀 通道2
  16. #define     WR_OFFSET_REG       0x60   //選中寫offset寄存器
  17. #define     RD_OFFSET_REG       0x68   //選中讀offset寄存器
  18. #define     WR_FULL_REG         0x70   //選中寫full scale寄存器
  19. #define     RD_FULL_REG         0x78   //選中讀full scale寄存器

  20. void delay(uint x)            //延時Xms
  21. {
  22.         uint i,j;
  23.         for(i=x;i>0;i--)
  24.                 for(j=110;j>0;j--);
  25. }
  26. ///////////////以下是16位A/D7705驅動程序///////////////
  27. void WriteByte7705(unsigned char x)
  28. {
  29.         unsigned char a;
  30.         AdClk = 1;
  31.         _nop_();
  32.         _nop_();
  33.         _nop_();
  34.         _nop_();
  35.         _nop_();
  36.         _nop_();
  37.         for (a=0; a<8; a++)
  38.         {
  39.                 AdClk=0;
  40.                 if(x & 0x80)
  41.                         AdDin=1;
  42.                 else
  43.                         AdDin=0;
  44.                 _nop_();
  45.                 _nop_();
  46.                 _nop_();
  47.                 _nop_();
  48.                 _nop_();
  49.                 _nop_();
  50.                 AdClk=1;   
  51.                 _nop_();
  52.                 _nop_();
  53.                 _nop_();
  54.                 _nop_();
  55.                 _nop_();
  56.                 _nop_();
  57.                 x<<=1;
  58.         }
  59.         AdDin=1;
  60. }

  61. void InitADC7705()
  62. {
  63.     int t;
  64.         AdClk=1;
  65.     AdDin=1;

  66.         for(t=0;t<40;t++)
  67.         {
  68.                 AdClk=0;
  69.                 _nop_();
  70.                 _nop_();
  71.                 AdClk=1;
  72.                 _nop_();
  73.                 _nop_();
  74.         }
  75.         delay(10);
  76.         WriteByte7705(0x20);     
  77.         WriteByte7705(0x0c);
  78.         WriteByte7705(0x10);     
  79.         WriteByte7705(0x44);
  80.         delay(10);       
  81.         /*while (AdDrdy);
  82.         delay(10);       
  83.         WriteByte7705(0x10);
  84.         WriteByte7705(0x80);
  85.         while (AdDrdy);
  86.         delay(10);*/
  87.         WriteByte7705(0x11);   
  88.         WriteByte7705(0x44);
  89.         /*while (AdDrdy);
  90.         delay(10);
  91.         WriteByte7705(0x11);
  92.         WriteByte7705(0x80);
  93.         while (AdDrdy); */
  94.         delay(10);       
  95. }


  96. void InitADC7705CH2()
  97. {
  98.     int t;
  99.         AdClk=1;
  100.     AdDin=1;
  101.         for(t=0;t<40;t++)
  102.         {
  103.                 AdClk=0;
  104.                 _nop_();
  105.                 _nop_();
  106.                 AdClk=1;
  107.                 _nop_();
  108.                 _nop_();
  109.         }
  110.         delay(10);
  111.         WriteByte7705(0x21);     
  112.     WriteByte7705(0x0c);  
  113.   
  114. }

  115. unsigned int  Read_16Byte7705ch1()
  116. {
  117.         unsigned int read16bit ;
  118.     unsigned char i;
  119.         WriteByte7705(0x10);     
  120.   WriteByte7705(0x44);
  121.         delay(10);  
  122.         WriteByte7705(0x38) ;    // 設置讀當前通道數據,通道1 如果是通道2,改成WriteByte7705(0x39)
  123.         delay(2);
  124.         while (AdDrdy) ;             //等待數據準備好
  125.         AdClk= 1 ;
  126.         _nop_();
  127.         _nop_();
  128.         _nop_();
  129.         _nop_();
  130.         _nop_();
  131.         _nop_();
  132.         read16bit=0x0000;
  133.         for (i = 0 ;i < 16 ;i++ )
  134.         {
  135.                 read16bit <<= 1;
  136.         AdClk= 0;         
  137.         _nop_();
  138.                 _nop_();
  139.                 _nop_();
  140.                 _nop_();
  141.                 _nop_();
  142.                 _nop_();
  143.         if(AdDout)
  144.         {
  145.             read16bit++;
  146.         }
  147.         AdClk= 1;         
  148.         _nop_();
  149.                 _nop_();
  150.                 _nop_();
  151.                 _nop_();
  152.                 _nop_();
  153.                 _nop_();
  154.         }
  155.         return (read16bit);  
  156. }
  157. //unsigned int  Read_16Byte7705ch2()
  158. //{
  159. //        unsigned int read16bit ;
  160. //    unsigned char i;   
  161. //        WriteByte7705(0x39) ;    // 設置讀當前通道數據,通道1 如果是通道2,改成WriteByte7705(0x39)
  162. //        delay(2);
  163. //        while (AdDrdy) ; \            //等待數據準備好
  164. //        AdClk= 1 ;
  165. //        _nop_();
  166. //        _nop_();
  167. //        _nop_();
  168. //        _nop_();
  169. //        _nop_();
  170. //        _nop_();
  171. //        read16bit=0x0000;
  172. //        for (i = 0 ;i < 16 ;i++ )
  173. //        {
  174. //                read16bit <<= 1;
  175. //        AdClk= 0;         
  176. //        _nop_();
  177. //                _nop_();
  178. //                _nop_();
  179. //                _nop_();
  180. //                _nop_();
  181. //                _nop_();
  182. //        if(AdDout)
  183. //        {
  184. //            read16bit++;
  185. //        }
  186. //        AdClk= 1;         
  187. //        _nop_();
  188. //                _nop_();
  189. //                _nop_();
  190. //                _nop_();
  191. //                _nop_();
  192. //                _nop_();
  193. //        }
  194. //        return (read16bit);  
  195. //}




  196. //將AD7705獨處的數字量轉化為電壓,擴大1000倍
  197. unsigned int digital_to_voltagech1(float word1)
  198. {
  199.         //unsigned int data3;
  200.         //float data2;
  201.         if(word1>65535)
  202.                 word1=65535;
  203.         if(word1<0)
  204.                 word1=0;
  205.         data2=word1*1.0/65535;
  206.         data3=data2*5000;
  207.         data4=data2*12125;
  208.         return (data3);
  209. }

  210. unsigned int  Read_16Byte7705ch2()
  211. {
  212.         unsigned int read16bitCH2 ;
  213.     unsigned char i;
  214.         WriteByte7705(0x11);   
  215.         WriteByte7705(0x44);     
  216.   delay(10);
  217.         WriteByte7705(0x39) ;    // 設置讀當前通道數據,通道1 如果是通道2,改成WriteByte7705(0x39)
  218.         delay(2);
  219.         while (AdDrdy) ;             //等待數據準備好
  220.         AdClk= 1 ;
  221.         _nop_();
  222.         _nop_();
  223.         _nop_();
  224.         _nop_();
  225.         _nop_();
  226.         _nop_();
  227.         read16bitCH2=0x0000;
  228.         for (i = 0 ;i < 16 ;i++ )
  229.         {
  230.                 read16bitCH2 <<= 1;
  231.         AdClk= 0;         
  232.         _nop_();
  233.                 _nop_();
  234.                 _nop_();
  235.                 _nop_();
  236.                 _nop_();
  237.                 _nop_();
  238.         if(AdDout)
  239.         {
  240.             read16bitCH2++;
  241.         }
  242.         AdClk= 1;         
  243.         _nop_();
  244.                 _nop_();
  245.                 _nop_();
  246.                 _nop_();
  247.                 _nop_();
  248.                 _nop_();
  249.         }
  250.         return (read16bitCH2);  
  251. }

  252. unsigned int digital_to_voltagech2(float word2)
  253. {
  254.         //unsigned int data3;
  255.         //float data2;
  256.         if(word2>65535)
  257.                 word2=65535;
  258.         if(word2<0)
  259.                 word2=0;
  260.         data5=word2*1.0/65535;
  261.         data6=data5*5000;
  262.         data7=data5*12125;
  263.         return (data6);
  264. }

  265. ///////////////以上是16位A/D7705驅動程序///////////////

  266. #endif
復制代碼

所有資料51hei提供下載:
AD雙通道顯示成品.rar (49.89 KB, 下載次數: 36)


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

使用道具 舉報

沙發
ID:1 發表于 2020-4-23 01:21 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品揄拍一区二区久久国内亚洲精 | 日韩视频在线观看一区二区 | 99精品久久 | 国产精品久久久久久久久免费樱桃 | 91国内精品久久 | 国产成在线观看免费视频 | 精品国产一区二区三区在线观看 | 天天操夜夜看 | 精品久久久久久久久久久久久久 | 在线亚洲免费视频 | 美美女高清毛片视频免费观看 | 亚洲第一福利视频 | 4hu最新网址 | av在线视 | 亚洲精品黄色 | 国产视频精品在线观看 | 自拍 亚洲 欧美 老师 丝袜 | 成人免费视频网址 | 免费在线一区二区 | 草草视频在线观看 | 在线黄 | 欧州一区二区 | 91麻豆精品一区二区三区 | 精品欧美一区二区三区久久久小说 | 午夜精品在线 | 久久精品亚洲国产奇米99 | 成年人在线观看 | 欧美大片一区二区 | 久久亚洲一区二区三区四区 | 91精品国产91久久久久久最新 | 日干夜干| 亚洲成人在线视频播放 | 日本不卡视频在线播放 | 日韩a视频 | 视频一区二区中文字幕 | 色橹橹欧美在线观看视频高清 | 久久久精品网 | 国产日韩欧美中文 | 成人性视频免费网站 | 久久久国| 中文字幕一区二区三区不卡在线 |