【小实验】C51单片机 DS18B20温度显示实验
实验内容:
利用单总线技术和数码管动态显示的原理,要求实现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温度显示实验相关推荐
- 单片机c语言数码管显示5,51单片机数码管显示实验报告(5页)-原创力文档
51单片机数码管显示实验 实验内容: 编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复. C语言程序 #include #de ...
- matlab ds18b20 单片机,基于51单片机ds18b20温度检测————设计报告.doc
基于51单片机ds18b20温度检测----设计报告 课程名称: 微机原理课程设计 题 目: 温度检测课程设计 摘要 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为 ...
- 基于51单片机1602温度显示时钟
基于51单片机LCD1602温度显示时钟 要在1602上显示时间和温度先要了解1602是如何显示的.详情可以参考我之前的文章基于51单片机1602显示 :时间显示可以用时钟芯片DS1302,但是此次我 ...
- 实验八、 数码管显示实验
实验八. 数码管显示实验 1.实验目的 学习"七段共阴极数码管"显示的基本原理: 掌握通过并行接口芯片控制多个数码管显示的方法. 2.实验内容 用一片8255接口芯片的A口和B口分 ...
- 51单片机DS18B20温度驱动
51单片机DS18B20温度传感器驱动,仅有.h文件,无.c文件. /***************************************************************** ...
- c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...
C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟 学 号: 班 级: 自动化10班 姓 名: 张 指导老师: 胡 2012.12 单片机核心板实验要求 流水灯实验 实验目的: 简单I/O引 ...
- 基于51单片机LCD1602温度显示(DS18B20测温)
基于51单片机DS18B20测温 要在1602上显示温度先要了解1602是如何显示的.详情可以参考我之前的文章基于51单片机1602显示 DS18B20是美国DALLAS半导体公司推出的第一片支持&q ...
- 单片机实验装置,单片机课程教学配套实验设备
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上.相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备.单片机采用超大规模集成电路技术把具有数据处 ...
- 单片机彩灯移动实验_单片机课程设计彩灯实验.doc
单片机课程设计彩灯实验 彩灯控制器设计 1.项目要求及参数 1.1用指令语句实现对C51的控制,从而实现对彩灯变化的控制. 1.2用定时器控制彩灯变化,用语句查询方式实现程序设计. 1.3用定时器控制 ...
最新文章
- 打造属于自己的underscore系列 ( 一 )
- JAVA动态读取xml_Java动态生成和解析xml文件步骤详解
- 月薪30k~50k,这个领域的人才正在被疯抢!
- ERROR:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 解决方案
- RateLimiter 的底层实现是啥?
- 【Win 10 应用开发】获取本机的IP地址
- HTTP 三次握手 建立连接 和 四次握手断开连接
- 【网络安全】Linux内核部分文件分析
- 在div中显示html_HTML基础知识之DIV
- 第1章-导言-习题1.13-1.17
- 2021 年 CNCF 和开源速度的年终报告
- C++——构建单链表的方法
- jquery导航,按钮等特效 - apycom
- 【CCCC】L2-005 集合相似度 (25分),维护set数组去重,比较统计
- 推荐一个CSLab------英真时代(非广告,真心的)
- lisp调用dcl单选框_AutoLISP单选按钮RADIO_BUTTON设计插入图块
- linux百分比查看文件,Linux 如何查看内存使用率百分比?
- 动环监控系统的监控对象有哪些?动环监控系统作用
- java 分布式缓存 开源_Java开源分布式键-值缓存系统Voldemort
- 苏州计算机英语怎么说,苏州用英语怎么说,苏州的英语单词