当前位置: 首页 > news >正文

蓝桥杯 单片机 DS1302和DS18B20

DS1302 时钟

时钟试题 常作为实验室考核内容

控制三个引脚

P17 时钟 P23输入 P13复位 其他已经配置好 

寄存器原理

定位地址 0x80地址

固定格式 0x57 5*10+7*1 =57

小时写入格式 不同 首位区分 A上午 P下午

0为24小时制 

1为12小时制 写入8小时 0x87 //1000 7 十二小时制 7*1=7 十二小时制 7点 

使用方法

追踪地址 

写入59秒 秒 地址 1000 0000 //0x80 传输数据 0x59 输入59秒

写入月份  月 地址  1000 1000//0x88 传输 0x99 输入9月

如下图 h为16进制后标 使用 0x80 = 80h

 写入2进制  


写入函数

void Write_Ds1302(unsigned char temp)
{unsigned char i;for(i=0;i<8;i++){SCK=0;//拉高数据得以传输进去SDA=temp&0x01;/*1010 00000000 0001兼并 都为1 传输 一0则0  不修改其他的地方*/temp>>=1;//扫过这8位数据SCK=1;//关门}
}

数据写入

void Write_Ds1302_Byte(unsigned char address,unsigned char dat) //地址写入 数据写入
{RST=0; _nop_();SCK=0; _nop_();RST=0; _nop_();Write_Ds1302(address);Write_Ds1302(dat);RST=0;
}

读取

unsigned char Read_Ds1302_Byte (unsigned char address)
{unsigned char i,temp=0x00; //temp接受数据RST=0; _nop_();SCK=0; _nop_();RST=0; _nop_();Write_Ds1302(address);for(i=0;i<8;i++){SCK=0;temp>>=1;if(SDA)temp|=0x80;SCK=1;    
/*temp 初始 0000 0000SDA       1010 1100|       《含义:若其中一个为0则变为1
*/}RST=0; _nop_();SCK=0; _nop_();RST=0; _nop_();SDA=0; _nop_();SDA=1; _nop_();return(temp);
}

void Set_Rtc(unsigned char* ucRtc) //写入
{unsigned char i;Write_Ds1302_Byte(0x80,0);for(i=0;i<3;i++)//写入时分秒Write_Ds1302_Byte(0x84-i*2,ucRtc[i]);/*Write_Ds1302_Byte(0x84,ucRtc[0]);时Write_Ds1302_Byte(0x82,ucRtc[1]);分Write_Ds1302_Byte(0x80,ucRtc[2]);秒*/Write_Ds1302_Byte(0x8e,1);
}void Read_Rtc(unsigned char* ucRtc)//读取
{unsigned char i;for(i=0;i<3;i++)ucRtc[i]=Read_Ds1302_Byte(0x85-i*2);}

DS18B20模块 

温度检测

高速暂存器

默认温度 85度 

用户字节分别为 上限 和下限

配置寄存器 

byte 2~4 读取字节

温度寄存器

输入

bit7—bit4 整数位 bit3—bit0 小数位

小数计算 后4位 1110 为8 因为这是小数位所以8的-1次方 为0.125

07D0h = 0000 0111 1101 0000

FFD0h   =  1111  1111 1101 0000

前5位0为正 1为负

报警 TH TL

比较整数位

改变报警标志位 置回

配置寄存器

配置精度 置位 设置精度

使用方法

1.初始化

2.rom操作 只有这一个芯片 

3.功能指令 读入序列号 定位 

ROM指令

初始化

单总线拉高 拉高完毕 返回低平

时序问题

接受高平 拉低信号 释放 读取低电平变化 初始化成功 释放总线

//总线延时函数
void Delay_OneWire(unsigned int t)
{t*=12; //原先1t *=12 则为t/12  若为12t则 有*=12 while(t--);
}

//DS18B20设备初始化
bit init_ds18b20(void)
{bit initflag=0;DQ=1;Delay_OneWire(12); //高DQ=0; Delay_OneWire(80); //低DQ=1;Delay_OneWire(10); //释放initflag =DQ;Delay_OneWire(5);  //读取0初始化成功 
}

晶振与周期 写入时间判断

跟晶振有关

指令周期为1us

写入函数

拉低时序不同 

void Write_DS18B20(unsigned char dat)
{unsigned char i;for(i=0;i<8;i++){DQ=0;DQ= data&0x01; 
/*dat    0101 1101 &0x01 检测 若同为1则拉入 写入程序
*/Delay_OneWire(5);DQ=1;dat>>=1 ;}Delay_OneWrie(5);
}

 读取时序

//读取字节
unsigned char Read_DS18B20(void)
{unsigned char i;unsigned char dat;for(i=0;i<8;i++){DQ=0;dat>>=1;
/**/DQ=1;if(DQ){dat  |=0x80;}Delay_OneWire(5)}return dat;
}

函数总览

//温度读取函数 
float rd_temperature(void)
{unsigned char low,high;     //返回高低八位init_ds18b20();    //初始化Write_DS18B20(0xcc);    //跳过ROMWrite_DS18B20(0x44);    //进行温度转换init_ds18b20();    //初始化Write_DS18B20(0xcc);    //跳过ROMWrite_DS18B20(0x44);    //读取温度low=Read_DS18B20();     //读取低high=Read_DS18B20();    //读取高return((high<<8)|low)/16.0; //精度换算 12位 
}

  乘以精度

按顺序读取 从上向下

初始上电时 默认为85度

可以在执行前 进行定义

void main()
{t=read_t();Delay750ms();System_Init();Timer0_Init();while (1){Key_Proc();Seg_Proc();Led_Proc();}
}

相关文章:

蓝桥杯 单片机 DS1302和DS18B20

DS1302 时钟 时钟试题 常作为实验室考核内容 控制三个引脚 P17 时钟 P23输入 P13复位 其他已经配置好 寄存器原理 定位地址 0x80地址 固定格式 0x57 5*107*1 57 小时写入格式 不同 首位区分 A上午 P下午 0为24小时制 1为12小时制 写入8小时 0x87 //1000 7 十二小时制 7…...

前端css-媒体查询@media以及常见使用例子

媒体查询&#xff08;media&#xff09;介绍 媒体查询&#xff08;media&#xff09;是 CSS 中用来针对不同的设备特性&#xff08;如屏幕尺寸、分辨率等&#xff09;应用不同样式的一种技术。通过媒体查询&#xff0c;可以使页面在不同设备上呈现不同的布局&#xff0c;实现响…...

centos系统防火墙SELinux设置指令

SELinux&#xff08;Security-Enhanced Linux&#xff09;的配置可以通过一系列步骤和命令来完成。以下是一些基本的配置SELinux的方法和步骤&#xff1a; 一、查看SELinux状态 首先&#xff0c;你需要查看SELinux的当前状态。可以使用以下命令&#xff1a; getenforce 该命…...

记录如何在RK3588板子上跑通paddle的OCR模型

官网文档地址 rknn_zoo RKNPU2_SDK RKNN Model Zoo 一、PC电脑是Ubuntu22.04系统中完成环境搭建(板子是20.04&#xff09; 安装模型转换环境 ​conda create -n rknn2 python3.10 conda activate rknn2 安装Ubuntu依赖包 su…...

通过AWS Bedrock探索 Claude 的虚拟桌面魔力:让 AI 代替你动手完成任务!

前言 大家好&#xff0c;昨夜Anthropic 发布了更新。现在 Claude 3.5 Sonnet&#xff08;V2&#xff09; 和 Claude 3.5 Haiku&#xff0c;以及名为 computer use 的新功能已经作为公开测试版发布了。 Introducing computer use, a new Claude 3.5 Sonnet, and Claude 3.5 Ha…...

Java面向对象编程高阶(一)

Java面向对象编程高阶&#xff08;一&#xff09; 一、关键字static1、static修饰属性2、静态变量与实例变量的对比3、static修饰方法4、什么时候将属性声明为静态的&#xff1f;5、什么时候将属性声明为静态的&#xff1f;6、代码演示 一、关键字static static用来修饰的结构…...

JavaScript 中 let 和 var 的区别

JavaScript 中 let 和 var 的区别 在 JavaScript 中&#xff0c;let 和 var 都是用来声明变量的关键字&#xff0c;但它们在作用域、提升&#xff08;hoisting&#xff09;和重新赋值方面存在显著差异。理解这些差异对于编写高效和无bug的JavaScript代码至关重要。 作用域 v…...

React第十一章(useReducer)

useReducer useReducer是React提供的一个高级Hook,没有它我们也可以正常开发&#xff0c;但是useReducer可以使我们的代码具有更好的可读性&#xff0c;可维护性。 useReducer 跟 useState 一样的都是帮我们管理组件的状态的&#xff0c;但是呢与useState不同的是 useReducer…...

VUE3实现古典音乐网站源码模板

文章目录 1.设计来源1.1 网站首页页面1.2 古典音乐页面1.3 著名人物页面1.4 古典乐器页面1.5 历史起源页面1.6 登录页面1.7 注册页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xc…...

1.nginx安装【Docker】

一、 拉取 最新 nginx 镜像 docker pull nginx二、 拷贝配置文件 2.1 目的 【数据持久化】容器被删除时&#xff0c;它内部的所有数据也会丢失。通过将数据目录挂载到宿主机&#xff0c;可以确保重要数据得到持久化保存 【方便数据管理和调试】通过卷挂载&#xff0c;可以直接…...

Linux -- 共享内存(1)

目录 共享内存 共享内存相关函数 ftok 函数 -- 获取 key 值 什么是 key&#xff1f; 如何生成 key &#xff1f; 参数&#xff1a; 返回值&#xff1a; 封装&#xff1a; shmget 函数 -- 获取 shmid 值 什么是 shmid&#xff1f; shmid 和 key 的区别&#xff1f; …...

冒泡排序和二分查找--go

冒泡排序的逻辑 二分查找的逻辑 func bubbleSort(arr *[5]int){//冒泡排序fmt.Println(*arr)temp : 0for j : len(*arr); j > 0; j-- {for i : 0; i < j-1; i {temp (*arr)[i]if((*arr)[i] > (*arr)[i1]){(*arr)[i] (*arr)[i1](*arr)[i1] temp}}} }func binaryF…...

springboot RedisTemplate支持多个序列化方式

前提纪要&#xff1a;因为业务变动&#xff0c;需要在原先只支持protobuf的前提序列化的前提下&#xff0c;新增正常的序列化读取数据所以在原先的基础上进行优化。文章用于记忆。 话不多说直接上代码 Configuration AutoConfigureAfter(RedisAutoConfiguration.class) Import…...

开源项目-拍卖管理系统

哈喽&#xff0c;大家好&#xff0c;今天主要给大家带来一个开源项目-拍卖管理系统 拍卖管理系统主要有拍卖品管理&#xff0c;我的拍卖&#xff0c;拍卖详情&#xff0c;拍卖品信息修改&#xff0c;发布拍卖品等功能 登录 拍卖商品管理 主要用于查看、竞拍拍卖商品的信息 我…...

Python小游戏14——雷霆战机

首先&#xff0c;你需要确保安装了Pygame库。如果你还没有安装&#xff0c;可以使用pip来安装&#xff1a; bash pip install pygame 代码如下&#xff1a; python import pygame import sys import random # 初始化Pygame pygame.init() # 设置屏幕大小 screen_width 800 scr…...

81页PPT | 企业数字化底座与数字化转型方案

方案内容涵盖了企业数字化转型的议程、集团管理分析类应用建设的现状与问题、数字化建设的目标、预期收益、总体架构、数据产生层、数据交换层、数据存储层、数据应用层、数据管控层等多个方面。方案详细描述了数据从产生、交换、存储到应用的全过程&#xff0c;以及如何通过数…...

R语言笔记(五):Apply函数

文章目录 一、Apply Family二、apply(): rows or columns of a matrix or data frame三、Applying a custom function四、Applying a custom function "on-the-fly"五、Applying a function that takes extra arguments六、Whats the return argument?七、Optimized…...

Newsqueak:在 Go 之前的一门语言

写在前面 学习一个东西的一种很好的方法&#xff0c;就是去了解这个东西的历史。在我们学习 Go 的过程中&#xff0c;同样也可以去了解下在 Go 之前的一些事情。 内容 Rob Pike 是 Go 语言的作者之一&#xff0c;早年他在贝尔实验室工作&#xff0c;也是 Unix 团队的成员。 …...

世界酒中国菜与另可数字平台达成战略合作

世界酒中国菜与另可数字平台达成战略合作&#xff0c;共推行业发展新高度 近日&#xff0c;在行业内引起广泛关注的“世界酒中国菜”项目&#xff0c;与“另可”数字平台成功举行了战略合作签约仪式。这一重要合作不仅是双方发展历程中的重要里程碑&#xff0c;更是继世界酒中…...

ElasticSearch基础篇——概念讲解,部署搭建,使用RestClient操作索引库和文档数据

目录 一、概念介绍 二、Elasticsearch的Docker容器安装 2.1拉取elasticsearch的镜像文件 2.2运行docker命令启动容器 2.3通过访问端口地址查看部署情况 三、安装Kibana容器 3.1拉取Kibana镜像容器指令&#xff08;默认拉取最新版本&#xff09;&#xff1a; 3.2拉取完…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...