蓝桥杯模块练习之AD/DA

2023-05-16

蓝桥杯单片机比赛系列6AD/DA转换

  • AD/DA原理
    • 相关电路
    • pcf8591器件地址
  • 代码解释
    • 修改代码
    • AD自写代码
      • AD
      • DA

AD/DA原理

相关电路

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过pcf8591芯片实现ad转换。板子上ad采集主要采集滑动变阻器的电压值和与光敏电阻串联电阻的电压值。ad8位精度,采集电压0-5V对应的值为0-255。根据需要可以对读取的值进行调整。

da也通过pcf8591输出,对应引脚在外部引出,在20PIN中19位。da8位精度输出,输出0-255对应电压0-5V。
pcf8591与单片机的通讯协议是iic。iic相关原理这里不细说。简单说就是主器件发送指令,从器件应答。一般主器件先发送地址,从器件相应后,主器件继续发送命令或数据。

pcf8591器件地址

在这里插入图片描述
在板子上A2,A1,A0统统接地,都是,最后一位决定是读还是写操作。

代码解释

修改代码

要操作pcf8591就要把iic协议搞明白,赛点资源包里面给的iic.c源文件是基于51写的,15单片机比51单片机快8-12倍,可以将延迟提高10倍,当然本人经过多次验证,不改延迟也可以实现功能。

AD自写代码

AD

unsigned char readad(unsigned char add)
{	  
	  unsigned char temp;
	  IIC_Start();
	  IIC_SendByte(0x90);
	  IIC_WaitAck();
	  IIC_SendByte(add);
	  IIC_WaitAck();
	  IIC_Stop();

	  IIC_Start();
	  IIC_SendByte(0x91);
	  IIC_WaitAck();
	  temp=IIC_RecByte();
	  IIC_Stop();

	  return temp;
	  
}

在这里插入图片描述

在读取ad值得时候我们选择最简单得单通道对应就行,如果要读光敏电阻对应的,命令就是0x01,要读滑动变阻器,命令就是0x03。这里的命令相当于选ad采集的通道(地址)。
代码里先单片机发出0x90这个地址,意味着写指令,pcf8591接收到后发回应答信号,单片机再要读取pcf8591相应通道的地址。之后重新来,单片机发出0x91这个地址,意味着读数据,pcf8591接收到后发回应答信号,单片机接收pcf8591发送的数据,结束。

DA

在da输出时,命令为0x40。

void writedac(unsigned char dat)
{
	IIC_Start();
	IIC_SendByte(0x90); 
	IIC_WaitAck();
	IIC_SendByte(0x40); 
	IIC_WaitAck();
	IIC_SendByte(dat); 
	IIC_WaitAck();
	IIC_Stop();
}

可以使用万用表测量da输出电压。

驱动程序已给出,主函数里调用获取ad采集的电压值再显示在数码管上就不再贴出来了,和以前的程序类似。
注意:程序中读取滑动变阻器后延迟时间过短又读取光敏电阻可能会数据错乱,两个会正好相反。ad和da同时进行会造成da输出电压不正常,可以在readad函数中将IIC_SendByte(add);改为IIC_SendByte(add|0x40);,原因可自行想想。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯模块练习之AD/DA 的相关文章

  • STL空间配置器(一级配置器及二级配置器)

    前言 在我们日常使用STL中的容器时 xff0c 我们是几乎感受不到空间配置器的存在 xff0c 因为他一直在默默工作 xff0c 我们在之前的这一篇博客中也大概介绍过 xff1a C 43 43 xff08 21 xff09 vector
  • HTTP各个版本的区别

    HTTP 1 0 短连接版本 HTTP 1 0规定浏览器与服务器只保持短暂的连接 xff0c 即每一次请求都需要与服务器建立一次TCP连接 xff0c 服务器完成请求处理后立即断开TCP连接 服务器不会跟踪每个客户也不记录过去的请求 xff
  • 实时时钟芯片DS1307的使用及驱动代码

    DS1307实时时钟芯片的介绍及驱动代码 目录 一 DS1307是什么 xff1f 二 DS1307的功能 三 DS1307的寄存器 四 代码 1 读出数据 2 写入数据 3 时间初始化设置 4 获取当前时间 五 注意事项 总结 一 DS1
  • 单片机测量NTC热敏电阻温度的方法(含程序代码)

    1 NTC介绍 NTC是负温度系数热敏电阻 xff0c 随着温度的升高 xff0c NTC的阻值会呈非线性的下降 2 硬件连接 这里采用100k 3950的热敏电阻 xff0c 100k代表的是在25 下的标准阻值 xff0c 3950是热
  • 代码编写规范

    目录 1 头文件 2 函数 3 标识符命名与定义 3 1 通用命名规则 3 2 文件命名规则 3 3 变量命名规则 3 4 函数命名规则 3 5 宏的命名规则 4 变量 5 宏 常量 6 质量保证 7 程序效率 8 注释 9 排版与格式 1
  • 1.SolidWorks各模块的学习顺序

    1 草图模块 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 草图就是用线段画出零件的某一个视角的轮廓 草图是下面功能的基础 因为零件的三维建模 其实就是先画出草图 然后再通过拉伸 旋转 扫描 切除等命令生成
  • parser用法

    parser用法 导入库示例化添加参数解析参数设置属性 导入库 span class token keyword import span argparse 示例化 parser span class token operator 61 sp
  • roslaunch realsense2_camera rs_camera.launch和sudo apt-get install ros-melodic-rgbd-launch报错

    roslaunch realsense2 camera rs camera launch和roslaunch realsense2 camera rs rgbd launch报错 具体报错信息 roslaunch realsense2 ca
  • 如何设置cmake将外部文件作为资源添加到工作目录

    https stackoverflow com questions 46995733 how to set cmake in order to add txt files into working directory as resource
  • string、char*和char[]的转换

    char 和const char 的转换 const char 转 char xff08 1 xff09 为什么不能直接赋值 xff1f 这里你可以这么想 xff0c 假如const char类型字符串可以赋值给char类型 xff0c 那
  • 11-串口通信

    微控制器与外部设备的数据通信 xff0c 分为并行通信和串行通信 并行 xff1a 数据的各位同时发送或接受 xff0c 每个数据位使用一条导线 串行 xff1a 数据一位接一位地顺序发送或接收 串行通信有SPI IIC UART多种 xf
  • C语言编程规范设置 (vscode设置)

    1 打开vscode设置后 2 搜索format 3 把以下选项打上对勾 Editor Format On Paste Editor Format On Save Editor Format On Type 4 C Cpp 这一选项选择以下
  • c++ vscode 环境一键配置

    致谢 首先感谢原作者为我等初学者所做的软件 xff0c 其他文章讲了一堆的东西都没解决 xff0c 作者一个软件一步到位 xff0c 如果觉得不错的话可以star一下 xff0c 原作者视频地址 xff1a https www bilibi
  • 使用ESP8266实现单片机与上位机之间的wifi通信。

    使用ESP8266实现单片机与上位机之间的wifi通信 首先弄清楚8266的工作模式 xff0c 分别是 模式1 xff1a station xff0c 模式2 xff1a ap xff0c 模式3 xff1a station 43 ap
  • 【C 陷阱与缺陷】(四)连接

    码字不易 xff0c 对你有帮助 点赞 转发 关注 支持一下作者 微信搜公众号 xff1a 不会编程的程序圆 看更多干货 xff0c 获取第一时间更新 代码 xff0c 练习上传至 xff1a https github com hairrr
  • DIY无人机(匿名拓控者P2+F330机架)

    今年三月份的时候DIY过一个大疆NAZA 43 F450机架的无人机 xff0c 第一次体验DIY多旋翼无人机的全流程 xff0c 目的其实是为了后面更深入了解做准备 不然的话 xff0c 这钱买个大疆MINI3不香吗 xff1f DIY无
  • 在lammps模拟过程中的常用势函数设置

    文章目录 1 lj cut1 1 lj cut在in文件中使用方法1 2 lj cut在data文件中使用方法1 3 lj cut参数查询方法1 4 lj cut参数单位转换方法1 5 lj cut不同原子之间的参数1 6 lj cut参数
  • C语言十进制转16进制

    int DEC HEX uint32 t Dec int ram 61 0 整 int ray 61 0 余 uint32 t Hex 61 0x0 int i 61 0 do ram 61 Dec 16 ray 61 Dec 16 Dec

随机推荐

  • Windows系统下的Visual studio2019 安装 opencv4.5.1的安装

    OpenCV文档 xff1a https docs opencv org 4 5 1 examples html 安装OpenCV 4 5 1 xff0c 下载地址 https opencv org releases 下载完成后得到open
  • STM32串口初始化与使用详解(基于HAL库编程)

    STM32串口初始化与使用详解 串口简介串口初始化具体步骤串口收发理论代码执行 串口简介 USART Universal Synchronous Asynchronous Receiver Transmitter 通用同步 异步串行接收发送
  • STM32F103C8T6+OV7670(有FIFO和无FIFO版本)入门教程/使用总结(待续写,有问题可发在评论区中)

    前言 xff1a 本文为第一遍草稿 xff0c 错误会有点多 xff08 指技术性的东西会叫错等等 xff0c 欢迎纠正 xff09 xff0c 有需要可以先看看 OV7670还没有完全弄清楚 xff0c 目前已成功出图 xff08 指测试
  • 串口DMA实现接收--不定长度接收

    1 DMA接收配置 1 direction xff1a 数据传输的方向是外设 xff08 串口 xff09 gt 内存 xff08 DMA Buff xff09 xff1b 2 memory inc xff1a 内存自增 xff0c 内存指
  • ROS信息的收发

    图像信息的收发 图像信息发送 include lt ros ros h gt include lt image transport image transport h gt 用于image的订阅和发布 xff0c 并为压缩模式compres
  • 标定工具Kalibr安装、使用及标定结果评估方法

    单目相机标定 安装和配置 cd kalibr workspace source devel setup bash 如果使用april tag标定板 xff0c 设置aprilgrid yaml配置文件 标定数据bag采集 采集单目标定数据时
  • 2.什么是机械设计?

    机械设计是研究如何创造机械 以使其安全 可靠地工作等的内容 机械的定义是 一个组装的零件系统 可以以预定和受控的方式传递运动和能量 或更简单地说 一个控制力和运动的系统 那么 设计是又是什么呢 设计 设 计 设就是设想 从无到有的想象 想象
  • 手把手教你实现一个单链表

    目录 一 节点声明二 尾插三 链表打印四 头插五 尾删六 头删七 查找值八 指定插入九 指定删除十 销毁链表 一 节点声明 链表是一种数据结构 xff0c 用于数据的存储 如图 xff0c 每一个链表节点所在的内存空间是不延续的 xff0c
  • 使用多线程以及RandomAccessfile来实现多线程复制文件

    Class RandomAccessFile 介绍 该类的实例支持读取和写入随机访问文件 随机访问文件的行为类似于存储在文件系统中的大量字节 有一种游标 xff0c 或索引到隐含的数组 xff0c 称为文件指针 输入操作读取从文件指针开始的
  • 线程池中线程抛了异常如何处理?

    文章目录 1 模拟线程池抛异常2 如何获取和处理异常方案一 xff1a 使用 try catch方案二 xff1a 使用Thread setDefaultUncaughtExceptionHandler方法捕获异常方案三 xff1a 重写a
  • ROS放弃指南2:ROS创建工作空间及五种设置环境变量的方法

    参考链接 xff1a 中国大学MOOC中的机器人操作系统入门 https www icourse163 org course ISCAS 1002580008 古月居博客 www guyuehome com 运行环境 xff1a Ubunt
  • 百科不全书之ROS函数解析

    1 ROS的回调函数 span class token comment 单线程 span ros span class token operator span span class token operator span span clas
  • VsCode 运行后终端没有结果

    最近入手了VsCode很多都还不太清楚 xff0c 稍微记录一下碰到的一点问题 也是第一次写博客 VsCode 运行后终端没有结果 一 运行后终端没有结果二 终端中文乱码问题 一 运行后终端没有结果 在网上试了好多好多解决方法都没有用 xf
  • STM32CubeMX(05) 移植陀螺仪MPU6050的DMP库读取三轴角度,加速度

    文章目录 前言一 MPU6050是什么 xff1f 二 STM32CubeMX配置2 1 IIC配置2 2 开启中断2 3 硬件连接2 4 软件编写 三 导入DMP库3 1 keil配置3 2 添加头文件路径3 3 添加头文件3 4 添加初
  • 基于STM32的智能GPS定位系统(云平台、小程序)

    如需源码或成品可以私我 背景及目标 前阵子 xff0c 准确的说是好几个月前买了一辆电瓶车 xff0c 当时呢因为车停得很随意 xff0c 所以想给小电驴装一个GPS xff0c 一方面是防盗 xff0c 另一方面是为了测速和绘制骑行轨迹
  • 蓝桥杯大赛

    第十一届蓝桥杯单片机比赛心得 前期的准备十月份省赛十一月份国赛错过结果发布 想要做一点事情 xff0c 传承 前期的准备 本次蓝桥杯大赛由于疫情原因延迟了将近7个月举行 xff0c 原先是3月份举行 xff0c 拖到了10月份 xff0c
  • 蓝桥杯模块练习之关闭外设

    蓝桥杯单片机比赛系列1初探关闭外设 关闭LED关闭继电器和蜂鸣器 关闭LED 本节将会介绍板子上的最简单最基础的部分 比赛一般上来需要关闭无关外设 xff0c 蓝桥杯的板子比较特殊 xff0c 51上电默认P0 O1 P2 P3都是高电平
  • 蓝桥杯模块练习之温度传感器DS18B20

    蓝桥杯单片机比赛系列4温度传感器DS18B20 温度传感器DS18B20原理相关电路onewire总线几个需要知道的暂存器和命令 代码解释修改代码自写代码 实现代码 温度传感器DS18B20原理 相关电路 DS18B20遵循onewire总
  • 被锡膏坑了一把

    锡膏 61 锡珠 43 助焊剂 把锡膏放大来看如下图 我是去年买的一罐锡膏 xff0c 138度的 xff0c 用了一两次 xff0c 然后就放在哪里没动它 xff0c 盖子也盖好了 xff0c 没有放冰箱 今年又拿出来用 xff0c 用钢
  • 蓝桥杯模块练习之AD/DA

    蓝桥杯单片机比赛系列6AD DA转换 AD DA原理相关电路pcf8591器件地址 代码解释修改代码AD自写代码ADDA AD DA原理 相关电路 通过pcf8591芯片实现ad转换 板子上ad采集主要采集滑动变阻器的电压值和与光敏电阻串联