找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5682|回复: 4
打印 上一主题 下一主题
收起左侧

STC89C52+LCD1602+DS18B20做的温度显示器

[复制链接]
跳转到指定楼层
楼主


制作出来的实物图如下:




单片机源程序如下:
  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, 下载次数: 124)




评分

参与人数 2黑币 +55 收起 理由
l1050742394 + 5 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:321438 发表于 2018-5-7 20:58 | 只看该作者
l楼主,有偿发我邮箱1498500668@qq.com
回复

使用道具 举报

板凳
ID:192893 发表于 2018-5-8 14:03 来自手机 | 只看该作者
感谢楼主分享
回复

使用道具 举报

地板
ID:325105 发表于 2018-5-8 15:27 | 只看该作者
感谢分享!!!!!
回复

使用道具 举报

5#
ID:303383 发表于 2018-5-8 15:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表