PCF8591组件(A/D和D/A转换)
2015-04-08 15:21
127 查看
PCF8591.h
PCF8591.c
#ifndef _PCF8591_H #define _PCF8591_H uint8_t getADCvalue(uint8_t chn); void uint8_tToArray(uint8_t * arry, uint8_t val); #endif
PCF8591.c
#include <stc15f2k60s2.h> //检查是否有误 #include "stdint.h" #include "I2C.h" //需要用到I2C通信协议 #include "PCF8591.h" /* 读取当前的ADC转换值,chn-ADC通道号0~3 */ uint8_t getADCvalue(uint8_t chn) { uint8_t val; I2Cstart(); if (I2Cwrite(0x48 << 1) == 0) { //寻址PCF8591,如未应答,则停止操作并返回0 I2Cstop(); return 0; } I2Cwrite(0x40 | chn); //写入控制字节,选择转换通道 I2Cstart(); I2Cwrite((0x48 << 1) | 0x01); //寻址PCF8591,指定后续为读操作 I2CreadAck(); //先空读一个字节,提供采样转换时间 val = I2CreadNak(); //读取刚刚转换完的值 I2Cstop(); return val; } /* ADC转换值转为实际电压值的BCD码形式,arry-数组指针,val-AD转换值 */ void uint8_tToArray(uint8_t * arry, uint8_t val) { arry[0] = (uint8_t)((uint16_t)val * 25 / 2550); //10^0 arry[1] = (uint8_t)((uint16_t)val * 25 / 255) % 10; //10^-1 arry[2] = (uint8_t)((uint16_t)val * 250 / 255) % 10;//10^-2 }
相关文章推荐
- SSIS数据转换组件_复制转换、数据转换、行计数
- COM组件转换成.NET组件[转]
- ASP.NET 用 Office COM 组件将 docx\pptx\xlsx 转换成 PDF 文件
- PPT组件Spire.Presentation教程:在C#中将PPT文档转换为EMF图像
- COM组件转换成.NET组件
- SSIS数据转换组件_模糊分组转换
- 已调试好的asp程序在VB中转换为组件的技巧
- u3d gameobject与其他组件的相互转换
- 【新功能】PDF组件Spire.PDF 3.9.462发布 | 支持PDF转换为.docx格式
- JavaBean-XML组件轻松实现JavaBeans到XML的相互转换
- 【C#】无损转换Image为Icon 【C#】组件发布:MessageTip,轻快型消息提示窗 【C#】给无窗口的进程发送消息 【手记】WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体 【手记】调用Process.EnterDebugMode引发异常:并非所有引用的特权或组都分配给呼叫方 【C#】DataRowState演变备忘
- COM组件:完成任意进制到任意进制的转换
- SSIS数据转换组件_导出、导入转换
- 导出Excel,可以转换科学计数法为文本,不用引用Excel组件
- 组件编程(5) TypeConverterAttribute,类型转换
- 第19天(就业班) BeanUtils组件用法及类型转换器、DbUtils组件、jdbc优化
- [dotNET]COM组件转换成.NET组件{ZT}
- Text Layout Framework 概述系列(四)转换组件
- [组件代码共享]中文文字转换组件 1.0,支持VB/ASP编程
- PCF8591 A/D转换实验-测量电位器的电平