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

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

QQ登錄

只需一步,快速開始

搜索
查看: 3654|回復(fù): 1
收起左側(cè)

基于DS18B20和51單片機(jī)的溫度采集系統(tǒng)仿真和源碼

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

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

單片機(jī)源程序如下:
  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;//定義控制數(shù)碼管的管腳
  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數(shù)字,后面為". - 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復(fù)位
  21. Delay_DS18B20(8); //稍做延時(shí)
  22. DQ = 0; //單片機(jī)將DQ拉低
  23. Delay_DS18B20(80); //精確延時(shí),大于480us
  24. DQ = 1; //拉高總線
  25. Delay_DS18B20(14);
  26. x = DQ; //稍做延時(shí)后,如果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; // 給脈沖信號(hào)
  36. dat>>=1;
  37. DQ = 1; // 給脈沖信號(hào)
  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); //跳過讀序號(hào)列號(hào)的操作
  64. WriteOneChar(0x44); //啟動(dòng)溫度轉(zhuǎn)換
  65. Init_DS18B20();
  66. WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作
  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()//數(shù)碼管掃描函數(shù)
  78. {
  79. P2=table[m];
  80. L1=1;//暫未1,如用三極管驅(qū)動(dòng)要改為0
  81. Delay_DS18B20(250);
  82. L1=0;//后關(guān)閉顯示

  83. P2=table[n];
  84. //P1=table[10];//第二位后顯示中間點(diǎn)
  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];//小數(shù)部分
  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. /*主函數(shù)部分程序*/
  102. void main()//主函數(shù)
  103. {
  104. unsigned int j;
  105. while(1)
  106. {
  107. j=ReadTemperature();//讀取溫度
  108. m=j/100;//分離出十位
  109. n=(j%100)/10;//分離出個(gè)位
  110. p=j%10;//分離出小數(shù)位
  111. display();//掃描數(shù)碼管
  112. }
  113. }
復(fù)制代碼

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


回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲第一中文字幕 | 99久久精品免费看国产高清 | 天天碰日日操 | 精品一区二区电影 | 国产网站在线免费观看 | 亚洲图片一区二区三区 | 国产91成人| 亚洲成av人影片在线观看 | 久久久精品网 | 欧美日韩在线一区二区三区 | 成人亚洲精品 | 久久99国产精一区二区三区 | 亚洲在线一区 | avhd101在线成人播放 | 亚洲精品中文字幕中文字幕 | 日本黄色免费片 | 久久国产精品无码网站 | 久久人人网 | 成人国产在线视频 | 性福视频在线观看 | 91精品国产91久久久久久丝袜 | 国产乱精品一区二区三区 | 中文成人在线 | 久草日韩 | 久久只有精品 | 国产精品综合网 | 亚洲精品粉嫩美女一区 | 狠狠操天天操 | 成人精品一区亚洲午夜久久久 | 一区在线观看视频 | 91精品国产91久久综合桃花 | 国产精品久久久久久一区二区三区 | 欧美aaaaaa| 狠狠躁天天躁夜夜躁婷婷老牛影视 | 综合色播| 亚洲欧洲精品一区 | 日本一区二区影视 | 免费观看黄色片视频 | 久久精彩视频 | 日本精品一区二区三区在线观看视频 | 91久久精品日日躁夜夜躁欧美 |