51驱动PCF8591制作电压表

  • PCF8591模组介绍
    • 模块引脚及原理图
      • 具体地址和控制字节
      • 具体程序流程
      • 具体效果可参考下图
  • 小结

原文链接:https://www.yourcee.com/newsinfo/2928811.html

PCF8591模组介绍

PCF8591是单片,单电源低功耗8位CMOS数据采集期间,具有4个模拟输入,一个输出和一个串行I2C总线接口,3个地址引脚A0,A1,A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。此芯片可应用于电池供电设备,汽车,音响和TV应用方面的模拟数据采集,我今天使用的是直接做好的模组进行模组上自带变阻器的电压的采集可应用于制作电压表。具体模组图片如下。

点击图片购买

模块引脚及原理图


模块可自行配置跳线帽决定使用哪一路的AD转换以及配合控制字节进行转换,模块本身固定了A0,A1,A2的引脚直接接到GND也就是固定模组的器件地址为0X90,基准电压直接接到VCC因此基准电压为5V。

具体地址和控制字节

IIC总线系统中的每一片PCF8591通过发送有效地址到该器件来激活。该器件地址包括固定部分和可编程部分,期间地址包括固定部分和可编程部分,通过A0,A1,A2三个引脚电平来设置,地址的最后一位为读/写控制位。

控制字节:

具体程序流程


编写基本的IIC通信时序:

void Start_I2c()
{SDA=1;         /*发送起始条件的数据信号*/_Nop();SCL=1;_Nop();        /*起始条件建立时间大于4.7us,延时*/_Nop();_Nop();_Nop();_Nop();    SDA=0;         /*发送起始信号*/_Nop();        /* 起始条件锁定时间大于4μs*/_Nop();_Nop();_Nop();_Nop();       SCL=0;       /*钳住I2C总线,准备发送或接收数据 */_Nop();_Nop();
}/*******************************************************************结束总线函数
函数原型: void  Stop_I2c();
功能:     结束I2C总线,即发送I2C结束条件.
********************************************************************/
void Stop_I2c()
{SDA=0;      /*发送结束条件的数据信号*/_Nop();       /*发送结束条件的时钟信号*/SCL=1;      /*结束条件建立时间大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1;      /*发送I2C总线结束信号*/_Nop();_Nop();_Nop();_Nop();.............剩下的不敲写了
}

主要写下实时电压在LCD1602上面的显示转换函数。

void Display_Voltage()
{ss=(v*a);ss=((ss*6)/100);LCD1602_write_com(0x80+0x09);  //1602液晶屏命令操作,表示起始显示位置为第二行第7列    LCD1602_write_data(ss%10000000/1000000 + 0x30);LCD1602_write_data(ss%1000000/100000 + 0x30);LCD1602_write_data('.');LCD1602_write_data(ss%100000/10000 + 0x30);LCD1602_write_data(ss%10000/1000 + 0x30);
}

具体效果可参考下图


通过调节电位器获取实时电压。

小结

此程序可变相的应用于一些小单片机的设计中,例如用51单片机做一个小电压表或者实时检测一些外来的数据,当然需要进行其他的数据处理,长期发布此类文章,对代码有需求的可下方留言邮箱获取,谢谢大家的支持。

驱动PCF8591模拟电压表相关推荐

  1. [网友问答1]STM32驱动PCF8591模块,实现AD/DA转换

    欢迎关注 程序员小哈带你玩转嵌入式,微信搜索:嵌入式从0到1,更多干货等着你. 想进小哈技术交流群,请加程序员小哈个人微信,带你嵌入式入门进阶. 问题原由 粉丝提问,STM32如何驱动PCF8591? ...

  2. MSP430杂谈--AD7745硬件IIC驱动与模拟IIC驱动

    和上一篇AD7793类似,项目中也涉及到利用AD7745读取电容值,来测环境湿度.编写了基于MSP430的AD7745的硬件IIC驱动和模拟IIC驱动,分享给大家. AD7745硬件IIC驱动完整版下 ...

  3. 通过实时语音驱动人像模拟真人说话

    元宇宙的火热让人们对未来虚拟世界的形态充满了幻想,此前我们为大家揭秘了声网自研的 3D 空间音频技术如何在虚拟世界中完美模拟现实听觉体验,增加玩家沉浸感.今天我们暂时离开元宇宙,回到现实世界,来聊聊声 ...

  4. 声网Agora Lipsync技术剖析:通过实时语音驱动人像模拟真人说话

    元宇宙的火热让人们对未来虚拟世界的形态充满了幻想,此前我们为大家揭秘了声网自研的3D空间音频技术如何在虚拟世界中完美模拟现实听觉体验,增加玩家沉浸感.今天我们暂时离开元宇宙,回到现实世界,来聊聊声网自 ...

  5. MSP430杂谈--AD7793硬件SPI驱动与模拟SPI驱动

    最近项目中用到了AD7793读取铂电阻值来得到相应的温度,编写了基于MSP430的硬件驱动程序和模拟驱动程序,并且能成功运行,现在记录一下分享给大家. AD7793硬件IIC驱动完整版下载链接:htt ...

  6. PSAM嵌入式驱动——GD32模拟01

    前言 本部分内容是前一篇<PSAM嵌入式驱动--原理>的后续篇,本节主要是以GD32F103为平台,模拟实现驱动部分. 一.背景 项目中以GD32F103为平台, 主频72M GPIO引脚 ...

  7. Linux驱动之模拟PWM驱动

    pwm(脉冲宽度调制)是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变.这种方式能使电源的输出电压在工作 ...

  8. 操作系统实验:驱动调度 模拟电梯调度算法 C语言实现

    一:实验内容 模拟电梯调度算法,对磁盘进行移臂和旋转调度. 二.实验题目 (1)."驱动调度"进程和"接收请求"进程能否占有处理器运行,取决于磁盘的结束中断信 ...

  9. FPS游戏实战数据集|yolov8训练模型导出|C/C++项目|驱动鼠标模拟人工|加密狗USB硬件虚拟化

    目录 数据集准备 训练模型 模型部署 总结 YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,能够快速准确地识别图像中的目标.在游戏领域,YOLO可以应用于游戏场景中的 ...

  10. selenium驱动Firefox模拟浏览器操作

    1.安装火狐浏览器及selenium IDE插件 在官网直接下载火狐浏览器并安装,安装后在"附加组件"中搜索selenium IDE,然后添加到Firefox,如下图: 图1 图2 ...

最新文章

  1. PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法
  2. 清华「计图」现在支持国产芯片了!动态图推理比PyTorch快了270倍
  3. 2010.4.18 OA 项目组一周工作报告
  4. [转]高效编程之欲擒故纵
  5. 第一次听人用男女关系讲 N(Non-Blocking)I(进)O(出),涨姿势了
  6. GFS - The Google File System
  7. 初学docker容器
  8. easyUI按钮图表对照大全
  9. 宁波大学计算机应用技术考研,宁波大学2021年计算机考研拟录取数据分析
  10. php 记录报错,php报错自己记录
  11. JavaScript中DOM操作
  12. 自动化测试工具 Java等
  13. 安卓仿陌陌用户详情页轮播图联动效果
  14. Django REST framework学习笔记
  15. gost搭建正向代理及配置
  16. Nginx系列(四)--工作原理
  17. SPICE仿真软件基础
  18. SAP供应商原因导致的委外加工收货无法反冲原材料
  19. ByteTrack论文解读
  20. Directshow 采集与FFDshow 冲突

热门文章

  1. mysql查询耗时操作_mysql记录耗时的sql实例详解
  2. 关于小码哥kylin
  3. matlab确定分段函数的间断点,分段函数必有间断点( )
  4. Java基础面试 --序列化,反射,拷贝
  5. Message: session not created: This version of ChromeDriver only supports Chrome version XX
  6. 熵值权重法matlab程序,熵值法确定权重原理及Matlab实现
  7. mysql dump 1449_mysqldump1449错误解决办法
  8. CDO解析eml文件为html,C# 读取eml文件 例子(解析eml文件)
  9. vue 文字无缝滚动_vue文字横向滚动公告
  10. vsCode无法自动换行显示