芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片复制PCF8591 AD转换模块单片机程序




芯片复制PCF8591 AD/DA芯片介绍

    芯片复制PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591 具有 4 个模拟输入、1 个模拟输出和 1个串行I2C总线接口。PCF8591的 3个地址引脚A0, A1和A2 可用于硬件地址编程,允许在同个I2C 总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向 I2C 总线以串行的方式进行传输。


单片机源程序如下:
  1. #include<reg52.h>    //包含单片机寄存器的头文件
  2. #include <I2C.H>

  3. #define uchar unsigned char
  4. #define  PCF8591 0x90    //PCF8591 地址



  5. // 变量定义
  6. unsigned char AD_CHANNEL;
  7. unsigned long xdata  LedOut[8];
  8. unsigned int  D[32];
  9. sbit P2_0 = P2^0;
  10. sbit P2_1 = P2^1;
  11. sbit P2_2 = P2^2;
  12. sbit P2_3 = P2^3;

  13. unsigned char date;

  14. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
  15.                         0xf8,0x80,0x90};


  16.   // 函数申明

  17. void display();
  18. void delay(uchar i);
  19. bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val);
  20. bit ISendByte(unsigned char sla,unsigned char c);
  21. unsigned char IRcvByte(unsigned char sla);
  22. void Initial_com(void);
  23. //******************************************************************/
  24. main()
  25. {  

  26.         Initial_com();
  27.         while(1)
  28.         {

  29.         /********以下AD-DA处理*************/  
  30.         
  31.             switch(AD_CHANNEL)
  32.                 {
  33.                         case 0: ISendByte(PCF8591,0x41);
  34.                              D[0]=IRcvByte(PCF8591);  //ADC0 模数转换1      光敏电阻
  35.                                  break;  
  36.                         
  37.                         case 1: ISendByte(PCF8591,0x42);
  38.                              D[1]=IRcvByte(PCF8591);  //ADC1  模数转换2          热敏电阻
  39.                                  break;  
  40.                         
  41.                         case 2: ISendByte(PCF8591,0x43);
  42.                              D[2]=IRcvByte(PCF8591);  //ADC2        模数转换3           悬空
  43.                                  break;  
  44.                         
  45.                         case 3: ISendByte(PCF8591,0x40);
  46.                              D[3]=IRcvByte(PCF8591);  //ADC3   模数转换4           可调0-5v
  47.                                  break;  
  48.                         
  49.                         case 4: DACconversion(PCF8591,0x40, D[4]); //DAC          数模转换
  50.                              break;
  51.                  
  52.                 }

  53.             D[4]=D[3];  //把模拟输入采样的信号 通过数模转换输出
  54.                         
  55.            if(++AD_CHANNEL>4) AD_CHANNEL=0;
  56.         
  57.            /********以下将AD的值通过串口发送出去*************/
  58.          delay(200);        
  59.          SBUF=D[0];                              
  60.          delay(200);                  
  61.          SBUF=D[1];                           
  62.          delay(200);        
  63.          SBUF=D[2];
  64.          delay(200);
  65.          SBUF=D[3];
  66.          delay(200);
  67.          if(RI)
  68.         {
  69.                 date=SBUF;    //单片机接受
  70.                 SBUF=date;    //单片机发送
  71.                 RI=0;
  72.         }         
  73.    }
  74. }



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信