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

📄 main.lst

📁 TLC5620串行DAC 用51实现。调试通过
💻 LST
字号:
C51 COMPILER V7.09   MAIN                                                                  06/23/2006 14:14:50 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2                  Main.C
   3                  TLC5620串行DAC例程:产生正弦波
   4          */
   5          
   6          
   7          #include <REG51.H>
   8          
   9          
  10          //定义I/O端口
  11          sbit DAT  = P1^4;       //串行数据
  12          sbit CLK  = P1^5;       //串行时钟,下降沿有效
  13          sbit LDAC = P1^6;       //DAC更新锁存控制,下降沿有效
  14          sbit LOAD = P1^7;       //串行数据装载,下降沿有效
  15          
  16          
  17          /*
  18          函数:Dac()
  19          功能:发送数据至TLC5620串行DAC
  20          参数:
  21                  addr:DAC通道地址,取值0~3,对应通道A~D
  22                  rng:附加的范围位,rng=0时,Vo不会超过Vref,rng=1时,Vo变为2倍
  23                  dat:8位DAC数据
  24          公式:
  25                  rng=0时,Vo=Vref*(dat/256)
  26                  rng=1时,Vo=Vref*(dat/256)*2
  27          */
  28          void Dac(unsigned char addr, bit rng, unsigned char dat)
  29          {
  30   1              unsigned char n;
  31   1      //发送通道地址
  32   1              n = 2;
  33   1              do
  34   1              {
  35   2                      DAT = (bit)(addr & 0x02);
  36   2                      addr <<= 1;
  37   2                      CLK = 0;
  38   2                      CLK = 1;
  39   2              } while ( --n != 0 );
  40   1      //发送RNG位
  41   1              DAT = rng;
  42   1              CLK = 0;
  43   1              CLK = 1;
  44   1      //发送8位DAC数据
  45   1              n = 8;
  46   1              do
  47   1              {
  48   2                      DAT = (bit)(dat & 0x80);
  49   2                      dat <<= 1;
  50   2                      CLK = 0;
  51   2                      CLK = 1;
  52   2              } while ( --n != 0 );
  53   1      //装载数据
  54   1              LOAD = 0;
  55   1              LOAD = 1;
C51 COMPILER V7.09   MAIN                                                                  06/23/2006 14:14:50 PAGE 2   

  56   1      //数据锁存到DAC转换器
  57   1              LDAC = 0;
  58   1              LDAC = 1;
  59   1      }
  60          
  61          
  62          /*
  63          函数:Delay()
  64          功能:延时1ms~256ms
  65          参数:
  66                  t>0时,延时(t)ms
  67                  t=0时,延时256ms
  68          */
  69          void Delay(unsigned char t)
  70          {
  71   1              do
  72   1              {
  73   2                      TH0 = 0xFC;
  74   2                      TL0 = 0x66;
  75   2                      TR0 = 1;
  76   2                      while ( !TF0 );
  77   2                      TR0 = 0;
  78   2                      TF0 = 0;
  79   2              } while ( --t != 0 );
  80   1      }
  81          
  82          
  83          /*
  84          函数:SinWave()
  85          功能:利用TLC5620串行DAC在通道B产生正弦波
  86          说明:请用示波器观察SmartSOPC实验箱D5区的DACB通道
  87          */
  88          void SinWave()
  89          {
  90   1              code unsigned char SinTab[] =
  91   1              {
  92   1                      128,147,167,185,202,218,231,241,249,253,
  93   1                      255,253,249,241,231,218,202,185,167,147,
  94   1                      127,108,88,70,53,37,24,14,6,2,
  95   1                      0,2,6,14,24,37,53,70,88,108
  96   1              };
  97   1              unsigned char n;
  98   1              for (;;)
  99   1              {
 100   2                      for ( n=0; n<40; n++ )
 101   2                      {
 102   3                              Dac(1,0,SinTab[n]);
 103   3                              Delay(5);
 104   3                      }
 105   2              }
 106   1      }
 107          
 108          
 109          void main()
 110          {
 111   1              TMOD &= 0xF0;
 112   1              TMOD |= 0x01;
 113   1              DAT = 1;
 114   1              CLK = 1;
 115   1              LDAC = 1;
 116   1              LOAD = 1;
 117   1              SinWave();
C51 COMPILER V7.09   MAIN                                                                  06/23/2006 14:14:50 PAGE 3   

 118   1              for (;;);
 119   1      }
 120          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    116    ----
   CONSTANT SIZE    =     40    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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