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

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

QQ登錄

只需一步,快速開始

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

單片機(jī)溫度采集DS18B20,在數(shù)碼管顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:150338 發(fā)表于 2022-4-8 18:50 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. /********************************************************************
  2. * 文件名  : 溫度采集DS18B20.c
  3. * 描述    :  該文件實(shí)現(xiàn)了用溫度傳感器件DS18B20對(duì)溫度的采集,并在數(shù)碼管上顯示出來。
  4. * 創(chuàng)建人  :
  5. * 版本號(hào)  : 2.0
  6. ***********************************************************************/
  7. #include<reg52.h>
  8. #define uchar unsigned char
  9. #define uint  unsigned int

  10. #define jump_ROM 0xCC
  11. #define start 0x44
  12. #define read_EEROM 0xBE

  13. sbit DQ = P2^3;            //DS18B20數(shù)據(jù)口

  14. unsigned char TMPH,TMPL;

  15. uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  16. /********************************************************************
  17. * 名稱 : delay()
  18. * 功能 : 延時(shí)函數(shù)
  19. * 輸入 : 無
  20. * 輸出 : 無
  21. ***********************************************************************/
  22. void delay(uint N)
  23. {
  24.         int i;
  25.         for(i=0; i<N; i++)
  26.         ;
  27. }

  28. /********************************************************************
  29. * 名稱 : Delay_1ms()
  30. * 功能 : 延時(shí)子程序,延時(shí)時(shí)間為 1ms * x
  31. * 輸入 : x (延時(shí)一毫秒的個(gè)數(shù))
  32. * 輸出 : 無
  33. ***********************************************************************/
  34. void Delay_1ms(uint i)//1ms延時(shí)
  35. {
  36.         uchar x,j;
  37.         for(j=0;j<i;j++)
  38.         for(x=0;x<=148;x++);       
  39. }
  40. /********************************************************************
  41. * 名稱 : Reset()
  42. * 功能 : 復(fù)位DS18B20
  43. * 輸入 : 無
  44. * 輸出 : 無
  45. ***********************************************************************/
  46. uchar Reset(void)
  47. {
  48.         uchar deceive_ready;
  49.         DQ = 0;
  50.         delay(29);
  51.         DQ = 1;
  52.         delay(3);
  53.         deceive_ready = DQ;
  54.         delay(25);
  55.         return(deceive_ready);
  56. }

  57. /********************************************************************
  58. * 名稱 : read_bit()
  59. * 功能 : 從DS18B20讀一個(gè)位值
  60. * 輸入 : 無
  61. * 輸出 : 從DS18B20讀出的一個(gè)位值
  62. ***********************************************************************/
  63. uchar read_bit(void)
  64. {
  65.         uchar i;
  66.         DQ = 0;
  67.         DQ = 1;
  68.         for(i=0; i<3; i++);
  69.         return(DQ);
  70. }

  71. /********************************************************************
  72. * 名稱 : write_bit()
  73. * 功能 : 向DS18B20寫一位
  74. * 輸入 : bitval(要對(duì)DS18B20寫入的位值)
  75. * 輸出 : 無
  76. ***********************************************************************/
  77. void write_bit(uchar bitval)
  78. {
  79. DQ=0;if(bitval==1)
  80. DQ=1;
  81. delay(5);
  82. DQ=1;
  83. }

  84. /********************************************************************
  85. * 名稱 : read_byte()
  86. * 功能 : 從DS18B20讀一個(gè)字節(jié)
  87. * 輸入 : 無
  88. * 輸出 : 從DS18B20讀到的值
  89. ***********************************************************************/
  90. uchar read_byte(void)
  91. {
  92.         uchar i,m,receive_data;
  93.         m = 1;
  94.         receive_data = 0;
  95.         for(i=0; i<8; i++)
  96.         {
  97.                 if(read_bit())
  98.                 {
  99.                         receive_data = receive_data + (m << i);
  100.                 }
  101.                 delay(6);
  102.         }
  103.         return(receive_data);
  104. }

  105. /********************************************************************
  106. * 名稱 : write_byte()
  107. * 功能 : 向DS18B20寫一個(gè)字節(jié)
  108. * 輸入 : val(要對(duì)DS18B20寫入的命令值)
  109. * 輸出 : 無
  110. ***********************************************************************/
  111. void write_byte(uchar val)
  112. {
  113.         uchar i,temp;
  114.         for(i=0; i<8; i++)
  115.         {
  116.                 temp = val >> i;
  117.                 temp = temp & 0x01;
  118.                 write_bit(temp);
  119.                 delay(5);
  120.         }
  121. }


  122. /********************************************************************
  123. * 名稱 : Main()
  124. * 功能 : 主函數(shù)
  125. * 輸入 : 無
  126. * 輸出 : 無
  127. ***********************************************************************/
  128. void main()
  129. {
  130.         uint temp;
  131.         P2 = 0x00;
  132.         while(1)
  133.         {
  134.                 Reset();
  135.                 write_byte(jump_ROM);
  136.                 write_byte(start);
  137.                 Reset();
  138.                 write_byte(jump_ROM);
  139.                 write_byte(read_EEROM);
  140.                 TMPL = read_byte();
  141.                 TMPH = read_byte();
  142.                 temp = TMPL / 16 + TMPH * 16;
  143.                 P0 = table[temp/10%10];
  144.                 P2 = 6;
  145.                 Delay_1ms(5);
  146.                 P0 = table[temp%10];
  147.                 P2 = 7;
  148.                 Delay_1ms(5);
  149.         }
  150. }
復(fù)制代碼


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 狠狠干天天干 | 精品欧美一区二区三区 | 91看片在线观看 | 天天弄天天操 | 欧美毛片免费观看 | 欧美一区二区三区在线 | 91在线观看免费 | 久久久久亚洲av毛片大全 | 国产成人亚洲精品 | 成人国产免费观看 | 在线国产一区 | 亚洲超碰在线观看 | www国产成人| 欧美激情综合 | 美女久久视频 | 亚洲欧美日韩国产综合 | 一区二区三区成人 | 国产午夜在线 | 成人中文字幕在线观看 | 国产精品久久久久久影院8一贰佰 | 在线欧美一区 | 美女视频久久 | 在线精品一区二区 | 蜜桃av鲁一鲁一鲁一鲁 | 亚洲精品在线视频 | 免费一级黄色电影 | 中文一区二区视频 | 91免费观看国产 | 成人av网站在线观看 | 91porn国产成人福利 | 岛国毛片 | 久久久久国色av免费观看性色 | 国产亚洲精品久久情网 | 男女深夜网站 | 欧美国产日韩一区二区三区 | 色噜噜狠狠色综合中国 | 成人国产一区二区三区精品麻豆 | 精品亚洲一区二区三区四区五区 | 国产精品揄拍一区二区 | 国产婷婷综合 | 亚洲国产成人精品女人久久久 |