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

📄 7 adc.lst

📁 很好的51单片机仿真模板。
💻 LST
字号:
C51 COMPILER V8.08   7_ADC                                                                 10/28/2008 00:43:35 PAGE 1   


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

line level    source

   1          //拧动 AD 旁边的电位器,会在数码管的前三位显示 0-255 之间的数值。这就
   2          //是把模拟信号转换成数字信号,即模数转换。说明:由于不同 AD 的自身特性
   3          //不同,所以时序如果掌握不好的话,很有可能在数码管上不会动态显示变化数
   4          //值,但按下实验板上复位键后可更新内容。 
   5          #include<reg51.h> 
   6          #include <intrins.h> 
   7          #define uint unsigned int    //宏定义,详情请看 C 语言书。 
   8          #define uchar unsigned char 
   9          sbit adrd=P3^7;                   //AD 读引角 
  10          sbit adwr=P3^6;                  //AD 写引角 
  11          sbit diola=P2^5; 
  12          sbit dula=P2^6;                   //数码管段选锁存 
  13          sbit wela=P2^7;                   //数码管位选锁存 
  14          unsigned char j,k,adval; 
  15          void delay(unsigned char i)   //延时程序 
  16          {
  17   1              for(j=i;j>0;j--) 
  18   1              for(k=125;k>0;k--); 
  19   1      } 
  20          uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,                    
  21          0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管编码 
  22          void display(uchar bai_c,uchar sh_c,uchar g_c)      //显示程序 
  23          { 
  24   1              dula=0; 
  25   1              
  26   1              P0=table[bai_c];   //显示百位 
  27   1              dula=1; 
  28   1              dula=0; 
  29   1              wela=0; 
  30   1              P0=0x7e; 
  31   1              wela=1; 
  32   1              wela=0; 
  33   1              delay(5); 
  34   1      
  35   1              P0=0;             //------------
  36   1              dula=1;           //该部分仿真必须要。
  37   1              dula=0;           //因为每次下一位的段选打开后,码值会先赋值给上一位,
  38   1              P0=0x7e;          //从而改变上一位的显示。然后再打开下一位的位选。
  39   1              wela=1;           //
  40   1              wela=0;           //------------
  41   1                      
  42   1              //dula=0; 
  43   1              P0=table[sh_c];    //显示十位 
  44   1              dula=1; 
  45   1              dula=0; 
  46   1              wela=0; 
  47   1              P0=0x7d; 
  48   1              wela=1; 
  49   1              wela=0; 
  50   1              delay(5); 
  51   1              
  52   1              P0=0;             //------------
  53   1              dula=1;           //该部分仿真需要
  54   1              dula=0;           //
  55   1              P0=0x7d;          //
C51 COMPILER V8.08   7_ADC                                                                 10/28/2008 00:43:35 PAGE 2   

  56   1              wela=1;           //
  57   1              wela=0;           //-------------
  58   1      
  59   1              P0=table[g_c];    //显示个位 
  60   1              dula=1; 
  61   1              dula=0; 
  62   1              P0=0x7b; 
  63   1              wela=1; 
  64   1              wela=0; 
  65   1              delay(5); 
  66   1      
  67   1              P0=0;             //------------
  68   1              dula=1;           //该部分仿真需要
  69   1              dula=0;           //
  70   1              P0=0x7b;          //
  71   1              wela=1;           //
  72   1              wela=0;           //-------------
  73   1      } 
  74          void main() //     主程序 
  75          { 
  76   1              uchar a,A1,A2,A2t,A3; 
  77   1              diola=0; 
  78   1              while(1)             //主循环程序不断的采样、显示 
  79   1              { 
  80   2                      adwr=0;  //AD 写入(随便写个什么都行,主要是为了启动//AD 转换) 
  81   2                      _nop_();            //一个延时字函数 
  82   2                      adwr=1; 
  83   2                      adrd=0; 
  84   2                      adval=P1;      //AD 数据读取 
  85   2                      adrd=1; 
  86   2                      delay(10); 
  87   2                      A1=adval/100;   //分出百,十,和个位 
  88   2                      A2t=adval%100; 
  89   2                      A2=A2t/10; 
  90   2                      A3=A2t%10; 
  91   2                      for(a=10;a>0;a--)  // 显示十次,然后去采集一次电压信号 
  92   2                      {     
  93   3                              display(A1,A2,A3);
  94   3                      } //送去显示各位。 
  95   2              }; 
  96   1      } 
  97           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    182    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   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 + -