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

📄 hc595.lst

📁 51开发板源程序,74HC595驱动显示程序.在该模块中
💻 LST
字号:
C51 COMPILER V7.06   HC595                                                                 07/27/2006 16:15:36 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE HC595
OBJECT MODULE PLACED IN C:\DOCUME~1\NEW\桌面\单片机~1\51开发~1\C51PRJ\HC595\HC595.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\DOCUME~1\NEW\桌面\单片机~1\51开发~1\C51PRJ\HC595\HC595.C DB SB OE

stmt level    source

   1          /****************************************************************************/
   2          /*                                                                          */
   3          /*                Copyright (c) 2005, 老树工作室                            */
   4          /*                     All rights reserved.                                 */
   5          /*                                                                          */
   6          /*      Email:laoshu0902@163.com                                            */
   7          /*      www.laoshu0902.bokee.com                                            */
   8          /*                                                                          */
   9          /****************************************************************************/
  10          /****************************************************************************/
  11          /* 文件名:hc595.c                                                          */
  12          /* 版  本:Version 1.0                                                      */
  13          /* 描  述:用hc595驱动数码管演示代码                                        */
  14          /* 作  者:spot                                                             */
  15          /* 函  数:                                                                 */
  16          /*         load_number                                                      */
  17          /*         send_shift_clock                                                 */
  18          /*         send_latch_clock                                                 */ 
  19          /*         display_number                                                   */
  20          /*                                                                          */
  21          /* 历史记录:                                                               */
  22          /*  spot          2005-07-10     Creat Inital version. (Version 1.0)        */
  23          /****************************************************************************/
  24          
  25          #include <reg52.h>
  26          #include <absacc.h>
  27          #include <intrins.h>
  28          
  29          typedef unsigned char u_char;
  30          
  31          sbit DS   = P0^2;  /* 串行数据输入 */
  32          sbit SHCP = P0^0;  /* 移位时钟输入 */
  33          sbit STCP = P0^1;  /* 锁存时钟输入 */
  34          
  35          /* 显示数据编码,按共阴极数码管编码 */
  36          u_char number_code[11] = {
  37                                     0x3f,    /* 0 */
  38                                     0x06,    /* 1 */
  39                                     0x5b,    /* 2 */
  40                                     0x4f,    /* 3 */
  41                                     0x66,    /* 4 */
  42                                     0x6d,    /* 5 */
  43                                     0x7d,    /* 6 */
  44                                     0x07,    /* 7 */
  45                                     0x7f,    /* 8 */
  46                                     0x67,    /* 9 */
  47                                     0x00     /* 灭*/
  48                                   };
  49          
  50          void load_number(u_char number, bit dp);
  51          void send_shift_clock(void);
  52          void send_latch_clock(void);
  53          void clear_led(void);
  54          void display_number(void);
  55          
C51 COMPILER V7.06   HC595                                                                 07/27/2006 16:15:36 PAGE 2   

  56          /* 加载将要显示的数据,num-显示数据,dp:1显示小数点,0不显示小数点 */
  57          void load_number(u_char number, bit dp)
  58          {
  59   1          u_char i;
  60   1          u_char temp;
  61   1      
  62   1          temp = ~number_code[number];    /* 使用共阳极数码管,所以编码取反 */
  63   1          if (dp)
  64   1          {
  65   2              temp &= 0x7f;
  66   2          }
  67   1          for (i=0; i<8; i++)
  68   1          {
  69   2              if ( (temp & 0x80) == 0x80)
  70   2              {
  71   3                  DS = 1;
  72   3              }
  73   2              else
  74   2              {
  75   3                  DS = 0;
  76   3              }
  77   2      
  78   2              temp <<= 1;
  79   2      
  80   2              send_shift_clock();   /* 发移位脉冲信号 */
  81   2          }
  82   1      }
  83          
  84          /* 发送移位时钟脉冲信号 */
  85          void send_shift_clock(void)
  86          {
  87   1          SHCP = 1;
  88   1          _nop_();
  89   1          SHCP = 0;
  90   1      }
  91          
  92          /* 发送锁存脉冲信号 */
  93          void send_latch_clock(void)
  94          {
  95   1          STCP = 1;
  96   1          _nop_();
  97   1          STCP = 0;
  98   1      }
  99          
 100          /* 清除4位数码管显示 */
 101          void clear_led(void)
 102          {
 103   1          u_char i;
 104   1      
 105   1          for (i=0; i<32; i++)
 106   1          {
 107   2              DS = 1;
 108   2              send_shift_clock();
 109   2          }
 110   1          send_latch_clock();
 111   1      
 112   1      }
 113          
 114          /* 演示数码管显示数字 */
 115          void display_number(void)
 116          {
 117   1          u_char i;
C51 COMPILER V7.06   HC595                                                                 07/27/2006 16:15:36 PAGE 3   

 118   1      
 119   1          for (i=0; i<4; i++)
 120   1          {
 121   2              load_number(i, 0);
 122   2          }
 123   1          send_latch_clock();
 124   1      
 125   1          _nop_();
 126   1      
 127   1          for (i=0; i<4; i++)
 128   1          {
 129   2              load_number(i+4, 1);
 130   2          }
 131   1          send_latch_clock();
 132   1      
 133   1          _nop_();
 134   1      
 135   1          load_number(8, 0);
 136   1          load_number(9, 0);
 137   1          load_number(10, 0);
 138   1          load_number(10, 0);
 139   1          send_latch_clock();
 140   1          _nop_();
 141   1      }
 142          
 143          main()
 144          {
 145   1          SHCP=0;
 146   1          STCP=0;
 147   1      
 148   1          while(1)
 149   1          {
 150   2              clear_led();
 151   2              display_number();
 152   2          }
 153   1      }
C51 COMPILER V7.06   HC595                                                                 07/27/2006 16:15:36 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
number_code. . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  11
send_latch_clock . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
DS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0082H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
send_shift_clock . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
clear_led. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
SHCP . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0080H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
STCP . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0081H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
display_number . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
_load_number . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  number . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  dp . . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  temp . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
u_char . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


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