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

📄 tlc5620.lst

📁 该源码为DA芯片TLC5620的完美驱动
💻 LST
字号:
C51 COMPILER V8.08   TLC5620                                                               04/26/2008 02:48:08 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TLC5620
OBJECT MODULE PLACED IN TLC5620.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TLC5620.c INTVECTOR(0X8000) DEBUG OBJECTEXTEND

line level    source

   1          /*************************************************************************************************
   2          ;  TLC5620 DAC转换实验程序
   3          ;  2004.10.28,Ver 1.0
   4          ;-------------------------------------------------------------------------------------------------
   5          ;  输出电压计算公式: VOUT(DACA|B|C|D)=REF*CODE/256*(1+RNG bit value)
   6          ;------------------------------------------------------------------------------------------------- 
   7          ;  该实验程序使用TLC5620中A、B、C、D四个通道中的前两个通道分别输出周期相等、幅度
   8          ;  均为3.3V的三角波和方波,5620的输出经过LM358双运方的反相跟随后增强了带负载能力
   9          ;  并且使得输出的信号电压位于-3.3V~0V之间,起到了模拟反相的作用。在程序中,RNG位
  10          ;  的置位使得输出幅度增加一倍。
  11          *************************************************************************************************/
  12          
  13          #include  <reg52.h>
  14          
  15          typedef  unsigned char  byte;
  16          typedef  unsigned int   word;
  17          
  18          sbit  SCLA=P1^6;
  19          sbit  SDAA=P1^7;
  20          sbit  LOAD=P3^5;
  21          sbit  LDAC=P3^4;
  22          
  23          bit   bdata  mode_bit1=0;      //三角波幅度递增或递减标志变量,为0时上坡,为1下坡
  24          bit   bdata  mode_bit2=0;      //方波幅度高低电平标志变量,为0时输出低电平,为1时输出高电平
  25          byte  data   count1=0;         //三角波的半周期计数器
  26          byte  data   count2=0;         //方波的半周期计数器
  27          byte  data   vouta=0;          //三角波瞬态电压值存储变量
  28          byte  data   voutb=0;          //方波高低电平电压值存储变量,其幅度与三角波幅度相等
  29          word  data   config;           //送往DA转换器的配置参数。以全局变量出现,即作为行参,又作为实参
  30          
  31          void  ini_cpuio(void);
  32          void  dachang1(void);
  33          void  dachang2(void);
  34          void  dac5620(word config);
  35          
  36          /************************************************************************************************/
  37          void  main(void)
  38          {
  39   1          ini_cpuio();               //初始化CPU的IO口
  40   1              while(1)                   //周期地进行转换,形成三角波和方波的周期信号
  41   1              {
  42   2                  dachang1();            //控制通道A输出三角波
  43   2                  dachang2();            //控制通道B输出方波,该方波与上面的三角波幅度相等、周期相同
  44   2              }
  45   1      }
  46          /************************************************************************************************/
  47          void  ini_cpuio(void)          //CPU的IO口初始化函数
  48          {
  49   1          SCLA=0;
  50   1              SDAA=0;
  51   1              LOAD=1;
  52   1              LDAC=1;
  53   1      }
  54          //================================================================================================
  55          void  dachang1(void)           //周期三角波生成函数
C51 COMPILER V8.08   TLC5620                                                               04/26/2008 02:48:08 PAGE 2   

  56          {
  57   1          config=(word)vouta;
  58   1              config<<=5;
  59   1              config=config&0x1fff;
  60   1          config=config|0x2000;
  61   1              dac5620(config);
  62   1          count1++;
  63   1              if(count1<0xa2)            //判断三角波是否上升(或下降)到峰点(或谷点)
  64   1              {
  65   2                  if(!mode_bit1)         //判断处于上坡还是下坡状态以决定是继续上升还是继续下降
  66   2                          vouta++;
  67   2                      else
  68   2                          vouta--;
  69   2              }
  70   1              else
  71   1              {
  72   2                  count1=0;
  73   2                      mode_bit1=~mode_bit1;  //如果已经达到峰点(或谷点)则改变幅度递增或递减标志
  74   2              }
  75   1      }
  76          //================================================================================================
  77          void  dachang2(void)           //周期方波生成函数
  78          {
  79   1          config=(word)voutb;
  80   1              config<<=5;
  81   1              config=config&0x1fff;
  82   1          config=config|0x6000;
  83   1              dac5620(config);
  84   1          count2++;
  85   1              if(count2<0xa2)            //判断方波是否应该改变电平状态
  86   1              {
  87   2                  if(!mode_bit2)         //根据方波幅度高低电平标志变量决定是输出高电平还是低电平
  88   2                          voutb=0;
  89   2                      else
  90   2                          voutb=0xa2;
  91   2              }
  92   1              else
  93   1              {
  94   2                  count2=0;
  95   2                      mode_bit2=~mode_bit2;  //如果已经达到改变电平状态的时刻则改变方波幅度标志变量
  96   2              }
  97   1      }
  98          
  99          /*************************************************************************************************
 100          ;  函数名称:  dac5620
 101          ;  功能描述:  TI公司8位4通DAC芯片TLC5620的控制时序
 102          ;  形式参数:  config(无符号整型变量)
 103          ;  返回参数:  无
 104          ;  局部变量:  m、n
 105          ;  调用模块:  SENDBYTE
 106          ;  日 期:    2004-10-28
 107          ;  备  注:    使用11位连续传输控制模式,使用LDAC下降沿锁存数据输入
 108          **************************************************************************************************/
 109          void  dac5620(word config)
 110          {
 111   1          byte  m=0;
 112   1              word  n;
 113   1              for(;m<0x0b;m++)
 114   1              {
 115   2                  SCLA=1;
 116   2                      n=config;
 117   2                      n=n&0x8000;
C51 COMPILER V8.08   TLC5620                                                               04/26/2008 02:48:08 PAGE 3   

 118   2                      SDAA=(bit)n;
 119   2                      SCLA=0;
 120   2                      config<<=1;
 121   2              }
 122   1              LOAD=0;
 123   1              LOAD=1;
 124   1              LDAC=0;
 125   1              LDAC=1;
 126   1      }
 127          
 128          
 129          
 130          
 131          
 132              
 133          
 134          
 135          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    178    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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