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

📄 2.lst

📁 是本人在省赛是写的ad采集和显示的程序
💻 LST
字号:
C51 COMPILER V8.02   2                                                                     08/07/2008 10:26:29 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 2
OBJECT MODULE PLACED IN 2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1                                             #include<reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          
   5          
   6          //寄存器地址宏定义
   7          #define DECODE_MODE  0x09       //译码控制寄存器
   8          #define INTENSITY    0x0A                //亮度控制寄存器
   9          #define SCAN_LIMIT   0x0B       //扫描界限寄存器
  10          #define SHUT_DOWN    0x0C       //关断模式寄存器
  11          #define DISPLAY_TEST 0x0F                //测试控制寄存器       
  12          
  13          
  14          //数码管位定义
  15          #define  D0        0x01                 //Digit0
  16          #define  D1        0x02                 //Digit1
  17          #define  D2        0x03                 //Digit2
  18          #define  D3        0x04                 //Digit3
  19          #define  D4        0x05                 //Digit4
  20          #define  D5        0x06                 //Digit5
  21          #define  D6        0x07                 //Digit6
  22          #define  D7        0x08                 //Digit7
  23          //数组定义
  24          uint Ad_Value[5];
  25          
  26          //数码管不译码按段显示定义                      七段+点格式   D7-D0  DP-A-B-C-D-E-F-G
  27          
  28          //不带点        0  0x7e         1  0x30         2  0x6d         3  0x79         4  0x33         
  29          //                      5  0x5b         6  0x5f         7  0x70         8  0xff         9  0x7c
  30          //                      -  0x01         E  0x4f         H  0x37         L  0x0e         P  0x67           blank 0x00
  31          
  32                  
  33          //MAX7219管脚定义
  34          sbit CLK=P1^0;           //MAX7219串行时钟                 13脚
  35          sbit LOAD=P1^1;          //MAX7219片选      ( CS )     12脚
  36          sbit DIN=P1^2;           //MAX7219串行数据                  1脚
  37          
  38          
  39          
  40          
  41          //TLC2543定义四线制接口
  42          
  43          sbit     clk =     P3^4;       //时钟           18
  44          sbit     din =     P3^5;       //数据入口       17
  45          sbit    dout =     P3^6;       //数据出口       16
  46          sbit      cs =     P3^7;       //片选           15
  47                                                  
  48          //函数声明 
  49          void Initial(void);                                                             //MAX7219初始化函数
  50          void Write7219(uchar address,uchar dat);                //数码管
  51          
  52          void delay();                                                           //延时函数
  53          uint AD_Conver(uchar channel);                                  //AD转换
  54          
  55          
C51 COMPILER V8.02   2                                                                     08/07/2008 10:26:29 PAGE 2   

  56          //主函数
  57          void main()
  58          {
  59   1              uint j;  
  60   1              uchar d0,d1,d2,d3;
  61   1      
  62   1          Initial();               //MAX7219初始化
  63   1              
  64   1           delay();
  65   1           while(1)
  66   1           {
  67   2               
  68   2                      Ad_Value[0] = AD_Conver(1); //0通道,转换数据12位,高位在前,低位在后
  69   2           
  70   2                              d3=Ad_Value[0]/1000;
  71   2                              d2=(Ad_Value[0]%1000)/100;
  72   2                              d1=Ad_Value[0]%100/10;
  73   2                              d0=Ad_Value[0]%10;
  74   2              
  75   2                              Write7219(D3,d3);
  76   2                              Write7219(D2,d2);
  77   2                              Write7219(D1,d1);
  78   2                              Write7219 (D0,d0);
  79   2                      
  80   2                              for(j=0;j<45000;j++);
  81   2                      
  82   2           }
  83   1      }
  84          //--------------------------------------------------
  85          //              函数名称:    delay
  86          //              函数功能:    延时55us
  87          //              入口参数:     无
  88          //              出口参数:     无
  89          //--------------------------------------------------
  90          void delay()
  91          {
  92   1             uchar i = 5;
  93   1             while(i--);
  94   1      }
  95          //--------------------------------------------------
  96          //              函数名称:    AD_Conver
  97          //              函数功能:    AD转换
  98          //              入口参数:     地址命令字
  99          //              出口参数:     AD值
 100          //--------------------------------------------------
 101          uint AD_Conver(uchar channel)
 102          {
 103   1             uchar i;
 104   1             uint ad_value = 0;
 105   1      
 106   1             clk = 0;
 107   1             cs  = 1;
 108   1             delay();
 109   1             cs  = 0;
 110   1           
 111   1             channel <<=4;
 112   1             for (i = 0; i < 12; i++)          //注意:在12个时钟周期的下降沿产生了数据输出
 113   1             {                                 //在前4个时钟周期内,TLC2543已经知道下一次将
 114   2                              if (dout)    ad_value |= 1;      //哪个通道做转换,在后8个时钟内就一直对此通道
 115   2                              din = (bit)(channel & 0x80); //进行采样,并保持到第12个时钟周期结束,此后才
 116   2                              clk = 1;                       //开始进行A/D转换,转换时间需要10us.
 117   2                              delay();                       //在第4-8个时钟周期内输入的是命令控制字
C51 COMPILER V8.02   2                                                                     08/07/2008 10:26:29 PAGE 3   

 118   2                              clk = 0;                       //可根据需要输入
 119   2                              channel<<=1;
 120   2                      ad_value<<=1;
 121   2      
 122   2             }
 123   1      
 124   1             clk =1;
 125   1             ad_value>>=1;
 126   1      
 127   1             return ad_value;                            
 128   1      
 129   1      }
 130          
 131          
 132          
 133          
 134          
 135          //地址、数据发送子程序
 136          
 137          void Write7219(uchar address,uchar dat)
 138          {   
 139   1          uchar i;
 140   1          LOAD=0;                                             //拉低片选线,选中器件
 141   1                                                                      //发送地址
 142   1          for (i=0;i<8;i++)                   //移位循环8次              
 143   1          {   
 144   2             CLK=0;                                   //清零时钟总线
 145   2             DIN=(bit)(address&0x80);         //每次取高字节      
 146   2             address<<=1;                     //左移一位
 147   2             CLK=1;                                   //时钟上升沿,发送地址
 148   2          }
 149   1                                                                      //发送数据
 150   1          for (i=0;i<8;i++)               
 151   1          {   
 152   2             CLK=0;
 153   2             DIN=(bit)(dat&0x80);     
 154   2             dat<<=1;  
 155   2             CLK=1;                                   //时钟上升沿,发送数据
 156   2          }
 157   1          LOAD=1;                                             //发送结束,上升沿锁存数据                       
 158   1      }
 159          
 160          
 161                                                          //MAX7219初始化,设置MAX7219内部的控制寄存器
 162          void Initial(void)                 
 163          { 
 164   1          Write7219(SHUT_DOWN,0x01);         //开启正常工作模式(0xX1)       关断状态(0xX0)
 165   1          Write7219(DISPLAY_TEST,0x00);      //选择工作模式(0xX0)           测试状态(0xX1)
 166   1          Write7219(DECODE_MODE,0xff);       //选用全译码模式 (0xff)          不译码(0x00)
 167   1                                                                                 //只Digit0译码 (0x01)              只Digit0-3(0x0f)
 168   1          Write7219(SCAN_LIMIT,0x03);        //8只LED全用     (0xX7)                  0xXN 用Digit0--DigitN
 169   1          Write7219(INTENSITY,0x04);         //设置初始亮度(0xX0--0xXF )  
 170   1      }
 171          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    295    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       3
C51 COMPILER V8.02   2                                                                     08/07/2008 10:26:29 PAGE 4   

   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 + -