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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

PCF8591 ADC電壓采樣

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:86791 發(fā)表于 2015-7-26 11:35 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
  1. -------------------------------------------------------
  2. 文件名: IIC_drv.c
  3. 描述: IIC通信驅(qū)動c文件
  4. 作者:
  5. =========================================================
  6. -----------------------------------------------------------------------------------------------------------*/
  7. #include "IIC_drv.h"

  8. /**********************************************
  9. 功能:
  10.     起始信號
  11. 輸入?yún)?shù):
  12.     無
  13. 輸出參數(shù):
  14.     無
  15. 返回值:
  16. **********************************************/
  17. static void Start(void)
  18. {
  19.         Sda = 1;
  20.         Scl = 1;
  21.         Sda = 0;
  22. }

  23. /**********************************************
  24. 功能:
  25.     停止信號
  26. 輸入?yún)?shù):
  27.     無
  28. 輸出參數(shù):
  29.     無
  30. 返回值:
  31. **********************************************/
  32. static void Stop(void)
  33. {
  34.         Sda = 0;
  35.         Scl = 1;
  36.         Sda = 1;
  37. }

  38. /**********************************************
  39. 功能:
  40.     應(yīng)答位
  41. 輸入?yún)?shù):
  42.     無
  43. 輸出參數(shù):
  44.     無
  45. 返回值:
  46.         設(shè)備是否應(yīng)答
  47.         1:應(yīng)答;0:應(yīng)答
  48. **********************************************/
  49. static unsigned char Respons(void)
  50. {
  51.         unsigned char OverTime = 0;  //超時
  52.         unsigned char TempFlag = 0;
  53.         OverTime = 0;
  54.     Sda = 1;     //釋放數(shù)據(jù)線
  55.     Scl = 1;
  56.         while(1)
  57.         {
  58.                 if(Sda)   //應(yīng)答信號沒來
  59.                 {
  60.                         if(OverTime++ > 200)
  61.                         {
  62.                            TempFlag = 0;   //應(yīng)答信號長時間沒有來,認(rèn)為無應(yīng)答
  63.                            break;
  64.                         }
  65.                 }
  66.                 else
  67.                 {
  68.                     TempFlag = 1;    ///檢測到應(yīng)答信號
  69.                         break;
  70.                 }
  71.         }
  72.         Scl = 0;
  73.         return 1;
  74. }

  75. /**********************************************
  76. 功能:
  77.     非應(yīng)答位
  78. 輸入?yún)?shù):
  79.     無
  80. 輸出參數(shù):
  81.     無
  82. 返回值:
  83. **********************************************/
  84. static void NoRespons(void)  //非應(yīng)答
  85. {
  86.     Sda = 1;     //釋放數(shù)據(jù)線
  87.     Scl = 1;
  88.         Scl = 0;
  89. }

  90. /**********************************************
  91. 功能:
  92.     寫字節(jié)
  93. 輸入?yún)?shù):
  94.     temp: 要寫的字節(jié)參數(shù)
  95. 輸出參數(shù):
  96.     無
  97. 返回值:
  98. **********************************************/
  99. static void WriteByte(unsigned char temp)
  100. {
  101.         unsigned char i;
  102.         Scl = 0;
  103.         for(i = 0;i < 8;i++)
  104.         {
  105.                 Sda = temp & 0x80;
  106.                 temp <<= 1;
  107.                 Scl = 1;    //scl拉高,準(zhǔn)備寫數(shù)據(jù)
  108.                 Scl = 0;   //scl拉低,寫數(shù)據(jù)完成
  109.         }
  110. }

  111. /**********************************************
  112. 功能:
  113.     讀字節(jié)
  114. 輸入?yún)?shù):
  115.     無
  116. 輸出參數(shù):
  117.     無
  118. 返回值:
  119.     讀取的字節(jié)
  120. **********************************************/
  121. static unsigned char ReadByte(void)
  122. {
  123.         unsigned char i;
  124.         unsigned char x = 0;
  125.         for(i = 0;i < 8;i++)
  126.         {
  127.                 Scl = 1;
  128.                 x <<= 1;
  129.                 x |= (unsigned char)Sda;
  130.                 Scl = 0;        
  131.         }
  132.         return x;
  133. }

  134. /**********************************************
  135. 功能:
  136.     寫數(shù)據(jù)到對應(yīng)設(shè)備
  137. 輸入?yún)?shù):
  138.     device:   設(shè)備地址
  139.     parameter:參數(shù)
  140.     temp:     寫入的內(nèi)容
  141. 輸出參數(shù):
  142.     無
  143. 返回值:
  144. **********************************************/
  145. void WriteIIC(unsigned char device,unsigned char parameter,unsigned char temp)
  146. {
  147.         Start();
  148.         WriteByte(device);
  149.         if(Respons())
  150.         {
  151.                 WriteByte(parameter);
  152.                 if(Respons())
  153.                 {
  154.                         WriteByte(temp);
  155.                         if(Respons())
  156.                         {
  157.                                 Stop();
  158.                         }
  159.                         else
  160.                         {
  161.                                 Stop();
  162.                         }
  163.                 }
  164.                 else
  165.                 {
  166.                         Stop();
  167.                 }
  168.         }
  169.         else
  170.         {
  171.                 Stop();
  172.         }
  173. }

  174. /**********************************************
  175. 功能:
  176.     從對應(yīng)設(shè)備讀取數(shù)據(jù)
  177. 輸入?yún)?shù):
  178.     device:   設(shè)備地址
  179.     parameter:參數(shù)
  180. 輸出參數(shù):
  181.     無
  182. 返回值:
  183.     讀取的內(nèi)容
  184. **********************************************/
  185. unsigned char ReadIIC(unsigned char device,unsigned char parameter)
  186. {
  187.         unsigned char x;
  188.         Start();
  189.         WriteByte(device);
  190.         if(Respons())
  191.         {
  192.                 WriteByte(parameter);
  193.                 if(Respons())
  194.                 {
  195.                         Start();
  196.                         WriteByte(device | 0x01);
  197.                         if(Respons())
  198.                         {
  199.                                 x = ReadByte();
  200.                                 NoRespons();
  201.                                 Stop();
  202.                         }
  203.                         else
  204.                         {
  205.                                 Stop();
  206.                         }
  207.                 }
  208.                 else
  209.                 {
  210.                         Stop();
  211.                 }
  212.         }
  213.         else
  214.         {
  215.                 Stop();
  216.         }
  217.         return x;
  218. }

  219.         
復(fù)制代碼

---------------------------------------------------------
文件名: digitron_drv.c
描述: 數(shù)碼管模塊驅(qū)動c文件
作者:
=========================================================
-----------------------------------------------------------------------------------------------------------*/
#include "digitron_drv.h"

code uint8 Segment[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
code uint8 Select[] = {0xff,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

/**********************************************
功能:
    輸出位選字節(jié)和段碼字節(jié)
輸入?yún)?shù):
    SelectByte:  位選字節(jié)
    SegmentByte: 段碼字節(jié)
輸出參數(shù):
    無
返回值:
**********************************************/
static void DigOutput(uint8 SelectByte, uint8 SegmentByte)
{
    uint8 i;
   
        DIG_SHCP = 0;
        DIG_STCP = 0;

        for(i=0; i<8; i++)
        {
            if(SegmentByte&0x80)
        {
                DIG_DATA = 1;
        }
                else
        {
                    DIG_DATA = 0;
        }
                _nop_();
                DIG_SHCP = 1;
                _nop_();
                DIG_SHCP = 0;
                _nop_();
                SegmentByte <<= 1;
        }
        for(i=0; i<8; i++)
        {
            if(SelectByte&0x80)
                DIG_DATA = 1;
                else
                    DIG_DATA = 0;
                _nop_();
                DIG_SHCP = 1;
                _nop_();
                DIG_SHCP = 0;
                _nop_();
                SelectByte <<= 1;
        }
        DIG_STCP = 1;
        _nop_();
        DIG_STCP = 0;
        _nop_();
}

/**********************************************
功能:
    在某位顯示自定義段碼
輸入?yún)?shù):
    DigSelect: 數(shù)碼管位選擇(1——8,即最右到最左)
    CustomSeg: 自定義段碼值
輸出參數(shù):
    無
返回值:
**********************************************/
void DigShowCustom(uint8 DigSelect, uint8 CustomSeg)
{
    if(0<DigSelect<9)
    {
        DigOutput(Select[DigSelect],CustomSeg);
    }
}

/**********************************************
功能:
    在某位顯示數(shù)字
輸入?yún)?shù):
    DigSelect: 數(shù)碼管位選擇(1——8,即最右到最左)
    Number:    數(shù)字(0——9)
    Dp:        小數(shù)點(diǎn)(1:顯示;0:不顯示)
輸出參數(shù):
    無
返回值:
**********************************************/
void DigShowNumber(uint8 DigSelect, uint8 Number, bit Dp)
{
    if((0<DigSelect<9)&&(Number<10))
    {
        if(Dp)
            {
            DigOutput(Select[DigSelect],(Segment[Number]&~0x80));
            }
            else
            {
            DigOutput(Select[DigSelect],(Segment[Number]|0x80));
            }
    }
}


/**********************************************
功能:
    初始化數(shù)碼管,使數(shù)碼管全滅
輸入?yún)?shù):
    無
輸出參數(shù):
    無
返回值:
**********************************************/
void DigInit(void)
{
    DIG_DATA = 0;
        DIG_SHCP = 0;
        DIG_STCP = 0;
    DigOutput(0x00,0xff);
}
#include "PCF8591_AD_drv.h"

/**********************************************
功能:
    配置PCF8591的工作模式
輸入?yún)?shù):
    anlog_sw:  模擬信號輸出開關(guān)
    input_model:  模擬輸入模式設(shè)置
    auto_increment: 通道自動增量設(shè)置
    AD_channel:模擬轉(zhuǎn)換通道設(shè)置
輸出參數(shù):
    無
返回值:
    配置完成后的控制字節(jié)
**********************************************/

unsigned char model_set(bit anlog_sw,unsigned char input_model,bit auto_increment,unsigned char AD_channel)
{
        unsigned char Control_Key;
        Control_Key = 0x00;
        if(anlog_sw)
        {
                Control_Key |= 0x40;
        }
        input_model = input_model << 4;
        Control_Key |= input_model;
        if(auto_increment)
        {
                Control_Key |= 0x04;
        }
        Control_Key |= AD_channel;
        return Control_Key;
}



---------------------------------------------------------
文件名: PCF8591_AD.c
描述: AD采集溫度,光照強(qiáng)度變化
作者:
=========================================================
-----------------------------------------------------------------------------------------------------------*/
#include <reg52.h>
#include "digitron_drv.h"
#include "IIC_drv.h"
#include "PCF8591_AD_drv.h"

/**********************************************
功能:
    數(shù)碼管顯示
輸入?yún)?shù):
    Data: 數(shù)據(jù)
輸出參數(shù):
    無
返回值:
**********************************************/
void Display(unsigned int Data1,unsigned int Data2)
{
        DigShowNumber(8,Data1/100,0);
        DigShowNumber(7,Data1%100/10,0);
        DigShowNumber(6,Data1%10,0);
        
        DigShowNumber(3,Data2/100,0);
        DigShowNumber(2,Data2%100/10,0);
        DigShowNumber(1,Data2%10,0);
}  

/*---------------------------------------------------------------------------------------------------------*/
/**********************************************
    主函數(shù)
**********************************************/
void main()
{
        unsigned char model;
        unsigned char hot,light;
        while(1)
        {
                model = model_set(anlog_output_off,anlog_model_0,auto_increment_off,anlog_channel_0);
                hot = ReadIIC(0x90,model);

                model = model_set(anlog_output_off,anlog_model_0,auto_increment_off,anlog_channel_1);
                light = ReadIIC(0x90,model);

                Display(hot,light);
        }
}

好東西值得擁有

PCF8591 ADC電壓采樣.pdf

2.81 MB, 下載次數(shù): 54, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:91448 發(fā)表于 2015-10-1 16:38 | 只看該作者
謝謝分享。。。
回復(fù)

使用道具 舉報

板凳
ID:285225 發(fā)表于 2018-2-26 22:56 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

地板
ID:273583 發(fā)表于 2018-4-10 06:53 | 只看該作者
謝謝 !銳志開發(fā)板上就用的這個,就是不見開發(fā)板的視頻教程!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩精品一区二区 | 国产视频中文字幕 | 可以在线看的黄色网址 | 国产成人精品免高潮在线观看 | 成人国产在线视频 | 99精品久久久 | av片在线免费看 | 日日操日日干 | 黄色一级免费 | 国产精品美女久久久久久免费 | 欧美三区视频 | 国产精品久久亚洲 | 免费视频一区二区 | 欧美一级久久 | 91精品一区二区三区久久久久 | 狠狠操狠狠搞 | 欧美日韩国产一区二区三区不卡 | 99久久99| 日韩av在线免费 | 亚洲一区二区视频 | 国产精品久久久久久久岛一牛影视 | 天天操人人干 | 中国大陆高清aⅴ毛片 | 日本精品一区二区 | 91色啪| 久久伦理电影 | 男女爱爱福利视频 | 免费国产视频 | 日韩视频在线免费观看 | 婷婷去俺也去 | 99视频免费在线 | 国产精品成人一区二区三区夜夜夜 | 久久a久久 | 国产日产欧产精品精品推荐蛮挑 | 国产一区二区三区视频免费观看 | 欧美国产91| 久久久成人精品 | 日韩欧美专区 | 断背山在线观看 | 亚洲精色| 亚洲国产第一页 |