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

📄 displaydir.lst

📁 proteus电子钟(带闹钟数码管显示)
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   DISPLAYDIR                                                            05/31/2009 01:55:38 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DISPLAYDIR
OBJECT MODULE PLACED IN DisplayDir.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE software\DisplayDir.c BROWSE DEBUG OBJECTEXTEND PRINT(.\DisplayDir.lst) OBJ
                    -ECT(DisplayDir.obj)

stmt level    source

   1          // 为了便于阅读和打印,最大行长为100个字符.
   2          //       1         2         3         4         5         6         7         8         9         A
   3          //34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
   4          /*------------------------------------------------------------------------------------------------*-
   5                  ****A****                       ****A****               SEG_A   ...... Px.0 ---- 1       
   6                  |               |        ...    |               |               SEG_B   ...... Px.1 ---- 2
   7                  F               B                       F               B               SEG_C   ...... Px.2 ---- 4
   8                  |               |        ...    |               |               SEG_D   ...... Px.3 ---- 8
   9                  ****G****                       ****G****               SEG_E   ...... Px.4 ---- 1
  10                  |               |        ...    |               |               SEG_F   ...... Px.5 ---- 2
  11                  E               C                       E               C               SEG_G   ...... Px.6 ---- 4
  12                  |               |        ...    |               |               SEG_Dot ...... Px.7 ---- 8
  13                  ****D****.>Dot          ****D****.>Dot  
  14                      |                                    |                              Px.Y(Y = 0 ~ 7)
  15                      |                                    |________      Dis_COMx ..... Px.Y             
  16                      |                                           .          .
  17                      |                                           .          .
  18                      |                                           .          .            
  19                      |________________________________   Dis_COM0 ..... Px.0
  20                  //  LED.0       ...         LED.x                               
  21                          
  22          -*------------------------------------------------------------------------------------------------*/
  23          #include "main.h"
  24          #include "port.h"
  25          #include "SysTick.h"
  26          #include "DisplayDir.h"
  27          
  28          
  29          // 数码显示初始化
  30          uint8_t DisplayBuffer[MAX_DISP_BITS] = {
  31                  1, 2, 3, 4
  32          };
  33          
  34          bool bUpdateDisplayEn;
  35          
  36          // 数码管是否是共阳极?
  37          //#define Is_Anode      
  38          // 还是数码管共阴极?
  39          //#define Is_Cathode    
  40          // SEG线硬件连接方法定义(某位为 '1' 表示与数码管相对应的引脚相连)
  41          #define SEG_A           0x01
  42          #define SEG_B           0x02
  43          #define SEG_C           0x04
  44          #define SEG_D           0x08
  45          #define SEG_E           0x10
  46          #define SEG_F           0x20
  47          #define SEG_G           0x40
  48          #define SEG_Dot         0x80
  49          
  50          uint8_t code DispCode[] =
  51          {
  52                  //#ifdef Is_Anode
  53                  (SEG_A+SEG_B|SEG_C|SEG_D|SEG_E|SEG_F),                                  // 0
  54                  (SEG_B|SEG_C),                                                                                  // 1
C51 COMPILER V7.06   DISPLAYDIR                                                            05/31/2009 01:55:38 PAGE 2   

  55                  (SEG_A|SEG_B|SEG_D|SEG_E|SEG_G),                                                // 2
  56                  (SEG_A|SEG_B|SEG_C|SEG_D|SEG_G),                                                // 3
  57                  (SEG_B|SEG_C|SEG_F|SEG_G),                                                              // 4
  58                  (SEG_A|SEG_C|SEG_D|SEG_G|SEG_F),                                                // 5    
  59                  (SEG_A|SEG_C|SEG_D|SEG_E|SEG_G|SEG_F),                                  // 6    
  60                  (SEG_A|SEG_B|SEG_C),                                                                    // 7
  61                  (SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G),                    // 8
  62              (SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G),                                      // 9
  63                  '\0',
  64                  (SEG_A|SEG_F|SEG_G|SEG_C|SEG_D),                                                // S
  65                  (SEG_A|SEG_F|SEG_G|SEG_E|SEG_D),                                                // E
  66                  (SEG_F|SEG_E|SEG_D)                                                                             // L
  67          };
  68          
  69          
  70          // 是否是高电平位选?
  71          #define Is_HIGH_bool_SELECT
  72          // 还是低电平位选?
  73          //#define Is_LOW_bool_SELECT
  74          // COM线接口定义(某位为 '1' 表示对位COM线位选)
  75          #define COM0_CS         0x00
  76          #define COM1_CS         0x01
  77          #define COM2_CS         0x02
  78          #define COM3_CS         0x03
  79          #define COM4_CS         0x04
  80          #define COM5_CS         0x05
  81          #define COM6_CS         0x06
  82          #define COM7_CS         0x07
  83          
  84          uint8_t code CS_Control[] =
  85          {
  86                  COM0_CS,
  87                  COM1_CS,
  88                  COM2_CS,
  89                  COM3_CS 
  90          };
  91          
  92          
  93          
  94          /*LED数码管工作模式控制字*/
  95          /*工作模式包含三种,     1> 点位同时闪烁
  96                                                          2> 点位分别闪烁
  97                                                          3> 点位不闪烁                     
  98          */
  99          uint8_t LED_TMOD = 0x00;
 100          
 101          /*点闪烁总使能标志为1点闪动*/
 102          bool g_DFlashEn = 0;
 103          /*位闪烁总使能标志为1位闪动*/
 104          bool g_BFlashEn = 0;
 105          
 106          /*用于切换点的闪烁状态,闪烁或不闪烁*/
 107          static bool DFlash;
 108          /*用于切换位的闪烁状态,闪烁或不闪烁*/
 109          static bool BFlash;
 110          
 111          /*数码管闪烁标志*/
 112          uint8_t bdata LedChangeFlag;
 113          // 闪烁点:Blink,为1的位闪动
 114          sbit Dlink1 = LedChangeFlag^0;  /*时十位点 为1的位闪动*/
 115          sbit Dlink2 = LedChangeFlag^1;
 116          sbit Dlink3 = LedChangeFlag^2;
C51 COMPILER V7.06   DISPLAYDIR                                                            05/31/2009 01:55:38 PAGE 3   

 117          sbit Dlink4 = LedChangeFlag^3;  /*分个位点 为1的位闪动*/
 118          
 119          // 闪烁位:Blink,为1的位闪动
 120          sbit Blink1 = LedChangeFlag^4;  /*时十位*/
 121          sbit Blink2 = LedChangeFlag^5;  /*时个位*/
 122          sbit Blink3 = LedChangeFlag^6;  /*分十位*/
 123          sbit Blink4 = LedChangeFlag^7;  /*分个位*/
 124          
 125          
 126          /*-------------------------------------------------------------------------------------------------------*
             --
 127                  关于数码管显示的各寄存器的应用说明:
 128          // 任意位和任意点可以同时闪烁(点位总使能开同时开)
 129          #define LED_DISP_ALL_FLASH()            do{LED_TMOD = 0x00; g_DFlashEn = 1;     g_BFlashEn = 1;}while(0)
 130          
 131          -*-------------------------------------------------------------------------------------------------------*
             -/
 132          /*-------------------------------------------------------------------------------------------------------*

⌨️ 快捷键说明

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