实验内容: 

利用单总线技术和数码管动态显示的原理,要求实现DS18B20温度采集并显示,能够设定温度值上限值27.5度,当超出上限值LED灯闪烁。

实验前可先用protues绘制出原理图:

仿真图如下:

keil c51代码: 

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P3^7;
sbit P2_0=P2^0;
sbit k2=P2^2;
sbit k4=P2^4;
sbit k3=P2^3;
uchar timp,F=0;
float c;
uchar a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
uchar b[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
void delay5(uchar n)
{
do{_nop_();_nop_();_nop_();n--;}while(n);
}void init_DS18B20()
{uchar x=0;DQ=0;delay5(120);DQ=1;delay5(16);delay5(80);
}uchar readbyte()
{uchar i=0;uchar date=0;for(i=8;i>0;i--){DQ=0;delay5(1);DQ=1;date>>=1;if(DQ)date|=0x80;delay5(11);}return(date);
}void writebyte(uchar dat){uchar i=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay5(12);DQ=1;dat>>=1;delay5(5);}}uchar retemp(){uchar a,b,tt;uint t;init_DS18B20();writebyte(0xCC);writebyte(0x44);init_DS18B20();writebyte(0xCC);writebyte(0xBE);a=readbyte();b=readbyte();t=b;t<<=8;t=t|a;if((t&0xf800)!=0xf800){ F=0;c=t*0.0625;tt=t*0.0625;timp=t*0.625-tt*10;}else{ F=1;t=(~t)+1;c=t*0.0625;tt=t*0.0625;timp=t*0.625-tt*10;}return tt;}void main(){uchar i,temp;delay5(1000);while(1){temp=retemp();if(c>=25&&F==0)P2_0=0;elseP2_0=1;for(i=0;i<15;i++){k2=1;k3=1;k4=1;if(F==0)P0=a[temp/100];elseP0=a[10];delay5(1000);// P2=0xfb;//11111011,0xfbk2=0;k3=1;k4=1;P0=a[temp%100/10];delay5(1000);//P2=0xf7;//11110111,0xf7k2=1;k3=0;k4=1;P0=b[temp%10];delay5(1000);//P2=0xf3;//11110011,0xf3k2=0;k3=0;k4=1;P0=a[timp];delay5(1000);}if(c>=25&&F==0)P2_0=1;elseP2_0=1;}}

代码仅供参考,希望大家能够在此基础上优化代码,而不是ctrl+c,ctrl+v。

谢谢!!!

【小实验】C51单片机 DS18B20温度显示实验相关推荐

  1. 单片机c语言数码管显示5,51单片机数码管显示实验报告(5页)-原创力文档

    51单片机数码管显示实验 实验内容: 编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复. C语言程序 #include #de ...

  2. matlab ds18b20 单片机,基于51单片机ds18b20温度检测————设计报告.doc

    基于51单片机ds18b20温度检测----设计报告 课程名称: 微机原理课程设计 题 目: 温度检测课程设计 摘要 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为 ...

  3. 基于51单片机1602温度显示时钟

    基于51单片机LCD1602温度显示时钟 要在1602上显示时间和温度先要了解1602是如何显示的.详情可以参考我之前的文章基于51单片机1602显示 :时间显示可以用时钟芯片DS1302,但是此次我 ...

  4. 实验八、 数码管显示实验

    实验八. 数码管显示实验 1.实验目的 学习"七段共阴极数码管"显示的基本原理: 掌握通过并行接口芯片控制多个数码管显示的方法. 2.实验内容 用一片8255接口芯片的A口和B口分 ...

  5. 51单片机DS18B20温度驱动

    51单片机DS18B20温度传感器驱动,仅有.h文件,无.c文件. /***************************************************************** ...

  6. c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...

    C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟 学 号: 班 级: 自动化10班 姓 名: 张 指导老师: 胡 2012.12 单片机核心板实验要求 流水灯实验 实验目的: 简单I/O引 ...

  7. 基于51单片机LCD1602温度显示(DS18B20测温)

    基于51单片机DS18B20测温 要在1602上显示温度先要了解1602是如何显示的.详情可以参考我之前的文章基于51单片机1602显示 DS18B20是美国DALLAS半导体公司推出的第一片支持&q ...

  8. 单片机实验装置,单片机课程教学配套实验设备

    单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上.相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备.单片机采用超大规模集成电路技术把具有数据处 ...

  9. 单片机彩灯移动实验_单片机课程设计彩灯实验.doc

    单片机课程设计彩灯实验 彩灯控制器设计 1.项目要求及参数 1.1用指令语句实现对C51的控制,从而实现对彩灯变化的控制. 1.2用定时器控制彩灯变化,用语句查询方式实现程序设计. 1.3用定时器控制 ...

最新文章

  1. 打造属于自己的underscore系列 ( 一 )
  2. JAVA动态读取xml_Java动态生成和解析xml文件步骤详解
  3. 月薪30k~50k,这个领域的人才正在被疯抢!
  4. ERROR:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 解决方案
  5. RateLimiter 的底层实现是啥?
  6. 【Win 10 应用开发】获取本机的IP地址
  7. HTTP 三次握手  建立连接 和  四次握手断开连接
  8. 【网络安全】Linux内核部分文件分析
  9. 在div中显示html_HTML基础知识之DIV
  10. 第1章-导言-习题1.13-1.17
  11. 2021 年 CNCF 和开源速度的年终报告
  12. C++——构建单链表的方法
  13. jquery导航,按钮等特效 - apycom
  14. 【CCCC】L2-005 集合相似度 (25分),维护set数组去重,比较统计
  15. 推荐一个CSLab------英真时代(非广告,真心的)
  16. lisp调用dcl单选框_AutoLISP单选按钮RADIO_BUTTON设计插入图块
  17. linux百分比查看文件,Linux 如何查看内存使用率百分比?
  18. 动环监控系统的监控对象有哪些?动环监控系统作用
  19. java 分布式缓存 开源_Java开源分布式键-值缓存系统Voldemort
  20. 苏州计算机英语怎么说,苏州用英语怎么说,苏州的英语单词

热门文章

  1. 【真人手指动画制作软件】万彩手影大师教程 | 自定义云端视频封面
  2. 基于WebGL架构的3D可视化平台—停车场管理系统
  3. 网易云祝福酷狗“狗年快乐”,大文娱之战下的音乐棋子
  4. Cloudreve私人云盘
  5. Winamp网页播放器
  6. 创业公司股份构成相关知识
  7. 2010年:中国IC新一轮造福年
  8. pytorch离线安装
  9. 处理MP3相关工具包
  10. TreeSize Free 软件简介