找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1437|回复: 2
打印 上一主题 下一主题
收起左侧

我这个是采用pcf8591实现AD采样功能的电压表,在开发板上可以实现,却仿真不出来,...

[复制链接]
跳转到指定楼层
楼主
我这个是采用pcf8591实现AD采样功能的电压表,但是不知道是电路图哪里出了问题,在开发板上可以实现,却仿真不出来,拜托大家帮看看
  1. #include"reg52.h"
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit SCL=P1^1;      //IIC接口
  6. sbit SDA=P1^2;
  7. ucharcodeseg[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff,0x40};
  8. uchar dis[8];
  9. void delayms(uchar ms)
  10. {
  11. uchar i;
  12. while(ms--)
  13. for(i=0;i<123;i++);
  14. }
  15. void Start(void)
  16. {
  17. SDA=1;
  18. SCL=1;
  19. _nop_();_nop_();_nop_();_nop_();_nop_();
  20. SDA=0;
  21. _nop_();_nop_();_nop_();_nop_();_nop_();
  22. SCL=0;
  23. }
  24. void Stop(void)
  25. {
  26. SDA=0;
  27. SCL=1;
  28. _nop_();_nop_();_nop_();_nop_();_nop_();
  29. SDA=1;
  30. _nop_();_nop_();_nop_();_nop_();_nop_();
  31. SCL=0;
  32. }
  33. void Ack(void)
  34. {
  35. SDA=0;
  36. SCL=1;
  37. _nop_();_nop_();_nop_();_nop_();_nop_();
  38. SCL=0;
  39. SDA=1;
  40. }
  41. void NoAck(void)
  42. {
  43. SDA=1;
  44. SCL=1;
  45. _nop_();_nop_();_nop_();_nop_();_nop_();
  46. SCL=0;
  47. SDA=0;
  48. }
  49. void SendByte(uchar dat)
  50. {
  51.   uchar i;
  52.   for(i=0;i<8;i++)
  53.   {
  54.     SDA=(bit)(dat&0x80);
  55.     SCL=1;
  56.     _nop_();_nop_();_nop_();_nop_();_nop_();
  57.     SCL=0;
  58.     dat<<=1;
  59.   }
  60. }
  61. uchar RcvByte(void)
  62. {
  63.   uchar i,dat=0;
  64.   SDA=1;
  65.   for(i=0;i<8;i++)
  66.   {
  67.     SCL=1;
  68.     dat<<=1;
  69.     if(SDA==1)dat|=0x01;
  70.     SCL=0;
  71.   }
  72.   return dat;
  73. }
  74. uchar PCF8591_ADC(uchar ch)
  75. {
  76.   uchar dat;
  77. Start();        //写入芯片地址
  78. SendByte(0x90);
  79. Ack();
  80. SendByte(0x40|ch);//写入选择的通道,
  81. Ack();
  82. Start();
  83. SendByte(0x91);    //读入地址
  84. Ack();
  85. dat=RcvByte();    //读数据
  86. NoAck();
  87. Stop();
  88. return dat;   //返回值
  89. }
  90. void main(void)
  91. {
  92. uchar temp0;
  93. uint temp1;
  94. uchar i = 2;
  95. dis[0]=11;
  96. dis[1]=11;
  97. dis[2]=11;
  98. dis[3]=11;
  99. dis[4]=11;
  100. while(1)
  101. {
  102. temp0 = PCF8591_ADC(2);
  103. temp1 = (uint)(temp0 * 196);
  104. for(i=0;i<8;i++)
  105. {
  106. switch(i)
  107. {
  108. case 5:dis[5]=(temp1/10000);  case 6:dis[6]=((temp1%10000)/1000);
  109. case 7:dis[7]=((temp1%1000)/100);
  110. }
  111. if(i==5)                 
  112. P0 = ((seg[dis[ i]])|0x80);                                 
  113. else
  114. P0 = seg[dis[ i]];
  115. P2 = i;
  116. delayms(1);
  117. }
  118. }
  119. }
复制代码


51hei图片20201218112206.png (330.11 KB, 下载次数: 126)

51hei图片20201218112206.png

附件5-开发板硬件原理图.pdf

85.57 KB, 下载次数: 9

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:836944 发表于 2020-12-18 15:23 | 只看该作者
仿真跟实物的原理图往往不是完全一样的
回复

使用道具 举报

板凳
ID:414556 发表于 2020-12-19 13:30 | 只看该作者
仿真重点在“仿”,所以跟真实的情况还是有差异的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表