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

📄 pointled.lst

📁 用keil环境和proteus实现的16*16四字点阵显示
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   POINTLED                                                              07/31/2008 16:43:00 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE POINTLED
OBJECT MODULE PLACED IN PointLED.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE PointLED.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*--------------------------------------------------
   2          工程名字:LEDPoint
   3          工程功能:16×64 LED点阵显示
   4          作者:小琅
   5          时间:2008-7-29 11:39
   6          ---------------------------------------------------*/
   7          #include "myinclude.h"
   8          
   9          #define WordNum 4                    //点阵字个数
  10          #define LedNum 4                 //点阵个数
  11          
  12          //汉字点阵图
  13          code uint16 ShowData[WordNum][16]={
  14          {0x1020,0x1024,0x93FE,0x5420,
  15          0x19FC,0xFC20,0x13FE,0x1004,
  16          0x39FE,0x3504,0x51FC,0x9104,
  17          0x11FC,0x1104,0x1104,0x110C},    //精
  18          
  19          {0x0100,0x0108,0x3FFC,0x2108,
  20          0x2108,0x2108,0x3FF8,0x2108,
  21          0x0100,0x0100,0x1200,0x5104,
  22          0x5112,0x9012,0x0FF0,0x0000},    //忠
  23          
  24          {0x1008,0x11FC,0x1108,0x1108,
  25          0xFD28,0x1110,0x1500,0x19F8,
  26          0x3108,0xD190,0x1150,0x1120,
  27          0x1150,0x118E,0x5104,0x2100},   //报
  28          
  29          {0x0004,0x7FFE,0x4024,0x5FF4,
  30          0x4104,0x4104,0x4144,0x4FE4,
  31          0x4104,0x4144,0x4124,0x4104,
  32          0x5FF4,0x4004,0x7FFC,0x4004}    //国
  33          };
  34          
  35          #define TranCon P1
  36          sbit MR = P3^6;
  37          sbit clock = P3^7;
  38          
  39          #define KeepTime 4              //动态显示保持时间
  40          
  41          uint8 MODE = 0;                 //点阵显示模式
  42          uint8 State = 0;                    //动态显示时的状态记录
  43          uint8 MoveState = 0;            //流动显示的状态记录 
  44          
  45          void Init();
  46          void SerSend(uint8 senddata);
  47          void Delay(uint8 count);
  48          void DisplayAll();
  49          void MODE0();
  50          void MODE1();
  51          
  52          /*---------------------------------------------------
  53          函数功能:主函数
  54          ----------------------------------------------------*/
  55          void main()
C51 COMPILER V8.08   POINTLED                                                              07/31/2008 16:43:00 PAGE 2   

  56          {
  57   1              Init();      //初始化   
  58   1              while(1)
  59   1              {
  60   2                      switch(MODE)
  61   2                      {
  62   3                              case 0:
  63   3                                      DisplayAll();
  64   3                                      break;
  65   3                              case 1:
  66   3                                      MODE0();
  67   3                                      break;
  68   3                              case 2:
  69   3                                      MODE1();
  70   3                                      break;
  71   3                              default:
  72   3                              break;
  73   3                      }
  74   2              }       
  75   1      }
  76          
  77          /*----------------------------------------
  78          **函数功能:初始化
  79          **输入:无
  80          **输出:无
  81          -----------------------------------------*/
  82          void Init()
  83          {
  84   1              TMOD = 0x11;  //定时器1和0,工作方式都为1
  85   1              TCON = 0x01;  //外中断0,下降沿触发
  86   1              TH0 = 0x3C;       //50毫秒定时,初始化时钟值 
  87   1              TL0 = 0xB0;
  88   1              TH1 = 0x3C;
  89   1              TL1 = 0xB0;
  90   1              IE |= 0x8B;    //开总中断,定时器0 1中断,外0中断
  91   1      
  92   1              if(MODE == 1)  //根据不同的模式开不同的时钟
  93   1              {
  94   2                      TR0 = 1;
  95   2              }
  96   1              else if(MODE == 2)
  97   1              {
  98   2                      TR1 = 1;
  99   2              }
 100   1      }
 101                            
 102          /*--------------------------------------------
 103          **函数功能:用查询方式从串口发送一个8位数据
 104          **输入: senddata:要发送的数据
 105          **输出:无
 106          --------------------------------------------*/
 107          #pragma disable
 108          void SerSend(uint8 senddata)
 109          {
 110   1              TI=0;
 111   1              SBUF = senddata;
 112   1              while(TI=0);
*** WARNING C276 IN LINE 112 OF POINTLED.C: constant in condition expression
 113   1              TI=0;   
 114   1      }                
 115          
 116          /*--------------------------------------------
C51 COMPILER V8.08   POINTLED                                                              07/31/2008 16:43:00 PAGE 3   

 117          **函数功能:点阵四字静态显示
 118          **输入:无
 119          **输出:无
 120          --------------------------------------------*/
 121          void DisplayAll()
 122          {
 123   1              uint8 i,j;
 124   1              for(i=0; i<16; i++)
 125   1              {
 126   2                      MR = 0;                  //清除端口数据
 127   2                      clock = 0;
 128   2                      _nop_();
 129   2                      clock = 1;
 130   2                      MR = 1;
 131   2      
 132   2                      TranCon = i;        //片选信号
 133   2                      for(j=0; j<4; j++)      //发送数据
 134   2                      {       
 135   3                              SerSend((uint8)(ShowData[j][i]>>8));
 136   3                              SerSend((uint8)ShowData[j][i]);
 137   3                      }
 138   2      
 139   2                      clock=0;              //锁存       
 140   2                      nop3;
 141   2                      nop3;
 142   2                      clock=1;
 143   2      
 144   2                      Delay(1);
 145   2              }               
 146   1      }
 147          
 148          /*--------------------------------------------
 149          **函数功能:点阵显示模式1:文字从上向下动态显示
 150          --------------------------------------------*/
 151          #pragma disable
 152          void MODE0()
 153          {
 154   1               uint8 i,j;
 155   1               for(i=0; i<=State; i++)
 156   1               {
 157   2                      MR = 0;                  //清除端口数据
 158   2                      clock = 0;
 159   2                      _nop_();
 160   2                      clock = 1;
 161   2                      MR = 1;
 162   2      
 163   2                      TranCon = i;         //片选信号
 164   2                      for(j=0; j<4; j++)
 165   2                      {
 166   3                              SerSend((uint8)(ShowData[j][15-State+i]>>8));
 167   3                              SerSend((uint8)ShowData[j][15-State+i]);
 168   3                      }
 169   2                      clock=0;        
 170   2                      nop3;
 171   2                      nop3;
 172   2                      clock=1;
 173   2                      Delay(1);       
 174   2               }
 175   1               if(State == 15)        //稳定后暂停

⌨️ 快捷键说明

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