欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1286|回復: 0
收起左側

基于DS18B20的測溫電路設計

[復制鏈接]
ID:1061648 發表于 2023-8-21 10:33 | 顯示全部樓層 |閱讀模式
功能要求:溫度實時檢測測量
代碼:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit DQ=P2^4;
  5. unsigned char flag;
  6. uchar code scan[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  7. uchar code table[13]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40,0x39,0x00};
  8. uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
  9. uchar dispbuf[8];
  10. uchar temper[2];


  11. void delay(unsigned int us)
  12. {
  13. while(us--);
  14. }


  15. void reset(void)
  16. {
  17. uchar x=0;
  18. DQ=1;
  19. delay(8);
  20. DQ=0;
  21. delay(80);
  22. DQ=1;
  23. delay(14);
  24. x=DQ;
  25. delay(20);
  26. }


  27. uchar readbyte(void)
  28. {
  29. uchar i=0;
  30. uchar dat=0;
  31. for (i=8;i>0;i--)
  32. {
  33. DQ=0;
  34. dat>>=1;
  35. DQ=1;
  36. if(DQ)
  37. dat|=0x80;
  38. delay(4);
  39. }
  40. return(dat);
  41. }
  42. void writebyte(unsigned char dat)
  43. {
  44. uchar i=0;
  45. for (i=8;i>0;i--)
  46. {
  47. DQ=0;
  48. DQ=dat&0x01;
  49. delay(5);
  50. DQ=1;
  51. dat>>=1;
  52. }
  53. delay(4);
  54. }


  55. void readtemp(void)
  56. {
  57. uchar a=0,b=0;
  58. reset();
  59. writebyte(0xCC);
  60. writebyte(0x44);
  61. reset();
  62. writebyte(0xCC);
  63. writebyte(0xBE);
  64. a=readbyte();
  65. b=readbyte();
  66. if(b>0x0f)
  67. {
  68. if(a==0)
  69. b=~b+1;
  70. else b=~b;
  71. flag=10;
  72. }
  73. else flag=12;
  74. temper[0]=a&0x0f;
  75. a=a>>4;
  76. temper[1]=b<<4;
  77. temper[1]=temper[1]|a;
  78. }
  79. void scandisp()
  80. {
  81. unsigned char i,value;
  82. for (i=0;i<8;i++)
  83. {
  84. P3=0xff;
  85. value=table[dispbuf[i]];
  86. if(i==3)
  87. value|=0x80;
  88. P0=value;
  89. P3=scan[i];
  90. delay(50);
  91. }
  92. }


  93. void main()
  94. {
  95. uchar temp,temp1;
  96. while(1)
  97. {
  98. scandisp();
  99. readtemp();
  100. temp1=temper[0];
  101. temp=temper[1];
  102. dispbuf[4]=ditab[temp1];
  103. dispbuf[1]=temp/100;
  104. dispbuf[3]=temp%10;
  105. temp=temp/10;
  106. dispbuf[2]=temp%10;
  107. dispbuf[0]=flag;
  108. dispbuf[5]=11;
  109. }
  110. }
復制代碼

仿真電路

仿真電路

6基于DS18B20的測溫電路設計.rar

141.8 KB, 下載次數: 11, 下載積分: 黑幣 -5

代碼文件

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表