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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)從pcf8591讀到的都是FF,調(diào)試了很久,求解答

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:573822 發(fā)表于 2019-7-25 21:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我從網(wǎng)上買了一個(gè)pcf8591模塊,然后想要試試如何使用,但是發(fā)現(xiàn)單片機(jī)讀到的都是FF.求解答
  1. ///*************************************************************************
  2. ///pcf8591試驗(yàn)程序
  3. ///*************************************************************************
  4. #include<reg52.h>
  5. #include<iic.h>
  6. //#define  PCF8591 0x90

  7. void delay(uint z);
  8. void delay1(uint i);
  9. void date();
  10. void DigDisplay();
  11. void ADC_Send_Byte(uint addr,uint com);                         //ADC發(fā)送字節(jié)[命令]數(shù)據(jù)函數(shù)   
  12. uint ADC_Receive_Byte(uint addr);
  13. uint code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
  14.                                                 0x7c,0x39,0x5e,0x79,0x71,0x3e};//顯示0~F的值,16為U
  15. uint dianya[4]={0,0,0,0};
  16. uchar back_voltage1=0;

  17. sbit LSA = P2^2;
  18. sbit LSB = P2^3;
  19. sbit LSC = P2^4;

  20. ///*************************************************************************
  21. ///主函數(shù)
  22. ///*************************************************************************
  23. void main()
  24. {
  25.         IIC_Init();//iic總線初始化

  26.         while(1)
  27.         {        
  28.                 date();
  29.                 DigDisplay();                        
  30.         }                        
  31.         
  32. }

  33. ///*************************************************************************
  34. /// 七段顯像管控制函數(shù)
  35. ///*************************************************************************
  36. void DigDisplay()
  37. {
  38.         uint i;
  39.         //date();
  40.         for(i=0;i<4;i++)
  41.         {
  42.                 switch(i)         //位選,選擇點(diǎn)亮的數(shù)碼管,
  43.                 {
  44.                         case(0):
  45.                                 LSA=0;LSB=0;LSC=0; break;//顯示第0位
  46.                         case(1):
  47.                                 LSA=1;LSB=0;LSC=0; break;//顯示第1位
  48.                         case(2):
  49.                                 LSA=0;LSB=1;LSC=0; break;//顯示第2位
  50.                         case(3):
  51.                                 LSA=1;LSB=1;LSC=0; break;//顯示第3位        
  52.                 }

  53.                 P0=dianya[i];//發(fā)送段碼
  54.                 delay1(80); //間隔一段時(shí)間掃描        
  55.                 P0=0x00;//消隱
  56.         }
  57. }

  58. ///*************************************************************************
  59. ///延時(shí)函數(shù)
  60. ///*************************************************************************

  61. void delay(uint z)//延時(shí)函數(shù)
  62. {
  63.   unsigned char x,y;
  64.   for(x=z;x>0;x--)
  65.     for(y=110;y>0;y--);
  66. }

  67. void delay1(uint i)
  68. {
  69.         while(i--);
  70. }
  71. ///*************************************************************************
  72. ///數(shù)據(jù)處理函數(shù)
  73. ///*************************************************************************
  74. void date()
  75. {
  76. //        ulong a;
  77.         uchar a;
  78. //        uint a;
  79.         ADC_Send_Byte(0x90,0x43);//通道0 ADC轉(zhuǎn)換
  80.         delay(100);
  81.         back_voltage1=ADC_Receive_Byte(0x90);
  82. //        a=back_voltage1*100*5/255;
  83.         a=back_voltage1;
  84.         if(a<=500)
  85.         {//a=111;
  86.                 dianya[3]=smgduan[a/100];
  87.                 dianya[2]=smgduan[a%100/10];        
  88.                 dianya[1]=smgduan[a%100%10];
  89.                 dianya[0]=smgduan[16];        
  90.         }
  91.         else
  92.         {
  93.                 dianya[3]=smgduan[0];
  94.                 dianya[2]=smgduan[0];        
  95.                 dianya[1]=smgduan[0];
  96.                 dianya[0]=smgduan[16];               
  97.         
  98.         }        

  99. }
  100. ///*************************************************************************
  101. ///pcf8591接收與處理
  102. ///*************************************************************************
  103. void ADC_Send_Byte(uint addr,uint com)
  104. {
  105.    IIC_Start();              //啟動(dòng)總線
  106.    IIC_Write_Byte(addr);           //發(fā)送器件地址
  107.    IIC_Ack();
  108.    IIC_Write_Byte(com);             //發(fā)送數(shù)據(jù)
  109.    IIC_Ack();
  110.    IIC_Stop();              //結(jié)束總線
  111. }

  112. uint ADC_Receive_Byte(uint addr)
  113. {
  114.    uint c;
  115.    IIC_Start();          //啟動(dòng)總線
  116.    IIC_Write_Byte(addr+1);      //發(fā)送器件地址,如果是讀則最低位為1即0x91
  117.    IIC_Ack();
  118.    c=IIC_Read_Byte();          //讀取數(shù)據(jù)
  119.    IIC_Ack();          //發(fā)送非就答位
  120.    IIC_Stop();           //結(jié)束總線
  121.    return(c);
  122. }

  123. #include<iic.h>

  124. sbit SCL=P2^0;
  125. sbit SDA=P2^1;

  126. void IIC_DELAY()
  127. {
  128.         _nop_();
  129.         _nop_();
  130.         _nop_();
  131.         _nop_();
  132.         _nop_();

  133. }
  134. void IIC_Init()//總線初始化
  135. {
  136.   SCL=1;
  137.   IIC_DELAY();
  138.   SDA=1;
  139.   IIC_DELAY();
  140. }
  141. void IIC_Start() //啟動(dòng)信號(hào)
  142. {
  143.   SDA=1;
  144.   SCL=1;
  145.   IIC_DELAY();
  146.   SDA=0;
  147.   IIC_DELAY();
  148.   SCL=0;
  149.   IIC_DELAY();
  150. }
  151. void IIC_Stop()        //停止信號(hào)
  152. {
  153.    SDA=0;
  154.    SCL=0;
  155.    IIC_DELAY();
  156.    SDA=1;
  157.    IIC_DELAY();
  158. }
  159. void IIC_Ack() //應(yīng)答信號(hào)
  160. {
  161.    unsigned char i;
  162.    SCL=1;
  163.    IIC_DELAY();
  164.    while((SDA==1)&&(i<250))i++;
  165.    SCL=0;
  166.    IIC_DELAY();
  167. }
  168. void IIC_Write_Byte(uint date)//寫一個(gè)字節(jié)
  169. {
  170.    uint i,temp;
  171.    temp=date;
  172.    for(i=0;i<8;i++)
  173.    {
  174.              temp=temp<<1;
  175.           SCL=0;
  176.           IIC_DELAY();
  177.           SDA=CY;//最高位將移入PSW寄存器的CY位中,然后將CY賦給SDA
  178.           IIC_DELAY();
  179.           SCL=1;
  180.           IIC_DELAY();
  181.    }
  182.    SCL=0;
  183.    IIC_DELAY();
  184.    SDA=1;
  185.    IIC_DELAY();
  186. }
  187. uint IIC_Read_Byte()//讀一個(gè)字節(jié)
  188. {
  189.    uint i,temp;
  190.    for(i=0;i<8;i++)
  191.    {
  192.           SCL=0;
  193.           IIC_DELAY();
  194.           temp=(temp<<1)|SDA;
  195.           IIC_DELAY();
  196.           SCL=1;
  197.           IIC_DELAY();
  198.    }
  199.    SCL=0;
  200.    IIC_DELAY();
  201.    SDA=1;
  202.    IIC_DELAY();
  203.    return temp;
  204. }
復(fù)制代碼


pcf8591練習(xí).zip

134.7 KB, 下載次數(shù): 4

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

使用道具 舉報(bào)

沙發(fā)
ID:573822 發(fā)表于 2019-7-26 21:04 | 只看該作者
調(diào)試完成,在普中科技板上完美實(shí)現(xiàn),但是仿真不行

pcf8591實(shí)例.zip

134.86 KB, 下載次數(shù): 30

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲性人人天天夜夜摸 | 欧美精品网站 | 国产精品中文字幕在线播放 | 91久久久久久| 国产精品久久久久久妇女6080 | av在线三级| 99精品一区 | 操久久 | 在线视频成人 | 国产农村妇女精品一二区 | 国产一区二区三区视频 | 日本一本在线 | 久久久av| 国产精品美女久久久 | 欧美精品在线一区二区三区 | 手机av免费在线 | 色黄爽 | 欧美6一10sex性hd | 99久久精品一区二区成人 | 精品二三区 | 成人午夜免费网站 | 国产真实精品久久二三区 | 天堂国产| 国产精品99久久久久久动医院 | 日本久久一区二区三区 | 成人毛片一区二区三区 | 久久五月婷 | 91久久精品国产91久久性色tv | 日韩精品1区2区3区 国产精品国产成人国产三级 | 老司机狠狠爱 | 天天色综 | 久久久久久中文字幕 | 精品91久久 | av免费电影在线 | 偷拍自拍网址 | 日韩不卡一区二区 | 亚洲精品毛片av | 天天干天天爽 | 午夜影院在线免费观看视频 | 91精品国产色综合久久 | 国产玖玖 |