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

📄 数码管.lst

📁 74LS138及用74HC165 74HC595串行方式实现的数码管显示.rar
💻 LST
字号:
C51 COMPILER V7.10   数码管                                                                03/20/2009 17:55:44 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE 数码管
OBJECT MODULE PLACED IN 数码管.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 数码管.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          *  标题:                  试验数码管上如何显示数字                             *
   3          *  功能:                                                                                                                                                          *
   4          ********************************************************************************
   5          * 通过本例程了解 74HC595(串入并出)LS138(译码器)的基本原理和使用                *
   6          *                                      *                                                                                   *
   7          * 请学员认真消化本例程,懂74C595 LS138 在C语言中的操作                         *
   8          ********************************************************************************/
   9           #include <reg52.H>
  10           extern void HC595SendData(unsigned int SendVal);  /*声明引用外部函数*/
  11           unsigned int LedNumVal;             /*定义变量,作计数器*/         
  12           unsigned int LedOut[5];             /*定义数组*/
  13           //unsigned int w;
  14           //else IO/*位声明*/
  15          sbit    LS138A=P2^2;       /*74LS138译码器的A端口接单片机的P2.2口*/
  16          sbit    LS138B=P2^3;
  17          sbit    LS138C=P2^4;  
  18          /*---------------------74LS138在开发板中的连接方式:-----------------------------------
  19          **1.G1接BVCC:--------||当选通端(G1)为高电平,另外两个选通端(/(G2A)/(G2B))为低电平时  
  20          **2./G2A和/GAB都接地:||可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出.
  21          **3.A端口接单片机的P2.2口:
  22          **4.B端口接单片机的P2.3口:
  23          **5.C端口接单片机的P2.4口:
  24          ** 说明:由开发板的电路连接可知,74LS138已经一直处于准备就绪状态,可以执行译码工作.
  25          ** A、B、C这三个端口组合形成一个0~7取值范围的10进制数,然后在Y0--Y7这8个端口选择
  26          一个对应的端口输出低电平,即实现译码。
  27          **举例:(A、B、C)==010,则Y2端口输出低电平,其余的7个端口输出全为高电平.
  28          ---------------------------------------------------------------------------------------*/
  29          /*此表为 LED 的字模--            -- 0    1    2    3    4    5    6   7    8    9    A    b    c    d    E
             -    -    L   P    U    Hidden  _ (20)*/
  30          unsigned char code  Disp_Tab[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0
             -x86,0xbf,0xc7,0x8c,0xc1, 0xff,  0xf7 }; 
  31           
  32           
  33           void delay(unsigned int i)       /*延时函数*/
  34          {
  35   1          char j;
  36   1          for(i; i > 0; i--)
  37   1              for(j = 200; j > 0; j--);
  38   1      }
  39          
  40           
  41           main()                                                   /*主函数*/
  42          {   
  43   1        while(1)
  44   1        { 
  45   2           unsigned int  HC595SendVal;          /*定义变量*/
  46   2           char i;
  47   2               LedNumVal++;                             /*程序大循环计数*/
  48   2               LedOut[0]=Disp_Tab[LedNumVal%10000/1000];    /*千位的数码管显示字模存入数组LedOut[0]中*/
  49   2           LedOut[1]=Disp_Tab[LedNumVal%1000/100]&0x7f; /*百位  0X7F是数码管的小数点的值*/
  50   2           LedOut[2]=Disp_Tab[LedNumVal%100/10]&0x7f;   /*十位数码管显示字模存入数组LedOut[2]中*/
  51   2           LedOut[3]=Disp_Tab[LedNumVal%10];            /*个位数码管显示字模存入数组LedOut[3]中*/
  52   2      
  53   2                for (i=0;i<4;i++)                     
C51 COMPILER V7.10   数码管                                                                03/20/2009 17:55:44 PAGE 2   

  54   2                { 
  55   3                /*------------------------将数码管显示的段码发送给74HC595----------------------*/
  56   3                  HC595SendVal=LedOut[i];        /*将数码管显示的千位数据,百位数据..依次保存到
  57   3                                                                              74HC595要发送的数据变量中*/
  58   3      
  59   3                      HC595SendVal<<=8;          /*将HC595SendVal中数据移到高8位,数码管输出在低8位*/
  60   3                 //  HC595SendVal|=Output;
  61   3                  HC595SendData(HC595SendVal);/*发送数码管显示的段码给74HC595,使其控制数码管和发光管*/
  62   3                                                                              /*74HC595的输出接4个数码管的段码和8个发光管*/
  63   3               /*------------------------------------------------------------------------------*/
  64   3      
  65   3           /*-------------------------开数码管显示位选-------------------------------------*/
  66   3                      switch(i)                   /*i就定义了第0个数码管显示千位数,其它位以此类推*/                     
  67   3                {         
  68   4                              case 0:LS138A=0; LS138B=0; LS138C=0; break;  /*数码管第一位显示*/      
  69   4                  case 1:LS138A=1; LS138B=0; LS138C=0; break;  /*数码管第二位显示*/                   
  70   4                  case 2:LS138A=0; LS138B=1; LS138C=0; break;  /*数码管第三位显示*/ 
  71   4                  case 3:LS138A=1; LS138B=1; LS138C=0; break;  /*数码管第四位显示*/ 
  72   4                              case 4:LS138A=0; LS138B=0; LS138C=1; break;      /*数码管下面的LED*/
  73   4                 }
  74   3               /*------------------------------------------------------------------------------*/
  75   3                   delay(200);
  76   3                 }
  77   2              LS138A=1; LS138B=1; LS138C=1; 
  78   2         }    
  79   1               
  80   1       }
  81          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    295    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       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 + -