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

標(biāo)題: 求助大佬關(guān)于PCF8591的問題 不能寫入d/a的數(shù)據(jù)進(jìn)行模擬輸出 [打印本頁]

作者: rdsfds    時間: 2018-9-3 15:56
標(biāo)題: 求助大佬關(guān)于PCF8591的問題 不能寫入d/a的數(shù)據(jù)進(jìn)行模擬輸出
我這個程序哪里有問題   一直不能寫入d/a的數(shù)據(jù)進(jìn)行模擬輸出  
以及不能讀取8591的數(shù)據(jù)

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit scl=P0^1;
  6. sbit sda=P0^0;
  7. void delay()
  8. {_nop_();_nop_();_nop_();_nop_();_nop_();}
  9. void init()
  10. {
  11. scl=1;
  12. delay();
  13. sda=1;
  14. delay();
  15. }
  16. void start()
  17. {
  18. sda=1;
  19. delay();
  20. scl=1;
  21. delay();
  22. sda=0;
  23. delay();
  24. }
  25. void respons()
  26. {
  27. uchar i=0;
  28. scl=0;
  29. delay();
  30. while((sda==1)&&i<255)
  31.   i++;
  32.   scl=0;
  33.   delay();
  34. }
  35. void stop()
  36. {
  37. sda=0;
  38. delay();
  39. scl=1;
  40. delay();
  41. sda=1;
  42. delay();
  43. }
  44. void writebyte(uchar byte)
  45. {
  46. uchar i;
  47. for(i=0;i<8;i++)
  48. {
  49.   byte=byte<<1;
  50.   scl=0;
  51.   delay();
  52.   sda=CY;
  53.   delay();
  54.   scl=1;
  55.   delay();
  56. }
  57. scl=0;
  58. delay();
  59. sda=1;
  60. delay();
  61. }
  62. uchar readbyte()
  63. {
  64. uchar i,k=0;
  65. scl=0;
  66. delay();
  67. sda=1;
  68. for(i=0;i<8;i++)
  69. {
  70.   scl=1;
  71.   delay();
  72.   k=(k<<1)|sda;
  73.   delay();
  74.   scl=0;
  75.   delay();
  76. }
  77. sda=0;
  78. delay();
  79. return k;
  80. }
  81. uchar read(uchar address,uchar date) //¶ÁadµØÖ·¿ØÖÆÊý¾Ý
  82. {
  83. uchar k;
  84. start();
  85. writebyte(address);
  86. respons();
  87. writebyte(date);
  88. respons();
  89. start();
  90. writebyte(address+1);
  91. respons();
  92. k=readbyte();
  93. respons();
  94. stop();
  95. return k;
  96. }
  97. void write(uchar address,uchar date,uchar dig)//дdaµØÖ·¿ØÖÆÊý¾Ý
  98. {
  99. start();
  100. writebyte(address);
  101. respons();
  102. writebyte(date);
  103. respons();
  104. writebyte(dig);
  105. respons();
  106. stop();
  107. }
  108. void main()
  109. {
  110. init();
  111.   write(0x90,0x40,0x80);
  112. }
復(fù)制代碼




作者: rdsfds    時間: 2018-9-3 19:04
求助大佬   可以幫看看我這個程序哪里有問題嗎   iic接口的8591
作者: rdsfds    時間: 2018-9-3 20:22
我查找iic協(xié)議對照  按照順序表    模擬的iic協(xié)議   
想要8591模擬輸出電壓   網(wǎng)上有要上拉電阻我加了  芯片還是沒用反應(yīng)
找了幾遍沒用找到問題所在  
希望有熟悉的人幫忙解答下 謝謝
作者: rdsfds    時間: 2018-9-3 20:27
單片機(jī)用的是stc 89c52
作者: zl2168    時間: 2018-9-3 21:47
本帖最后由 zl2168 于 2018-9-4 07:18 編輯

給你介紹一個正確有效看得懂的案例,自己對照查錯吧!
實(shí)例85  PCF8591 I2C串行A-D(1602顯示)

Proteus仿真一下,確認(rèn)有效。
實(shí)例85 PCF8591 I2C串行A-D.rar (57.96 KB, 下載次數(shù): 30)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1書中電路和程序設(shè)計有詳細(xì)說明,程序語句條條有注解。

作者: 人中狼    時間: 2018-9-3 23:00
在網(wǎng)上找個例程吧,調(diào)通了,再回頭來看自己的程序錯在哪,IIC要確定地址是否正確,另外粗看了一下,你的程序沒有判斷PCF8591的應(yīng)答,IIC里主機(jī)要判斷設(shè)備的應(yīng)答的
作者: rdsfds    時間: 2018-9-3 23:01
zl2168 發(fā)表于 2018-9-3 21:47
給你介紹一個正確有效看得懂的案例,自己對照查錯吧!

好的 謝謝   可以給個鏈接嗎

作者: yang陽    時間: 2018-9-4 00:03
/*------------------------------------------------                     啟動IIC總線 ------------------------------------------------*/   void Start(void)   {    Sda=1;    _nop_();    Scl=1;    _nop_();    Sda=0;    _nop_();    Scl=0;   }   /*------------------------------------------------                     停止IIC總線 ------------------------------------------------*/   void Stop(void)   {    Sda=0;    _nop_();    Scl=1;    _nop_();    Sda=1;    _nop_();    Scl=0;    }   /*------------------------------------------------                    應(yīng)答IIC總線 ------------------------------------------------*/    void Ack(void)    {     Sda=0;         _nop_();         Scl=1;         _nop_();         Scl=0;         _nop_();         }  /*------------------------------------------------               發(fā)送一個字節(jié) ------------------------------------------------*/          void Send(unsigned char Data)          {            unsigned char BitCounter=8;           unsigned char temp;            do             {                  temp=Data;                  Scl=0;                  _nop_();                  if((temp&0x80)==0x80)                     Sda=1;                  else                     Sda=0;                          Scl=1;                         temp=Data<<1;                         Data=temp;                         BitCounter--;                   }           while(BitCounter);               Scl=0;           }  /*------------------------------------------------                     寫入DA數(shù)模轉(zhuǎn)換值 ------------------------------------------------*/           void DAC(unsigned char Data)           {                    Start();                    Send(AddWr); //寫入芯片地址                    Ack();                    Send(0x40);  //寫入控制位,使能DAC輸出                    Ack();                    Send(Data);  //寫數(shù)據(jù)                    Ack();                    Stop();                              }           void fmg(void)//fm關(guān)          {                 Fm=1;        //                關(guān) fm          }                  void cmg(void)//數(shù)碼管鎖存函數(shù)                   關(guān)時鐘DS1302         {         dula=1;         P0=0x00;         dula=0;         wela=1;         P0=0x00;         wela=0;         RST=0;                //                關(guān)時鐘DS1302         } /*------------------------------------------------                    主程序 ------------------------------------------------*/         void main()         {          unsigned char num;                   //DA數(shù)模輸出變量    Init_Timer1();          cmg();//數(shù)碼管鎖存          fmg();          while(1)            {         DAC(num);       //DA輸出,可以用LED模擬電壓變化                    num++;          //累加,到256后溢出變?yōu)?,往復(fù)循環(huán)。顯示在LED上亮度逐漸變化                    mDelay(20);     //延時用于清晰看出變化            }         }
作者: zl2168    時間: 2018-9-4 07:19
rdsfds 發(fā)表于 2018-9-3 23:01
好的 謝謝   可以給個鏈接嗎

《80C51單片機(jī)仿真設(shè)計實(shí)例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1
實(shí)例85  PCF8591 I2C串行A-D(1602顯示)
仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
作者: rdsfds    時間: 2018-9-4 12:33
人中狼 發(fā)表于 2018-9-3 23:00
在網(wǎng)上找個例程吧,調(diào)通了,再回頭來看自己的程序錯在哪,IIC要確定地址是否正確,另外粗看了一下,你的程 ...

respons()  這個應(yīng)該是應(yīng)答時序吧
作者: rdsfds    時間: 2018-9-4 12:35
zl2168 發(fā)表于 2018-9-3 21:47
給你介紹一個正確有效看得懂的案例,自己對照查錯吧!
實(shí)例85  PCF8591 I2C串行A-D(1602顯示)

非常感謝
作者: rdsfds    時間: 2018-9-4 13:11
yang陽 發(fā)表于 2018-9-4 00:03
/*------------------------------------------------                     啟動IIC總線 ----------------- ...

iic 信號保持時間不是要4微秒以上嗎    我的12M晶振一個空指令不是才1微妙嗎   這樣也可嗎?
作者: rdsfds    時間: 2018-9-4 17:54
大佬們  iic協(xié)議的應(yīng)答和非應(yīng)答是什么意思  沒太理解
應(yīng)答是主機(jī)發(fā)給從機(jī)數(shù)據(jù)結(jié)束后,從機(jī)發(fā)給主機(jī)的信號嗎?還是不管是誰發(fā)送數(shù)據(jù)都是接收方給發(fā)送方   發(fā)送的信號

非應(yīng)答是主機(jī)接收到數(shù)據(jù)后,給從機(jī)發(fā)送非應(yīng)達(dá)信號嗎?還是說數(shù)據(jù)未接收成功,接收方給發(fā)送方發(fā)送的信號?   

網(wǎng)上太多結(jié)果了不知道那個是正確,求解答
作者: xzf586    時間: 2018-9-15 08:07
rdsfds 發(fā)表于 2018-9-4 17:54
大佬們  iic協(xié)議的應(yīng)答和非應(yīng)答是什么意思  沒太理解
應(yīng)答是主機(jī)發(fā)給從機(jī)數(shù)據(jù)結(jié)束后,從機(jī)發(fā)給主機(jī)的信號 ...

請參閱http://www.zg4o1577.cn/bbs/dpj-132121-1.html




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 69电影网| 日韩一区精品 | 成人中文字幕在线观看 | 一级毛片网 | 国产精品视频网 | 亚洲美女网站 | 五月婷婷婷 | 欧美激情综合网 | 日韩精品无码一区二区三区 | 亚洲成网站 | 少妇诱惑av| 97视频在线观看网站 | 日韩不卡视频在线观看 | 亚洲毛片在线 | 国产精品一区二区在线免费观看 | 97精品超碰一区二区三区 | 黄色精品 | 国内精品久久久久久久 | 小视频你懂得 | 午夜精品一区 | 成人黄色av | 久国产视频 | 亚洲欧美日韩在线 | 成人精品在线 | 熟女毛片| 久久成人一区 | 日韩中文字幕视频 | 亚洲高清在线免费观看 | 午夜免费电影院 | 欧美精品在线免费 | 欧美极品在线视频 | 一级a毛片 | 一级片av | 91最新视频 | 热久久久| 成人在线播放网址 | 欧美日韩一本 | 亚洲精品久久久久久久久久久久久 | 97综合在线 | 高清国产午夜精品久久久久久 | 超碰在线亚洲 |