驱动PCF8591模拟电压表

news/2024/10/31 3:25:45/

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单片机做一个小电压表或者实时检测一些外来的数据,当然需要进行其他的数据处理,长期发布此类文章,对代码有需求的可下方留言邮箱获取,谢谢大家的支持。


http://www.ppmy.cn/news/154967.html

相关文章

MW80 DM RGB 蓝牙5.2双模热插拔PCB

键盘使用说明索引(均为出厂默认值) 软件支持一些常见问题解答(FAQ)电池开关电池插座首次使用测试步骤蓝牙配对规则(重要)蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功能层1配置的功能默认的快…

1553B总线介绍

一、 1553B诞生背景: 1553B总线是MIL-STD-1553总线的简称,MIL-STD-1553总线是时分制命令/响应式多路复用数据总线。主要应用在海陆空等军事装备和航天领域。美国SAE A2K委员会在军方和工业界的支持下于1968年决定开发标准的信号多路传输系统,并于1973年公布了MIL-STD-1553标…

【网络知识】3. 千兆网传输速度125MB/s、百兆网12.5MB/s,码率、比特率、带宽、文件大小M就是MB

千兆局域网的传输速度理论上是125MB/s。 局域网有1000M与100M之分:1000M的传输速度是125Mb/s;100M的传输速度是12.5Mb/s。 1000Mbps 1,000,000,000比特/秒 125,000,000字节/秒 125MB/s。 100 Mbps 100,000,000比特/秒 12,500,000字节/秒 12.5MB/s。…

高通qcom sdm450/msm8953平台 fingerprint指纹模组移植

1:查看主板原理图获取硬件信息 系统硬件平台是sdm450/msm8953 在主板原理图上可以找到指纹相关的原理图部分如下: 该IC使用两路电, LDO6 1.8v, LDO10 2.8v。 SPI通讯,追到模块上是 BLSP7 spi7 这组管脚,…

【网络知识】千兆网传输速度125MB/s、百兆网12.5MB/s,码率、比特率、带宽、文件大小M就是MB

千兆局域网的传输速度理论上是125MB/s。 局域网有1000M与100M之分:1000M的传输速度是125Mb/s;100M的传输速度是12.5Mb/s。1000Mbps 1,000,000,000比特/秒 125,000,000字节/秒 125MB/s。100 Mbps 100,000,000比特/秒 12,500,000字节/秒 12.5MB/s。 …

i58500 B360M morter RX590 黑苹果10.15折腾记录

前言 从大学就开始折腾黑苹果,无奈美帝良心想Y400没有核心显卡,当时的750M驱动起来十分困难。 最近笔记本卡的不行了,索性配了一个台式。这是一篇小小的记录,完全谈不上教程,写出来希望能给大家带来一些参考&#xff…

MSB8028

需要修改宏,我的是因为预编译头文件目录名字一样导致 1、问题过程 一下错误属于自己自己设置属性导致错误(解决方案仅供参考) C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(388,5): warning MSB80…

AM5728

AM5278学习记录_1 AM5728的架构图1、介绍 该微处理器单元 (MPU) 具有一个 32 位的地址接口, 这使得它能够处理 4-GiB 地址空间。根据目标的类型不同, 这些空间被分为几个区域。 内存映射具有以下一些特征, 并且这些特征能够被一些发起程序共享&#xff0…