PCF8591 4路AD中的4路检测外部模拟量输入

2024-06-19 14:18

本文主要是介绍PCF8591 4路AD中的4路检测外部模拟量输入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*-----------------------------------------------名称:IIC协议 PCF8591 AD/DA转换论坛:www.doflye.net编写:shifang修改:无内容:使用4路AD中的4路检测外部模拟量输入(main.c)
------------------------------------------------*/  
#include <reg52.h>                
#include "i2c.h"
#include "delay.h"
#include "display.h"#define AddWr 0x90   //写数据地址 
#define AddRd 0x91   //读数据地址extern bit ack;
bit ReadADFlag;unsigned char ReadADC(unsigned char Chl);
bit WriteDAC(unsigned char dat);
/*------------------------------------------------主程序
------------------------------------------------*/
main()
{unsigned char num=0,i;Init_Timer0();DelayMs(20);while (1)         //主循环{if(ReadADFlag){ReadADFlag=0; 
//连续读5次,输入通道后多读几次,取最后一次值,以便读出稳定值for(i=0;i<5;i++)num=ReadADC(0);
// x10表示把实际值扩大10,如4.5 变成 45 方便做下一步处理 x5 表示基准电压5V num=num*5*10/256;   TempData[0]=dofly_DuanMa[num/10]|0x80;    TempData[1]=dofly_DuanMa[num%10];for(i=0;i<5;i++)num=ReadADC(1);num=num*5*10/256;   // x10表示把实际值扩大10,如4.5 变成 45 方便做下一步处理TempData[2]=dofly_DuanMa[num/10]|0x80;    TempData[3]=dofly_DuanMa[num%10];for(i=0;i<5;i++)num=ReadADC(2);num=num*5*10/256;   // x10表示把实际值扩大10,如4.5 变成 45 方便做下一步处理TempData[4]=dofly_DuanMa[num/10]|0x80;    TempData[5]=dofly_DuanMa[num%10];for(i=0;i<5;i++)num=ReadADC(3);num=num*5*10/256;   // x10表示把实际值扩大10,如4.5 变成 45 方便做下一步处理TempData[6]=dofly_DuanMa[num/10]|0x80;    TempData[7]=dofly_DuanMa[num%10];//主循环中添加其他需要一直工作的程序}}
}
/*------------------------------------------------读AD转值程序
输入参数 Chl 表示需要转换的通道,范围从0-3
返回值范围0-255
------------------------------------------------*/
unsigned char ReadADC(unsigned char Chl){unsigned char Val;Start_I2c();               //启动总线SendByte(AddWr);             //发送器件地址if(ack==0)return(0);SendByte(Chl);            //发送器件子地址if(ack==0)return(0);Start_I2c();SendByte(AddRd);if(ack==0)return(0);Val=RcvByte();NoAck_I2c();                 //发送非应位Stop_I2c();                  //结束总线return(Val);}
/*------------------------------------------------写入DA转换数值
输入参数:dat 表示需要转换的DA数值,范围是0-255
------------------------------------------------*/
/*bit WriteDAC(u

这篇关于PCF8591 4路AD中的4路检测外部模拟量输入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075264

相关文章

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

Window Server2016加入AD域的方法步骤

《WindowServer2016加入AD域的方法步骤》:本文主要介绍WindowServer2016加入AD域的方法步骤,包括配置DNS、检测ping通、更改计算机域、输入账号密码、重启服务... 目录一、 准备条件二、配置ServerB加入ServerA的AD域(test.ly)三、查看加入AD域后的变