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

📄 text1.lst

📁 单片机驱动32X64点阵资料
💻 LST
字号:
C51 COMPILER V8.08   TEXT1                                                                 11/02/2012 16:26:19 PAGE 1   


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

line level    source

   1          /*
   2          点阵屏管脚定义
   3          SHCP   GND
   4          STCP   GND
   5          R1     R2
   6          G1     G2
   7          VCC  GND
   8          A      GND
   9          B      GND
  10          C      D
  11          */
  12          /*
  13           控制卡
  14           P0~P3   A B C D
  15           P16 SCK
  16           P17 STR
  17           R1 P04
  18           G1 P05
  19           R2 P06
  20           G2 P07
  21          */
  22          #include<stc89c51rc.h>
  23          #define uchar unsigned char
  24          #define uint unsigned int
  25          #define light 3 
  26          extern uint uiAllData;                       //定义亮度
  27          uchar code hanzi[];                                         //汉字字模
  28          uchar code hanzi1[];                                        //汉字字模
  29                                           //0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
  30          uchar code sw[16]={0X00,0X08,0x04,0x0C,0X02,0X0A,0X06,0X0E,0X01,0X09,0X05,0X0D,0X03,0X0B,0X07,0X0F};/*16行
             -段码*///138驱动数据
  31          sbit IA  =P4^0;  //行控制线A
  32          sbit IB  =P2^0;  //行控制线B
  33          sbit IC  =P2^1;  //行控制线C
  34          sbit ID  =P2^2;  //行控制线D
  35          
  36          #define  scan0    {IA=0;IB=0;IC=0;ID=0;}
  37          #define  scan1    {IA=1;IB=0;IC=0;ID=0;}
  38          #define  scan2    {IA=0;IB=1;IC=0;ID=0;}
  39          #define  scan3    {IA=1;IB=1;IC=0;ID=0;}
  40          #define  scan4    {IA=0;IB=0;IC=1;ID=0;}
  41          #define  scan5    {IA=1;IB=0;IC=1;ID=0;}
  42          #define  scan6    {IA=0;IB=1;IC=1;ID=0;}
  43          #define  scan7    {IA=1;IB=1;IC=1;ID=0;}
  44          #define  scan8    {IA=0;IB=0;IC=0;ID=1;}
  45          #define  scan9    {IA=1;IB=0;IC=0;ID=1;}
  46          #define scan10    {IA=0;IB=1;IC=0;ID=1;}
  47          #define scan11    {IA=1;IB=1;IC=0;ID=1;}
  48          #define scan12    {IA=0;IB=0;IC=1;ID=1;}
  49          #define scan13    {IA=1;IB=0;IC=1;ID=1;}
  50          #define scan14    {IA=0;IB=1;IC=1;ID=1;}
  51          #define scan15    {IA=1;IB=1;IC=1;ID=1;}                                   
  52          
  53          sbit STR=P4^1;              //锁存       
  54          sbit SCK=P2^7;              //时钟       
C51 COMPILER V8.08   TEXT1                                                                 11/02/2012 16:26:19 PAGE 2   

  55          sbit SERr1= P2^4;            //数据
  56          sbit SERg1= P2^6;
  57          
  58          
  59          
  60          sbit SERr= P2^5;
  61          sbit SERg= P2^3;
  62                  
  63          uchar Move,Speed,line;  //时间温度变量
  64          uint zimuo;                                //字模计数器
  65          uchar BUFF[20];                            //缓存
  66          uchar BUFF1[20];                                   //缓存
  67          
  68          void   DelayMs(void);              // 延时
  69          void   in_data();                                  // 调整移动数据
  70          void   rxd_data();                                 // 串口发送移动数据
  71          /******************************************************/
  72          /*****不影响其他端口的扫描*************************/
  73          void scan(unsigned char Value)
  74          {switch(Value)
  75   1              {case  15: scan0;break;
  76   2                        case  0: scan1;break;
  77   2                         case  1: scan2;break;
  78   2                          case  2: scan3;break;
  79   2                   case  3: scan4;break;
  80   2                            case  4: scan5;break;
  81   2                             case  5: scan6;break;
  82   2                              case  6: scan7;break;
  83   2                       case  7: scan8;break;
  84   2                             case  8: scan9;break;
  85   2                            case 9:scan10;break;
  86   2                           case 10:scan11;break;
  87   2                  case 11:scan12;break;
  88   2                        case 12:scan13;break;
  89   2                       case 13:scan14;break;
  90   2                  case 14:scan15;break;
  91   2                 default:break;
  92   2              }
  93   1      }
  94          /**************************延时***********************/
  95          
  96          void DelayMs(void)
  97           {
  98   1        uchar TempCyc;
  99   1        for(TempCyc=250;TempCyc>1;TempCyc--)
 100   1           {;}
 101   1       }
 102          /********************************************/
 103          
 104          /*主函数*/
 105          void main()
 106          {  
 107   1         Move=0;
 108   1         zimuo=0;
 109   1         P0M0=0XFF;
 110   1         P0M1=0X00;
 111   1         P1M0=0X0C;
 112   1         P1M0=0X00;
 113   1         while(1)  
 114   1         {
 115   2         while(zimuo<2016)
 116   2          { 
C51 COMPILER V8.08   TEXT1                                                                 11/02/2012 16:26:19 PAGE 3   

 117   3               while(Move<16)                                      //数据移位。
 118   3             {
 119   4                   for(Speed=0;Speed<4;Speed++)       //移动速度
 120   4                    { 
 121   5                          for(line=0;line<16;line++)
 122   5                                {
 123   6                               in_data();                                  //调整移动数据
 124   6                           rxd_data();
 125   6                       //P0=sw[line]; 
 126   6                                       scan(line);      
 127   6                                                                                       
 128   6                                      STR=1;//锁存
 129   6                                      STR=0;
 130   6                                  STR=1;
 131   6                                  DelayMs();   //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。
 132   6                                      DelayMs();
 133   6                                      DelayMs();
 134   6                                      DelayMs();
 135   6                                       
 136   6                        }
 137   5                       }
 138   4             Move++;                                           //移动一步
 139   4                }
 140   3           Move=0;
 141   3               zimuo=zimuo+32;
 142   3          }   
 143   2         zimuo=0;
 144   2         }
 145   1      }         
 146          /**********************************************************/
 147          
 148          void in_data(void)                                     //调整数据
 149          {
 150   1       char s;
 151   1              for(s=8;s>=0;s--)                                           //i为向后先择字节计数器,zimuoo为向后先字计数器
 152   1              {
 153   2               BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*line];            //把第一个字模的第一个字节放入BUFF0中,第二个字模和第

⌨️ 快捷键说明

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