蓝桥杯单片机DS18B20代码注释及部分时序图

蓝桥杯单片机蓝桥杯单片机DS18B20代码注释及部分时序图

#include<STC15F2K60S2.H>
#include<intrins.h>#define uchar unsigned char 
#define uint unsigned int	sbit DQ=P1^4;uchar code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
uchar yi,er,san,si,wu ,liu,qi,ba;void delayms(int ms);
void Delay500us();
void Delay100us();	
void allinit();
void keyscan();
void dsinit();
uchar read();
uchar temget();
void write(uchar dat);
void rel(uchar dong);
void display1(uchar yi,uchar er);
void display2(uchar san,uchar si);
void display3(uchar wu,uchar liu);
void display4(uchar qi,uchar ba);void main()
{uchar wendu;allinit();yi=11;er=11;san=11;si=11;wu=11;liu=0;qi=0;ba=0;while(1){wendu=temget();liu=wendu/100;qi=wendu%100/10;ba=wendu%10;display1(yi,er);display2(san,si);display3(wu,liu);display4(qi,ba);}
}uchar temget()
{uchar temp;uchar low,high;dsinit();//单总线上的所有处理均从初始化开始write(0xcc);//Skip ROM(跳过 ROM] [CCH]write(0x44);//Convert Temperature(温度变换) [44H]Delay500us();	Delay500us();	//转换需要一段时间,1000us足够了dsinit();//单总线上的所有处理均从初始化开始write(0xcc);//Skip ROM(跳过 ROM] [CCH]write(0xbe);//Read Scratchpad(读暂存存储器) [BEH]low=read();high=read();temp=high<<4;//0000 0101  =0101 0000temp |= (low>>4); //  1010 0110   0000 0110 | 0101 0000=0101 0110return temp;
}uchar read()
{uchar i;uchar dat;for(i=0;i<8;i++){DQ=0;_nop_();//12M这个是1us,All read time slots must be a minimum of 60 μs in duration with a minimum of a 1 μs recovery timebetween slotsdat>>=1;DQ=1;if(DQ==1){dat |= 0x80;}Delay100us();//60 < tLOW0 < 120  }return dat;
}void write(uchar dat)
{uchar i;for(i=0;i<8;i++){DQ=0;DQ=dat&0x01;//0100 0100 & 0000 0001 // 0000 0001Delay100us();DQ=1;dat>>=1;//dat=dat>>1;//1001 0000//0010 0001}
}void dsinit()
{DQ=0;Delay500us();DQ=1;Delay500us();
}void Delay100us()		//@11.0592MHz
{unsigned char i, j;_nop_();_nop_();i = 2;j = 15;do{while (--j);} while (--i);
}void Delay500us()		//@11.0592MHz
{unsigned char i, j;_nop_();_nop_();i = 6;j = 93;do{while (--j);} while (--i);
}void delayms(int ms)
{int i,j;for(i=ms;i>0;i--)for(j=845;j>0;j--);
}void allinit()
{P2=0XA0;P0=0X00;//关闭蜂鸣器,继电器P2=0X80;P0=0XFF;//关闭LED灯P2=0XC0;P0=0XFF;//选择所有数码管P2=0XFF;P0=0XFF;//关闭所有数码管
}void display1(uchar yi,uchar er)
{P2=0XC0;//打开位选573   U8P0=0X01;//选择第一个数码管P2=0XFF;//打开段选573   U7P0=tab[yi];delayms(1);P2=0XC0;//打开位选573   U8P0=0X02;//选择第二个数码管P2=0XFF;//打开段选573   U7P0=tab[er];delayms(1);
}	void display2(uchar san,uchar si)
{P2=0XC0;//打开位选573   U8P0=0X04;//选择第三个数码管P2=0XFF;//打开段选573   U7P0=tab[san];delayms(1);P2=0XC0;//打开位选573   U8P0=0X08;//选择第四个数码管P2=0XFF;//打开段选573   U7P0=tab[si];delayms(1);
}void display3(uchar wu,uchar liu)
{P2=0XC0;//打开位选573   U8P0=0X10;//选择第一个数码管P2=0XFF;//打开段选573   U7P0=tab[wu];delayms(1);P2=0XC0;//打开位选573   U8P0=0X20;//选择第一个数码管P2=0XFF;//打开段选573   U7P0=tab[liu];delayms(1);
}void display4(uchar qi,uchar ba)
{P2=0XC0;//打开位选573   U8P0=0X40;//选择第一个数码管P2=0XFF;//打开段选573   U7P0=tab[qi];delayms(1);P2=0XC0;//打开位选573   U8P0=0X80;//选择第一个数码管P2=0XFF;//打开段选573   U7P0=tab[ba];delayms(1);
}

 

 

执行序列(通过单线总线端口访问 DS18B20 )

 

步骤1. 初始化

步骤2. ROM 操作指令

步骤3. DS18B20 功能指令

 

每一次 DS18B20 的操作都必须满足以上步骤,若是缺少步骤或是顺序混乱,器件将不会返回值。

例如这样的顺序:发起 ROM 搜索指令[F0h]和报警搜索指令[ECh]之后,总线控制器必须返回步骤 1。

 

初始化

通过单总线的所有执行操作处理都从一个初始化序列开始。

初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。

存在脉冲让总线控制器知道 DS18B20 在总线上且已准备好操作

 

两个读周期间至少 1us 的恢复时间。

 

详细英文说明书上传至我的资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯单片机stc15f2k60s2 中断函数代码模板注释

用到哪些寄存器&#xff1f; 中断使能寄存器// EA1&#xff08;总使能开&#xff09;&#xff0c;ET01&#xff08;T0中断允许&#xff09; 定时器/计数器控制寄存器TCON// TH0和TL0设定值确定时间间隔&#…

Linux下文件的压缩和解压

文件的压缩和解压 Gzip格式的: tar -czvf 要存的名字.tar.gz 要打包的东西或目录 bzip2格式的: tar -cjvf 要存的名字.tar.bz2 要打包的东西或目录 压缩 解压 Gzip格式的:tar -xzvf 要解压的压缩文件 -C 解压到的目录 bzip2格式的:tar …

redhat下的iptables和firewalld 笔记

iptables命令怎么用&#xff1f; 网上看见的一个不错的图。 使用iptables命令配置的防火墙规则默认会在系统下一次重启时失效&#xff0c;如果想让配置的防火墙策略永久生效&#xff0c;还要执行保存命令&#xff1a; service iptables save 怎么理解firewalld&#xff1f; …

redhat挂载镜像软件包

挂载&#xff08;mounting&#xff09;是指由操作系统使一个存储设备&#xff08;诸如硬盘、CD-ROM或共享资源&#xff09;上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。 本质&#xff1a;针对某一设备, 分析出其文件系统结构, 并根据其文件系统类型调用…

chcon和semanage fcontext的坑

chcon后不能restorecon,不然就default_t:s0&#xff0c;samba_share_t没了 chcon semanage fcontext restorecon

Windows底层窗口的实现———学习笔记

基本概念 SDK 软件开发工具包&#xff08;Software Development Kit&#xff09;&#xff0c;一般都是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 API Windows操作系统提供给应用程序编程的接口&#xff08;Appl…

数据链路层差错检验循环冗余码过程图示

计算机网络数据链路层差错检验循环冗余码过程

如何把项目改成微服务项目_【日记】148微服务项目第18天

没有人天生就强、就弱或意志坚定。是后来才变强&#xff0c;后来才意志坚定。命运不在人身上&#xff0c;而在人四周。01一句话日记2020/9/702Day148每日总结关于图片上传&#xff0c;这个太常见了朋友圈&#xff0c;微头条都涉及到图片的上传以前我们也编写过对应的demo-当前项…

切比雪夫不等式及其证明

切比雪夫不等式及其证明 本质: 随机变量XXX偏离E&#xff08;X)E&#xff08;X)E&#xff08;X)越大&#xff0c;则其概率越小。 定理 设随机变量XXX具有数学期望E(X)μE(X)\muE(X)μ,方差D(X)σ2D(X)\sigma^2D(X)σ2,则对∀ϵ≥0\forall\epsilon\ge0∀ϵ≥0,不等式 P{∣X−μ…

启动马达接线实物图_电工外出接单从事配电柜接线、调试工作的三个要领

点击上方电工电气学习&#xff0c;关注并星标专业的电工电气领域自媒体&#xff0c;不容错过欢迎转发朋友圈&#xff0c;欢迎文末留言电工朋友在时间允许在情况下外出接单&#xff0c;一来可以提高自己的收入&#xff0c;再者还可以练练手艺。同时&#xff0c;外部环境不是我们…

anaconda3 tensorflow安装踩坑记(WIN10+tensorflow带gpu版本)

我看的网课讲解的视频用的是带gpu版本的tensorflow1.4.0&#xff0c;使用pip install tensorflow-gpu1.4.0&#xff0c;但是如果想直接用之前那个命令的话要使用anaconda老一些的版本&#xff0c;最新的版本不支持&#xff0c;点击这里下载anaconda 5.2.0最新的版本的会报错&am…

萤石云设备下线是什么导致的_什么原因导致化工设备腐蚀?腐蚀防护措施有哪些?...

关键词&#xff1a;化工设备腐蚀&#xff0c;化工设备腐蚀原因&#xff0c;化工设备腐蚀防护在化工行业中腐蚀破坏到处可见&#xff0c;腐蚀事故频频发生。这除了因腐蚀本身所具有的自发性质外&#xff0c;很大程度上是因为人们对腐蚀的危害性认识不足&#xff0c;对腐蚀防护的…

记一次win10下pycharm用tensorboard可视化不显示的问题解决

路径中有中文导致无法访问 使用pycharm中的Terminal命令行 tensorboard --logdir所在的目录 出现了 然后发现说是路径中不能存中文 于是 cmd命令行中因为没切换硬盘 我的数据存在d盘&#xff0c;但是我的cmd在c盘 localhost:6006不行 因为主机名本身就不是localhost…

getwayworker timer_Java定时器之Timer学习二

方法名称 schedule() 和 scheduleAtFixedRate() 的区别两种情况看区别首次计划执行的时间早于当前时间比如说&#xff1a;当前时间是 11:06&#xff0c; 但是首次计划执行的时间应该为&#xff1a; 11:00任务执行所需的时间超出任务的执行周期间隔比如说&#xff1a;我们执行的…

前后端分离 获取客户端ip_前后端分离交互

新开一个项目,对最近学的vue进行一个总结,这段时间把前后端通信做掉.后端:介绍下使用到的工具类请求工具: postman后端框架:springboot这里顺便做了个模块化,把通用工具集放common模块中.但是这里有个问题,其实我自己研究的时候没搞懂就是之前我做模块化的时候,在本地中, 我必须…

如何安装tensorflowGPU环境搭建(不报AVX2的警告)

TensorflowGPU版本无报错的安装安装pycharm安装Anaconda5.2.0装Visual Studio下载tensorflow&#xff0c;更新包&#xff0c;然后安装下载tensorflow更新一些包&#xff0c;不然会报错安装tensorflow gpu版本的包CUDA的下载和安装下载CUDA9.1安装pycharm 官网版本教育版本即可…

python实现dem输出三维模型_python DEM数据可视化

我们在进行地形拟合&#xff0c;或者进行地形分析的时候&#xff0c;尝尝需要将DEM数据可视化&#xff0c;来于其他数据进行比较。下面是pyrhon DEM数据可视化代码if __name__ __main__:filePath u"D:/test/fang" # 输入你的dem数据dataset gdal.Open(filePath)ad…

一道简单却易混淆的高等数学求极限题目

lim⁡x→∞(11x)x2ex\lim_{x \to \infty}\frac{(1\frac{1}{x})^{x^2}}{e^x} x→∞lim​ex(1x1​)x2​ 正确的解法&#xff1a; 一种错误的解法&#xff1a; 这是同学问我的&#xff0c;错在了哪里&#xff1f; lim⁡x→∞(11x)x2是否可以等于lim⁡x→∞ex?\lim_{x \to \in…

proe50安装方法64位_proe5.0安装方法64位

内容来自用户:陈新宏PROE5.0详细安装方法PROE5.0安装方法1&#xff1a;先安装虚拟光驱;.2.然后e68a8462616964757a686964616f31333433646431用虚拟光驱打开PROE5.0.如下图&#xff1a;3.然后点----工具-----加载到虚拟光驱。4.打开我的电脑出现了一个光驱。5.然后打开这个光驱。…