蓝桥杯单片机蓝桥杯单片机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 的恢复时间。

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

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

  1. 蓝桥杯单片机模块代码(AT24C02)(代码+注释)

    本模块是上电可擦除EEPROM,用于存储需要的数据.与上一节使用的底层代码相同,运用同一个总线,其操做顺序与PCF8591除第二步几乎完全一样.相同部分具体可看:蓝桥杯单片机模块代码(PCF8591) ...

  2. 蓝桥杯单片机DS18b20单总线测温模块常见问题解决

    蓝桥杯单片机DS18b20单总线测温模块常见问题解决 有道是:"溪水声声留我住,梅花朵朵唤人回" DS18b20测温模块作为一个比较简单.稳定的蓝桥杯单片机外设模块, 使用时却经常 ...

  3. 蓝桥杯单片机模块代码(DS1302时钟芯片)(代码+注释)

    最近两天做项目耽误了,现在继续补 引脚图: 单片机内部连接方式 : 官方提供底层代码,弄懂原理即可: #include <reg52.h> #include <intrins.h&g ...

  4. 蓝桥杯单片机必备代码(零基础也适合)

    1.选择不同接口代码,传参4是LED小灯接口,5是蜂鸣器继电器,6是数码管位置,7是数码管显示的数值 //选择接口 void SelectHC573(unsigned char n) {switch( ...

  5. 蓝桥杯单片机DS1302时钟芯片驱动代码注释

    蓝桥杯单片机DS1302时钟芯片驱动代码之前的疑惑注释了下 /* DS1302 芯片包含一个 实时时钟/日历和 31 字节的静态 RAM. 与时钟/RAM 通讯只需要三根线: CE,I/O (数据线) ...

  6. 【蓝桥杯单片机11】单总线温度传感器DS18B20的基本操作

    [蓝桥杯单片机11]单总线温度传感器DS18B20的基本操作 广东职业技术学院 欧浩源 单总线数字温度传感器DS18B20几乎成了各类单片机甚至ARM实验板的标配模块来,在蓝桥杯的往届省赛和国赛中,这 ...

  7. 蓝桥杯单片机(九)DS18B20温度测量(四位小数和负数显示)

    上一次讲了DS18B20的整数温度显示 蓝桥杯单片机(八)DS18B20温度测量(整数显示) 但近几年有出题小数部分的温度显示,首先打开DS18B20的数据手册,如图 通过这张表,我就知道读取数据时, ...

  8. 【蓝桥杯】第九届蓝桥杯单片机国赛 代码程序

    第九届蓝桥杯单片机国赛 程序 题目 hex文件 代码 工程文件 B站视频 更多资料 题目 历届的省赛和国赛的题目我已经在前面的文章(点击查看)里给大家分享了(网盘资源),需要的话,直接去下载,我在这里 ...

  9. 蓝桥杯单片机之DS18B20温度传感器

    蓝桥杯单片机之DS18B20温度传感器 简述: 根据提供的芯片数据手册可以获取的信息: ROM操作命令: 存储器操作命令 温度转换及温度获取 温度寄存器格式: 获取温度的具体操作 温度数据处理与数码管 ...

最新文章

  1. c语言结构体中的ps,练习结构体的时候出错,(ps有两个函数还没写)
  2. php sprintf u,PHP sprintf()格式化用法详解
  3. 【鬼网络】之NFS共享服务
  4. python源码编译安装 gb18030_源代码编译安装Python3.5.2
  5. Mybatis—注解开发
  6. SpringBoot 整合ActiveMQ_企业实战
  7. django+nginx+uwsgi项目部署文档整理
  8. Java开发全套学习!java微服务网关
  9. 二维 三维 向量vector 定义,初始化
  10. velocity(vm)模板引擎学习介绍及语法
  11. 查看字符串的编码chardet
  12. 用 C# 绘制曲线图(Curve图,增加自动适应和多曲线绘制)
  13. Linux期末考试试题长沙理工,Linux期末考试试题8套(含答案)
  14. 思科认证和华为认证哪个更香?
  15. DOS系统下控制串口(1)
  16. 什么是webservice
  17. [架构之路-32]:目标系统 - 系统软件 - Linux OS用户空间程序的启动、关闭、监管 -- init进程
  18. 网页内嵌的视频添加 vtt 外挂字幕
  19. Java之png图片工具类
  20. c语言奇遇之初见函数

热门文章

  1. websphere一直安装部署_WebSphere集群安装配置及部署应用说明
  2. ElementUI+Java实现搜索提示列表
  3. 初探EntityFramework——空Code First模型
  4. LeetCode——1710. 卡车上的最大单元数
  5. redis启动没反应_Promethues如何针对Redis进行监控
  6. 网站设计软件linux,ubuntu下的网页设计 网页制作软件工具.pdf
  7. 如何查看Win11系统的版本号
  8. Mybatis源码分析之(四)mapper访问数据库的底层原理(代理方法中具体访问数据库的细节)
  9. META-INF目录是干啥用的?
  10. mysql中的comment用法