原创 PCF8591使用总结

2011-12-19 10:19 3278 10 12 分类: MCU/ 嵌入式

最近做东西用到这个芯片,它是基于I2C总线的AD/DA转换芯片,使用起来很方便,写好子程序后方便以后调用,现将子程序分享给大家哦.

/*******************************************************************
DAC 变换, 转化函数
*******************************************************************/
bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val)
{
Start_I2c(); //启动总线
SendByte(sla); //发送器件地址
if(ack==0)return(0);
SendByte(c); //发送控制字节
if(ack==0)return(0);
SendByte(Val); //发送DAC的数值
if(ack==0)return(0);
Stop_I2c(); //结束总线
return(1);
}
/*******************************************************************
ADC发送字节[命令]数据函数
*******************************************************************/
bit ISendByte(unsigned char sla,unsigned char c)
{
Start_I2c(); //启动总线
SendByte(sla); //发送器件地址
if(ack==0)return(0);
SendByte(c); //发送数据
if(ack==0)return(0);
Stop_I2c(); //结束总线
return(1);
}

/*******************************************************************
ADC读字节数据函数
*******************************************************************/
unsigned char IRcvByte(unsigned char sla)
{ unsigned char c;

Start_I2c(); //启动总线
SendByte(sla+1); //发送器件地址
if(ack==0)return(0);
c=RcvByte(); //读取数据0

Ack_I2c(1); //发送非就答位
Stop_I2c(); //结束总线
return(c);


}

DACconversion(PCF8591,0x40,DATA

ISendByte(PCF8591,0x41);
  ADdata=IRcvByte(PCF8591); //ADC0 模数转换

PCF8591是根据I2C确定的地址0x90,我在主文件宏定义了,所以这么用.0x40,0x41是控制字,使用的时候配合I2C直接调用子程序即可.

                                                                                                   iwxg

 

文章评论2条评论)

登录后参与讨论

wxg1988 2012-3-6 16:36

你好,具体需要看你的程序,这个 ISendByte(PCF8591,0x41); ADdata=IRcvByte(PCF8591); //ADC0 模数转换 就是AD0读取的程序调用, 你若需要其他一路AD,只需要改变控制字即可

用户420101 2012-3-1 18:04

你好,我刚刚开始练习单品机,使用过程中有些疑问。按照上面的程序可以实现4路数据的读取吗?我分别用不同的控制字C,调用转换函数时,不能实时显示是怎么回事呢?只有断电重启才会显示当前数据,通电时改的数据没有同步显示呢。
相关推荐阅读
wxg1988 2014-04-22 17:50
全球创客马拉松武汉站已经开始报名啦
星星之火,可以燎原! 全球创客马拉松在深圳、上海、北京、南京、成都等地相继点燃中国的创客之火,下一站:武汉! 改变世界,抑或改变自己,全球创客马拉松也许可以是梦想启航的地方。 英雄不问...
wxg1988 2013-10-24 13:15
液晶显示器原理LCD驱动基础
LCD显示器概述   ——》液晶显示器,LCD为英文 Liquid Crystal Display的缩写,它是一种数字显示技术,可以通过液晶和彩色过滤光源,并在平面面板上产生图像。  ...
wxg1988 2013-08-13 10:20
Arduino mini 亲手打造
Arduino,满足您创新创意的需要! Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于艺术家、设计...
wxg1988 2013-07-30 20:44
【博客大赛】STM32中断小结
  STM32中断EXTI STM32中断支持15个异常中断和240个外部中断,有256个中断优先级,其中I/O可配置为EXTI中断,捕捉外部信号,可配置为上升沿,下降沿,上升下降沿三种中...
wxg1988 2013-07-16 21:09
关注创客与开源电子,可以订阅
   http://list.qq.com/cgi-bin/qf_invite?id=04a0d177cb5a2dd6a4da786f024011139e353139950c4411 关注创客...
我要评论
2
10
关闭 站长推荐上一条 /2 下一条