蓝桥杯之驱动代码解析

简介: 蓝桥杯之驱动代码解析

前言

本文主要带大家了解驱动代码,以及比赛官方在驱动代码下的套。

一、DS18B20

官方下套点:

//单总线延时函数
void Delay_OneWire(unsigned int t)  //STC89C52RC
{
  t*=11;
  while(t--);
}

此函数官方会把t*=11删除,大家在比赛时记得把这个写上,忘记写上这个会导致数据读取错误。

自己编写代码部分:

float read_temp()
{
  float temp;//定义一个float类型变量(读取出来的温度是小数)
  unsigned char low,high;//(定义温度高8位和低8位)
  init_ds18b20();//初始化DS18B20
  Write_DS18B20(0xcc);//忽略rom指令
  Write_DS18B20(0x44);//温度转换指令
  Delay_OneWire(200);
  init_ds18b20();
  Write_DS18B20(0xcc);//忽略rom指令
  Write_DS18B20(0xbe);//读取暂存器的内容
  low=Read_DS18B20();//读出温度低8位
  high=Read_DS18B20();//读出温度高8位
  temp=(high<<8|low)*0.0625;//得到实际温度值
  return temp;
}

编写好上面函数我们在获取温度时就可直接调用此函数得到温度值。

有的朋友对0.0625可能不是很理解,我们从DS18B20里面读取出来的只不过是16位二进制数,并不是我们想要的十进制温度值。加上0.0625即可转为我们想要的温度值。(有其他想法的朋友可以告诉我)

二、IIC

1.IIC通信协议

IIC通信协议是常用的一种多主设备协议,通信过程中有一根SDA数据线和一根SCL时钟线连接各个设备,一个IIC总线上可挂接多个主设备和从设备。

下面的函数都要求我们自己编写。

2.读写AT24C02

//AT24C02写函数
void Write_24C02(unsigned char addr, unsigned char dat)
{
  IIC_Start();          //起始信号          
  IIC_SendByte(0xa0);       //设备写地址
  IIC_WaitAck();          //等待应答
  IIC_SendByte(addr);       //发送内存字节地址
  IIC_WaitAck();          //等待应答
  IIC_SendByte(dat);        //写入目标数据
  IIC_WaitAck();          //等待应答
  IIC_Stop();           //停止信号
}
//AT24C02读函数
unsigned char Read_24C02(unsigned char addr)
{
  unsigned char data;
  IIC_Start();          //起始信号      
  IIC_SendByte(0xa0);       //设备写地址
  IIC_WaitAck();          //等待应答
  IIC_SendByte(addr);       //发送内存字节地址
  IIC_WaitAck();          //等待应答
  IIC_Start();          //起始信号
  IIC_SendByte(0xa1);       //设备读地址
  IIC_WaitAck();          //等待应答
  data = IIC_RecByte();     //读出目标数据
  IIC_Ack(0);           //产生非应答信号
  IIC_Stop();           //停止信号
  return data;
}

3.读取ADC

//addr:在单片机上面有三个电阻地址分别为0x01 0x02 0x03(没有记错的话)
unsigned char Read_ADC(unsigned char addr)
{
    unsigned char Data;       //保存AD采样值
  IIC_Start();          //起始信号
  IIC_SendByte(0x90);       //设备写地址
  IIC_WaitAck();          //等待应答
  IIC_SendByte(addr);       //设置控制寄存器
  IIC_WaitAck();          //等待应答
  IIC_Stop();           //停止信号
  IIC_Start();          //起始信号
  IIC_SendByte(0x91);       //设备读地址
  IIC_WaitAck();            //等待应答
  Data= IIC_RecByte();        //读取当前通道的数据
  IIC_Ack(0);           //产生非应答信号
  IIC_Stop();           //停止信号
  return Data;
}

注意点:很多朋友在同时使用AD和DA转换的时候会发现这两个不能同时使用,根据IIC通信协议规则需要对代码稍作改动。

比如只使用AD时读取Rb3的值写的是:Rb3=Read_ADC(0x03);

同时使用时要改为:Rb3=Read_ADC(0x43);


总结

驱动代码就讲到这里,大家有什么问题可以留言或者私信。记得帮忙点赞哦。


相关文章
|
算法 PyTorch 算法框架/工具
昇腾 msmodelslim w8a8量化代码解析
msmodelslim w8a8量化算法原理和代码解析
1543 5
|
搜索推荐 UED Python
实现一个带有昼夜背景切换的动态时钟:从代码到功能解析
本文介绍了一个使用Python和Tkinter库实现的动态时钟程序,具有昼夜背景切换、指针颜色随机变化及整点和半点报时功能。通过设置不同的背景颜色和随机变换指针颜色,增强视觉吸引力;利用多线程技术确保音频播放不影响主程序运行。该程序结合了Tkinter、Pygame、Pytz等库,提供了一个美观且实用的时间显示工具。欢迎点赞、关注、转发、收藏!
774 94
|
人工智能 文字识别 自然语言处理
保单AI识别技术及代码示例解析
车险保单包含基础信息、车辆信息、人员信息、保险条款及特别约定等关键内容。AI识别技术通过OCR、文档结构化解析和数据校验,实现对保单信息的精准提取。然而,版式多样性、信息复杂性、图像质量和法律术语解析是主要挑战。Python代码示例展示了如何使用PaddleOCR进行保单信息抽取,并提出了定制化训练、版式分析等优化方向。典型应用场景包括智能录入、快速核保、理赔自动化等。未来将向多模态融合、自适应学习和跨区域兼容性发展。
1368 29
|
机器学习/深度学习 传感器 人工智能
穹彻智能-上交大最新Nature子刊速递:解析深度学习驱动的视触觉动态重建方案
上海交大研究团队在Nature子刊发表论文,提出基于深度学习的视触觉动态重建方案,结合高密度可拉伸触觉手套与视觉-触觉联合学习框架,实现手部与物体间力量型交互的实时捕捉和重建。该方案包含1152个触觉感知单元,通过应变干扰抑制方法提高测量准确性,平均重建误差仅1.8厘米。实验结果显示,其在物体重建的准确性和鲁棒性方面优于现有方法,为虚拟现实、远程医疗等领域带来新突破。
483 32
|
自然语言处理 搜索推荐 数据安全/隐私保护
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
989 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
693 5
|
数据采集 监控 搜索推荐
深度解析淘宝商品详情API接口:解锁电商数据新维度,驱动业务增长
淘宝商品详情API接口,是淘宝开放平台为第三方开发者提供的一套用于获取淘宝、天猫等电商平台商品详细信息的应用程序接口。该接口涵盖了商品的基本信息(如标题、价格、图片)、属性参数、库存状况、销量评价、物流信息等,是电商企业实现商品管理、市场分析、营销策略制定等功能的得力助手。
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
5218 11
|
PHP 开发者 容器
PHP命名空间深度解析:避免命名冲突与提升代码组织####
本文深入探讨了PHP中命名空间的概念、用途及最佳实践,揭示其在解决全局命名冲突、提高代码可维护性方面的重要性。通过生动实例和详尽分析,本文将帮助开发者有效利用命名空间来优化大型项目结构,确保代码的清晰与高效。 ####
321 20
|
JSON JavaScript 前端开发
蓝桥杯web组赛题解析和杯赛技巧
本文作者是一位自学前端两年半的大一学生,在第十五届蓝桥杯Web组比赛中获得省一和国三。文章详细解析了比赛题纲,涵盖HTML、CSS、JavaScript、Echarts和Vue等技术要点,并分享了备赛技巧和比赛经验。作者强调了多写代码和解题思路的重要性,同时提供了省赛和国赛的具体流程及注意事项。希望对参赛者有所帮助。
1731 11

热门文章

最新文章

推荐镜像

更多
  • DNS