⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yl-40 ad-

📁 YL-40_AD模块资料
💻
字号:
C51 COMPILER V9.00   DA_AD                                                                 12/15/2011 11:57:03 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE DA_AD
OBJECT MODULE PLACED IN DA-AD.OBJ
COMPILER INVOKED BY: E:\安装软件\keil-51\C51\BIN\C51.EXE DA-AD.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /*********************************************************************************
   3          * 【编写时间】: 2011.07.07
   4          * 【作    者】: 雁翎电子
   5          * 【版    本】: V1.0
   6          * 【网    站】: http://ylelectronic.taobao.com/ 
   7          * 【Q      Q】: 348439350
   8          * 【声    明】: 此程序仅用于学习与参考,引用请注明版权和作者信息!
   9          * 【函数功能】: DA-AD试验                                                                                  
  10          * 【使用说明】: 单片机:STC89C52 
  11                           串口波特率:9600
  12                                           串口一共发送4个字节  
  13                                           1 光敏电阻
  14                                           2 热敏电阻
  15                                           3 悬空
  16                                           4 可调0-5V电压(蓝色电位器调节)
  17                                           
  18          **********************************************************************************/
  19          /********************************************************************************************/
  20          
  21          #include<reg52.h>    //包含单片机寄存器的头文件
  22          #include <I2C.H>
  23          
  24          #define uchar unsigned char
  25          #define  PCF8591 0x90    //PCF8591 地址
  26          
  27          
  28          
  29          // 变量定义
  30          unsigned char AD_CHANNEL;
  31          unsigned long xdata  LedOut[8];
  32          unsigned int  D[32];
  33          sbit P2_0 = P2^0;
  34          sbit P2_1 = P2^1;
  35          sbit P2_2 = P2^2;
  36          sbit P2_3 = P2^3;
  37          
  38          unsigned char date;
  39          
  40          uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
  41                                  0xf8,0x80,0x90};
  42          
  43          
  44            // 函数申明 
  45          
  46          void display();
  47          void delay(uchar i);
  48          bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val);
  49          bit ISendByte(unsigned char sla,unsigned char c);
  50          unsigned char IRcvByte(unsigned char sla);
  51          void Initial_com(void);
  52          //******************************************************************/
  53          main()
  54          {  
  55   1      
C51 COMPILER V9.00   DA_AD                                                                 12/15/2011 11:57:03 PAGE 2   

  56   1              Initial_com();
  57   1              while(1)
  58   1              {
  59   2      
  60   2              /********以下AD-DA处理*************/  
  61   2              
  62   2                  switch(AD_CHANNEL)
  63   2                      {
  64   3                              case 0: ISendByte(PCF8591,0x41);
  65   3                                   D[0]=IRcvByte(PCF8591);  //ADC0 模数转换1      光敏电阻
  66   3                                       break;  
  67   3                              
  68   3                              case 1: ISendByte(PCF8591,0x42);
  69   3                                   D[1]=IRcvByte(PCF8591);  //ADC1  模数转换2   热敏电阻
  70   3                                       break;  
  71   3                              
  72   3                              case 2: ISendByte(PCF8591,0x43);
  73   3                                   D[2]=IRcvByte(PCF8591);  //ADC2    模数转换3          悬空
  74   3                                       break;  
  75   3                              
  76   3                              case 3: ISendByte(PCF8591,0x40);
  77   3                                   D[3]=IRcvByte(PCF8591);  //ADC3   模数转换4           可调0-5v
  78   3                                       break;  
  79   3                              
  80   3                              case 4: DACconversion(PCF8591,0x40, D[4]); //DAC          数模转换
  81   3                                   break;
  82   3                       
  83   3                      }
  84   2      
  85   2              D[4]=D[3];  //把模拟输入采样的信号 通过数模转换输出
  86   2                              
  87   2                 if(++AD_CHANNEL>4) AD_CHANNEL=0;
  88   2              
  89   2                 /********以下将AD的值通过串口发送出去*************/
  90   2               delay(200);    
  91   2               SBUF=D[0];                        
  92   2               delay(200);              
  93   2               SBUF=D[1];                        
  94   2               delay(200);    
  95   2               SBUF=D[2];
  96   2               delay(200);
  97   2               SBUF=D[3];
  98   2               delay(200);
  99   2               if(RI)
 100   2              {
 101   3                      date=SBUF;    //单片机接受
 102   3                      SBUF=date;    //单片机发送
 103   3                      RI=0;
 104   3              }        
 105   2         }
 106   1      }
 107          
 108          
 109          void delay(uchar i)
 110          {
 111   1        uchar j,k; 
 112   1        for(j=i;j>0;j--)
 113   1          for(k=125;k>0;k--);
 114   1      }
 115          
 116          /*******************************************************************
 117          DAC 变换, 转化函数               
C51 COMPILER V9.00   DA_AD                                                                 12/15/2011 11:57:03 PAGE 3   

 118          *******************************************************************/
 119          bit DACconversion(unsigned char sla,unsigned char c,  unsigned char Val)
 120          {
 121   1         Start_I2c();              //启动总线
 122   1         SendByte(sla);            //发送器件地址
 123   1         if(ack==0)return(0);
 124   1         SendByte(c);              //发送控制字节
 125   1         if(ack==0)return(0);
 126   1         SendByte(Val);            //发送DAC的数值  
 127   1         if(ack==0)return(0);
 128   1         Stop_I2c();               //结束总线
 129   1         return(1);
 130   1      }
 131          
 132          /*******************************************************************
 133          ADC发送字节[命令]数据函数               
 134          *******************************************************************/
 135          bit ISendByte(unsigned char sla,unsigned char c)
 136          {
 137   1         Start_I2c();              //启动总线
 138   1         SendByte(sla);            //发送器件地址
 139   1         if(ack==0)return(0);
 140   1         SendByte(c);              //发送数据
 141   1         if(ack==0)return(0);
 142   1         Stop_I2c();               //结束总线
 143   1         return(1);
 144   1      }
 145          
 146          /*******************************************************************
 147          ADC读字节数据函数               
 148          *******************************************************************/
 149          unsigned char IRcvByte(unsigned char sla)
 150          {  unsigned char c;
 151   1      
 152   1         Start_I2c();          //启动总线
 153   1         SendByte(sla+1);      //发送器件地址
 154   1         if(ack==0)return(0);
 155   1         c=RcvByte();          //读取数据0
 156   1      
 157   1         Ack_I2c(1);           //发送非就答位
 158   1         Stop_I2c();           //结束总线
 159   1         return(c);
 160   1      }
 161          
 162          
 163          //*****串口初始化函数***********
 164          
 165          //******************************
 166          void Initial_com(void)
 167          {
 168   1       EA=1;        //开总中断
 169   1       ES=1;        //允许串口中断
 170   1       ET1=1;        //允许定时器T1的中断
 171   1       TMOD=0x20;   //定时器T1,在方式2中断产生波特率
 172   1       PCON=0x00;   //SMOD=0
 173   1       SCON=0x50;   // 方式1 由定时器控制
 174   1       TH1=0xfd;    //波特率设置为9600
 175   1       TL1=0xfd;
 176   1       TR1=1;       //开定时器T1运行控制位
 177   1      
 178   1      }

C51 COMPILER V9.00   DA_AD                                                                 12/15/2011 11:57:03 PAGE 4   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    326    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =     32    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     66       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -