标题: STC89C52+LCD1602+DS18B20做的温度显示器 [打印本页]

作者: 2515361695    时间: 2017-10-5 11:13
标题: STC89C52+LCD1602+DS18B20做的温度显示器
[qq]2515361695[/qq]

制作出来的实物图如下:




单片机源程序如下:
  1. # include "bs18b20.h"
  2. # include "lcd1602.h"

  3. void delayds18b20(uint t)
  4. {
  5.    while(t--);
  6. }

  7. void init_ds18b20(void)
  8. {
  9.      uchar n;
  10.          DQ=1;
  11.          delayds18b20(8);
  12.          DQ=0;
  13.          delayds18b20(80);
  14.      DQ=1;
  15.          delayds18b20(10);
  16.      n=DQ;
  17.          delayds18b20(5);
  18. }

  19. void ds18b20write_byte(uchar dat)
  20. {
  21.      uchar i;
  22.          for(i=0;i<8;i++)
  23.      {
  24.          DQ=0;
  25.          DQ=dat&0x01;
  26.          delayds18b20(5);
  27.      DQ=1;
  28.                          dat>>=1;
  29.                         }       
  30.     delayds18b20(5);
  31. }       

  32. uchar ds18b20read_byte(void)
  33. {
  34.    uchar i,value;
  35.          for(i=0;i<8;i++)
  36.            {
  37.                    DQ=0;
  38.                          value>>=1;
  39.              DQ=1;
  40.                          if(DQ)
  41.                          value|=0x80;
  42.                    delayds18b20(5);
  43.                  }
  44.                  return value;
  45. }

  46. uchar readtemperture(void)
  47. {
  48.      uchar a,b;
  49.          init_ds18b20();
  50.          ds18b20write_byte(0xcc);//跳过ROM
  51.          ds18b20write_byte(0x44);//启动温度测量
  52.      delayds18b20(200);
  53.      init_ds18b20();
  54.      ds18b20write_byte(0xcc);//跳过ROM
  55.          ds18b20write_byte(0xbe);//启动温度测量
  56.          a=ds18b20read_byte();   //低位
  57.          b=ds18b20read_byte();   //高位
  58.          b<<=4;
  59.          b+=(a&0xf0)>>4;
  60.          return b;
  61. }

  62. void display()
  63. {
  64.     uchar temp;
  65.         temp=readtemperture();
  66.         write_com(0x80);
  67.         write_data('T');
  68.         write_data('e');
  69.         write_data('m');
  70.         write_data('p');       
  71.         write_data('e');
  72. ……………………

  73. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
LCD160显示温度.zip (36.1 KB, 下载次数: 125)





作者: 北风行    时间: 2018-5-7 20:58
l楼主,有偿发我邮箱1498500668@qq.com
作者: 无时崩溃    时间: 2018-5-8 14:03
感谢楼主分享
作者: clthegoat1    时间: 2018-5-8 15:27
感谢分享!!!!!
作者: 小猫猫爱吃鱼    时间: 2018-5-8 15:33
北风行 发表于 2018-5-7 20:58
l楼主,有偿发我邮箱

WIFI远程-智能浇花自动控制系统(毕设佳品)

http://www.51hei.com/bbs/dpj-112669-1.html




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1