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

📄 displaydir.lst

📁 proteus电子钟(带闹钟数码管显示)
💻 LST
📖 第 1 页 / 共 2 页
字号:
             --
 133           * 函数名称: LedDisplay()
 134           * 参    数: XX
 135           * 返    回: XX
 136           * 函数功能: 数码显示
 137           *              
 138           * 说     明: 
 139           *
 140           * 当前版本: V1.0               * 取代版本:
 141           * 作     者: wsl               * 修    改:  
 142           * 版本信息: 2006-09-14         * 修改信息: 
 143          
 144          -*-------------------------------------------------------------------------------------------------------*
             -/
 145          void LedDisplay(void)
 146          {
 147   1              static uint8_t BitCnt;
 148   1      
 149   1              // 关数码管消隐
 150   1              COM_LINE |= (1<<COM0_CS)|(1<<COM1_CS)|(1<<COM2_CS)|(1<<COM3_CS);        
 151   1      
 152   1              
 153   1              // 任意位和任意点可以同时闪烁(点位总使能开同时开)
 154   1              if ( DFlash )   
 155   1              {
 156   2                      switch (BitCnt)
 157   2                      {
 158   3                              case 0: if (Dlink1)     {SEG_LINE = ~(DispCode[DisplayBuffer[BitCnt]] + SEG_Dot);}
 159   3                                              else {SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];}             break;
 160   3      
 161   3                              case 1: if (Dlink2)     {SEG_LINE = ~(DispCode[DisplayBuffer[BitCnt]] + SEG_Dot);}
 162   3                                              else {SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];}             break;
 163   3      
 164   3                              case 2: if (Dlink3)     {SEG_LINE = ~(DispCode[DisplayBuffer[BitCnt]] + SEG_Dot);}
 165   3                                              else {SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];}             break;
 166   3      
 167   3                              case 3: if (Dlink4)     {SEG_LINE = ~(DispCode[DisplayBuffer[BitCnt]] + SEG_Dot);}
 168   3                                              else {SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];}             break;
 169   3      
 170   3                              default:        break;
 171   3                      }
 172   2              }
 173   1              else if ( !BFlash ) /*否则是位闪烁*/
 174   1              {
C51 COMPILER V7.06   DISPLAYDIR                                                            05/31/2009 01:55:38 PAGE 4   

 175   2                      switch (BitCnt)
 176   2                      {
 177   3                              case 0: if (Blink1)     {SEG_LINE = 0xff;}
 178   3                                              else {SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];}             break;
 179   3      
 180   3                              case 1: if (Blink2)     {SEG_LINE = 0xff;}
 181   3                                              else {SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];}             break;
 182   3      
 183   3                              case 2: if (Blink3)     {SEG_LINE = 0xff;}
 184   3                                              else {SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];}             break;
 185   3      
 186   3                              case 3: if (Blink4)     {SEG_LINE = 0xff;}
 187   3                                              else {SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];}             break;
 188   3      
 189   3                              default:        break;
 190   3                      }               
 191   2              }
 192   1              else
 193   1              {
 194   2                      SEG_LINE = ~DispCode[DisplayBuffer[BitCnt]];
 195   2              }       
 196   1                                      
 197   1      
 198   1      
 199   1              COM_LINE ^= 1 << CS_Control[BitCnt++];
 200   1              if (BitCnt >= MAX_DISP_BITS)
 201   1              {
 202   2                      BitCnt = 0;
 203   2              }
 204   1      }
 205          
 206          
 207          /*-------------------------------------------------------------------------------------------------------*
             --
 208           * 函数名称: FlashFreq()
 209           * 参    数: XX
 210           * 返    回: XX
 211           * 函数功能: 控制闪烁频率(在定时中断中运行)
 212           *              
 213           * 说     明: 
 214           *
 215           * 当前版本: V1.0               * 取代版本:
 216           * 作     者: wsl               * 修     改:  
 217           * 版本信息: 2006-09-14         * 修改信息: 
 218          
 219          -*-------------------------------------------------------------------------------------------------------*
             -/
 220          void LedFlashFreq(void)
 221          {
 222   1              static uint8_t ucLedFlashFreq = 0;
 223   1      
 224   1              ucLedFlashFreq++;                               // 设每5mS中断一次
 225   1      
 226   1              if (ucLedFlashFreq >= 500/TIMEROUT)     // 500ms除以标
 227   1              {
 228   2                      ucLedFlashFreq = 0;
 229   2                      if ( g_DFlashEn )                                       // 是否需要点闪烁
 230   2                      {
 231   3                              DFlash = ~DFlash;
 232   3                      }
 233   2                      else 
 234   2                      {
C51 COMPILER V7.06   DISPLAYDIR                                                            05/31/2009 01:55:38 PAGE 5   

 235   3                              DFlash = 0;
 236   3                      }
 237   2      
 238   2                      if ( g_BFlashEn )                                       // 是否需要点闪烁
 239   2                      {                                                               
 240   3                              BFlash = ~BFlash;
 241   3                      }
 242   2                      else
 243   2                      {
 244   3                              BFlash = 0;
 245   3                      }
 246   2              }
 247   1      }
 248          
 249          void UpdateDisplayBuffer(uint8_t hour, uint8_t minute)
 250          {
 251   1              DisplayBuffer[0] = hour / 10;
 252   1              DisplayBuffer[1] = hour % 10; 
 253   1              DisplayBuffer[2] = minute / 10; 
 254   1              DisplayBuffer[3] = minute % 10;  
 255   1      }
 256          
 257          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    289    ----
   CONSTANT SIZE    =     18    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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