• 大小: 5KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: 51单片机  PCF8591  

资源简介

51单片机PCF8591例子,AD和DA集成到一个芯片上,包括了AD和DA的读写程序

资源截图

代码片段和文件信息

/**********************************************************************************
*  标题:       ************* DA-AD试验*******************                         *
*   *
*   1.通过本例程了解并掌握AD-DA转换芯片的基本原理和使用    *
*   2.了解掌握I2C总线接口的工作原理及一般编程方法。   *
*      *
*    连接方法:JP8 (P1)与J12用跳线连接            *
*       *
* 通过改变学习板上的2个电位器对应的2段模拟输入,实现模拟输入,学员观察数码管的数字变化情况
* 通过改D[4]的值,实现模拟输出,学员观察学习板上DA处LED的亮度变化   *
*   *   *
* 注意:I2C驱动程序只能在12T模式下工作   6T模式自己修改相应时序                   *                                                                                *
* 请学员认真消化本例程,懂得AD-DA 在C语言中的操作应用                          *
***********************************************************************************/

#include
#include 

#define  PCF8591 0x90    //PCF8591 地址


//else IO
sbit    LS138A=P2^2;  
sbit    LS138B=P2^3;
sbit    LS138C=P2^4;  

//此表为 LED 的字模 共阴数码管 0-9  - 
unsigned char code Disp_Tab[] = {0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}; 

unsigned char AD_CHANNEL;
unsigned long xdata  LedOut[8];
unsigned int  D[32];
 

/*******************************************************************
DAC 变换 转化函数               
*******************************************************************/
bit DACconversion(unsigned char slaunsigned 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 slaunsigned char c)
{
   Start_I2c();              //启动总线
   SendByte(sla);            //发送器件地址
   if(ack==0)return(0);
   SendByte(c);              //发送数据
   if(ack==0)return(0);
   Stop_I2c();               //结束总线
   return(1);
}

/*****************************************************************

评论

共有 条评论