蓝桥杯 单片机 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以及常见使用例子
媒体查询(media)介绍 媒体查询(media)是 CSS 中用来针对不同的设备特性(如屏幕尺寸、分辨率等)应用不同样式的一种技术。通过媒体查询,可以使页面在不同设备上呈现不同的布局,实现响…...
centos系统防火墙SELinux设置指令
SELinux(Security-Enhanced Linux)的配置可以通过一系列步骤和命令来完成。以下是一些基本的配置SELinux的方法和步骤: 一、查看SELinux状态 首先,你需要查看SELinux的当前状态。可以使用以下命令: getenforce 该命…...
记录如何在RK3588板子上跑通paddle的OCR模型
官网文档地址 rknn_zoo RKNPU2_SDK RKNN Model Zoo 一、PC电脑是Ubuntu22.04系统中完成环境搭建(板子是20.04) 安装模型转换环境 conda create -n rknn2 python3.10 conda activate rknn2 安装Ubuntu依赖包 su…...
通过AWS Bedrock探索 Claude 的虚拟桌面魔力:让 AI 代替你动手完成任务!
前言 大家好,昨夜Anthropic 发布了更新。现在 Claude 3.5 Sonnet(V2) 和 Claude 3.5 Haiku,以及名为 computer use 的新功能已经作为公开测试版发布了。 Introducing computer use, a new Claude 3.5 Sonnet, and Claude 3.5 Ha…...
Java面向对象编程高阶(一)
Java面向对象编程高阶(一) 一、关键字static1、static修饰属性2、静态变量与实例变量的对比3、static修饰方法4、什么时候将属性声明为静态的?5、什么时候将属性声明为静态的?6、代码演示 一、关键字static static用来修饰的结构…...
JavaScript 中 let 和 var 的区别
JavaScript 中 let 和 var 的区别 在 JavaScript 中,let 和 var 都是用来声明变量的关键字,但它们在作用域、提升(hoisting)和重新赋值方面存在显著差异。理解这些差异对于编写高效和无bug的JavaScript代码至关重要。 作用域 v…...
React第十一章(useReducer)
useReducer useReducer是React提供的一个高级Hook,没有它我们也可以正常开发,但是useReducer可以使我们的代码具有更好的可读性,可维护性。 useReducer 跟 useState 一样的都是帮我们管理组件的状态的,但是呢与useState不同的是 useReducer…...
VUE3实现古典音乐网站源码模板
文章目录 1.设计来源1.1 网站首页页面1.2 古典音乐页面1.3 著名人物页面1.4 古典乐器页面1.5 历史起源页面1.6 登录页面1.7 注册页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xc…...
1.nginx安装【Docker】
一、 拉取 最新 nginx 镜像 docker pull nginx二、 拷贝配置文件 2.1 目的 【数据持久化】容器被删除时,它内部的所有数据也会丢失。通过将数据目录挂载到宿主机,可以确保重要数据得到持久化保存 【方便数据管理和调试】通过卷挂载,可以直接…...
Linux -- 共享内存(1)
目录 共享内存 共享内存相关函数 ftok 函数 -- 获取 key 值 什么是 key? 如何生成 key ? 参数: 返回值: 封装: shmget 函数 -- 获取 shmid 值 什么是 shmid? shmid 和 key 的区别? …...
冒泡排序和二分查找--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支持多个序列化方式
前提纪要:因为业务变动,需要在原先只支持protobuf的前提序列化的前提下,新增正常的序列化读取数据所以在原先的基础上进行优化。文章用于记忆。 话不多说直接上代码 Configuration AutoConfigureAfter(RedisAutoConfiguration.class) Import…...
开源项目-拍卖管理系统
哈喽,大家好,今天主要给大家带来一个开源项目-拍卖管理系统 拍卖管理系统主要有拍卖品管理,我的拍卖,拍卖详情,拍卖品信息修改,发布拍卖品等功能 登录 拍卖商品管理 主要用于查看、竞拍拍卖商品的信息 我…...
Python小游戏14——雷霆战机
首先,你需要确保安装了Pygame库。如果你还没有安装,可以使用pip来安装: bash pip install pygame 代码如下: python import pygame import sys import random # 初始化Pygame pygame.init() # 设置屏幕大小 screen_width 800 scr…...
81页PPT | 企业数字化底座与数字化转型方案
方案内容涵盖了企业数字化转型的议程、集团管理分析类应用建设的现状与问题、数字化建设的目标、预期收益、总体架构、数据产生层、数据交换层、数据存储层、数据应用层、数据管控层等多个方面。方案详细描述了数据从产生、交换、存储到应用的全过程,以及如何通过数…...
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 之前的一门语言
写在前面 学习一个东西的一种很好的方法,就是去了解这个东西的历史。在我们学习 Go 的过程中,同样也可以去了解下在 Go 之前的一些事情。 内容 Rob Pike 是 Go 语言的作者之一,早年他在贝尔实验室工作,也是 Unix 团队的成员。 …...
世界酒中国菜与另可数字平台达成战略合作
世界酒中国菜与另可数字平台达成战略合作,共推行业发展新高度 近日,在行业内引起广泛关注的“世界酒中国菜”项目,与“另可”数字平台成功举行了战略合作签约仪式。这一重要合作不仅是双方发展历程中的重要里程碑,更是继世界酒中…...
ElasticSearch基础篇——概念讲解,部署搭建,使用RestClient操作索引库和文档数据
目录 一、概念介绍 二、Elasticsearch的Docker容器安装 2.1拉取elasticsearch的镜像文件 2.2运行docker命令启动容器 2.3通过访问端口地址查看部署情况 三、安装Kibana容器 3.1拉取Kibana镜像容器指令(默认拉取最新版本): 3.2拉取完…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
