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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3753|回復: 1
收起左側

基于DS18B20和51單片機的溫度采集系統仿真和源碼

[復制鏈接]
ID:338648 發表于 2018-5-26 13:08 | 顯示全部樓層 |閱讀模式
這是我最近做的一個項目。
用DS18B20單總線檢測溫度;
用STC89C51編程,
用4位數碼管顯示溫度值;
親測效果良好;
資料中有程序源代碼,還有PROTEUS仿真。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png

單片機源程序如下:
  1. #include<reg51.h>
  2. #define  uchar unsigned char
  3. #define uint unsigned int
  4. uchar m,n,p;
  5. sbit DQ=P3^4;//定義DS18b20的管腳

  6. sbit L1=P3^0;//定義控制數碼管的管腳
  7. sbit L2=P3^1;
  8. sbit L3=P3^2;
  9. sbit L4=P3^3;
  10. sbit LS=P3^6;
  11. unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
  12. 0x82,0xF8,0x80,0x90,0x7f,0xbf,0xa7};//0-9數字,后面為". - C"

  13. void Delay_DS18B20(int num)
  14. {
  15. while(num--) ;
  16. }

  17. void Init_DS18B20(void)
  18. {
  19. unsigned char x=0;
  20. DQ = 1; //DQ復位
  21. Delay_DS18B20(8); //稍做延時
  22. DQ = 0; //單片機將DQ拉低
  23. Delay_DS18B20(80); //精確延時,大于480us
  24. DQ = 1; //拉高總線
  25. Delay_DS18B20(14);
  26. x = DQ; //稍做延時后,如果x=0則初始化成功,x=1則初始化失敗
  27. Delay_DS18B20(20);
  28. }

  29. unsigned char ReadOneChar(void)
  30. {
  31. unsigned char i=0;
  32. unsigned char dat = 0;
  33. for (i=8;i>0;i--)
  34. {
  35. DQ = 0; // 給脈沖信號
  36. dat>>=1;
  37. DQ = 1; // 給脈沖信號
  38. if(DQ)
  39. dat|=0x80;
  40. Delay_DS18B20(4);
  41. }
  42. return(dat);
  43. }

  44. void WriteOneChar(unsigned char dat)
  45. {
  46. unsigned char i=0;
  47. for (i=8; i>0; i--)
  48. {
  49. DQ = 0;
  50. DQ = dat&0x01;
  51. Delay_DS18B20(5);
  52. DQ = 1;
  53. dat>>=1;
  54. }
  55. }

  56. unsigned int ReadTemperature(void)
  57. {
  58. unsigned char a=0;
  59. unsigned char b=0;
  60. unsigned int t=0;
  61. float tt=0;
  62. Init_DS18B20();
  63. WriteOneChar(0xCC); //跳過讀序號列號的操作
  64. WriteOneChar(0x44); //啟動溫度轉換
  65. Init_DS18B20();
  66. WriteOneChar(0xCC); //跳過讀序號列號的操作
  67. WriteOneChar(0xBE); //讀取溫度寄存器
  68. a=ReadOneChar(); //讀低8位
  69. b=ReadOneChar(); //讀高8位
  70. t=b;
  71. t<<=8;
  72. t=t|a;
  73. tt=t*0.0625;
  74. t= tt*10+0.5; //放大10倍輸出并四舍五入
  75. return(t);
  76. }

  77. void display()//數碼管掃描函數
  78. {
  79. P2=table[m];
  80. L1=1;//暫未1,如用三極管驅動要改為0
  81. Delay_DS18B20(250);
  82. L1=0;//后關閉顯示

  83. P2=table[n];
  84. //P1=table[10];//第二位后顯示中間點
  85. L2=1;
  86. Delay_DS18B20(250);
  87. L2=0;
  88. P2=table[10];
  89. L2=1;
  90. Delay_DS18B20(250);
  91. L2=0;

  92. P2=table[p];//小數部分
  93. L3=1;
  94. Delay_DS18B20(250);
  95. L3=0;

  96. P2=table[12];
  97. L4=1;
  98. Delay_DS18B20(250);
  99. L4=0;
  100. }
  101. /*主函數部分程序*/
  102. void main()//主函數
  103. {
  104. unsigned int j;
  105. while(1)
  106. {
  107. j=ReadTemperature();//讀取溫度
  108. m=j/100;//分離出十位
  109. n=(j%100)/10;//分離出個位
  110. p=j%10;//分離出小數位
  111. display();//掃描數碼管
  112. }
  113. }
復制代碼

所有資料51hei提供下載:
基于DS18B20和單片機的溫度檢測.zip (67.55 KB, 下載次數: 54)


回復

使用道具 舉報

ID:337888 發表于 2018-5-31 15:28 | 顯示全部樓層
仿真的怎么打開?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品视频免费在线观看 | 偷拍福利视频 | av黄色在线| 18色av| 国产欧美日韩在线 | 日韩有码在线观看 | 亚洲欧洲视频 | 日韩视频一区二区三区 | 国产精品国产三级国产 | 日本中文字幕在线 | 成人三级在线观看 | 最新av在线播放 | 免费视频毛片 | 羞羞的视频网站 | 五月av| 天天视频国产 | 青青在线 | 欧美激情一区二区三区 | 久草免费福利视频 | 成人午夜网站 | 伊人9999 | 日韩一区二区三区在线播放 | 欧美一级日韩一级 | 精品三级在线观看 | 老女人丨91丨九色 | av噜噜噜 | 国产欧美日韩在线 | 福利网站在线观看 | 黄色一级大片在线免费看国产一 | 日韩精品一| 成人午夜网站 | 国产亚洲天堂 | www.99色| www中文字幕| 成人在线视频观看 | 大乳女喂男人吃奶 | 亚洲激情欧美激情 | 成人在线观看网站 | 黄色片在线看 | 日韩免费视频一区二区 | 久久黄色免费视频 |