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

📄 dianzhen.lst

📁 笔者自己弄的一个32*16的点阵模块,使用51单片机以及74hc595和74hc138实现,内有动态显示程序和静态显示程序,以及Protel99SE原理图和PCB图.
💻 LST
字号:
C51 COMPILER V7.06   DIANZHEN                                                              08/04/2008 15:26:32 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DIANZHEN
OBJECT MODULE PLACED IN DianZhen.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DianZhen.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include"reg51.h"
   2          #include"for51.h"
   3          
   4          typedef char bool;
   5          #define TURE  1
   6          #define FALSE 0
   7          
   8          #define Length 31 //点阵长度
   9          
  10          uchar x, y;//x表示8块点阵中的哪一块,y表示选中点阵的哪一列
  11          
  12          void SendData(uchar ddata);
  13          bool DisplayPic(uchar start, uchar* pic, uchar num);  //向74HC595发送数据
  14          void Delayms(uint ticks);
  15          
  16          //图片数据
  17          /*--  文字:  皇  --*/
  18          /*--  黑体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  19          uchar code Pic[] = {
  20          0x00,0x00,0x7E,0x7E,0x56,0x57,0x57,0x56,0x56,0x56,0x56,0x7E,0x7E,0x00,0x00,0x00,
  21          0x60,0x63,0x6B,0x6B,0x6B,0x6B,0x6B,0x7F,0x7F,0x6B,0x6B,0x6B,0x6B,0x63,0x60,0x00,
  22          };
  23          
  24          void main(void) {
  25   1              while(1) {
  26   2                      DisplayPic(8, Pic, 32);//显示pic1
  27   2                      Delayms(10);
  28   2              }
  29   1      }
  30          
  31          /**************************************************
  32          函数名称: 串行数据发送函数
  33          参数含义: ddata - 字节显示数据
  34          函数功能: 主机向从机发送一个字节串行数据
  35          返 回 值: 无返回
  36          **************************************************/                                                      
  37          void SendData(uchar ddata) {
  38   1              uchar count=0;
  39   1              for(; count != 8; count++) {
  40   2                      SCK = 0;
  41   2                      if(ddata & 0x80)
  42   2                              MOSI=1; //发送数据
  43   2                      else
  44   2                              MOSI=0;
  45   2                      SCK = 1;                                //发送时钟
  46   2                      ddata <<= 1;                            //数据右移一位
  47   2              }
  48   1              SS = 0;
  49   1              SS = 1;                                 //锁存数据
  50   1              SS = 0;
  51   1      }
  52          
  53          /**************************************************
  54          函数名称: 延时函数
  55          参数含义: 延长时间
C51 COMPILER V7.06   DIANZHEN                                                              08/04/2008 15:26:32 PAGE 2   

  56          函数功能: 延时
  57          返 回 值: 无返回
  58          **************************************************/
  59          void Delayms(uint ticks) {
  60   1              uchar i;
  61   1              for(; ticks != 0; ticks--)
  62   1              for(i = 100; i != 0; i--);
  63   1      }
  64          
  65          
  66          /**************************************************
  67          函数名称: 图片显示函数
  68          参数含义: start - 从哪一列开始显示
  69                            pic - 图片数据指针
  70                        num - 图片数组字节数
  71          函数功能: 从某一列开始显示一副图片
  72          返 回 值: bool类型,正确显示返回TURE,异常返回FALSE
  73          **************************************************/
  74          bool DisplayPic(uchar start, uchar* pic, uchar num) {
  75   1              uchar i;
  76   1              uchar tempx, tempy;
  77   1              if((Length - 8 + 1) < (start/2))//如果显示长度不够图片显示则出现异常返回FALSE
  78   1                      return FALSE;
  79   1              x = start / 8;//选中哪一块
  80   1              y = start % 8;//选中那块的哪一列
  81   1              for(i = 0; i < num; i++) {
  82   2                      if(i < num/2) {//先扫描上一排
  83   3                              tempx = x;
  84   3                              tempy = y;
  85   3                      }
  86   2                      else {//扫描下一排
  87   3                              tempx = x + 4;
  88   3                              tempy = y;
  89   3                      }
  90   2                      if(tempy != y && tempy % 8 == 0) {//当此块点阵扫描到最后一列,则换到下一块
  91   3                              tempx++;
  92   3                              tempy = 0;
  93   3                      }
  94   2                      P0 &= 0xf0;//第几块点阵译码器
  95   2                      P0 |= 1;//关总显示
  96   2                      SendData(pic[i]);//发送数据
  97   2                      P2 = tempy++;//第几列译码器数据
  98   2                      P0 = tempx << 1;//第几块译码器数据
  99   2                      P0 &= 0xfe;//开块译码器
 100   2                  Delayms(10);
 101   2              }
 102   1              return TURE;
 103   1      }
 104          
 105          
 106          
 107          
 108          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    202    ----
   CONSTANT SIZE    =     48    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       7
   IDATA SIZE       =   ----    ----
C51 COMPILER V7.06   DIANZHEN                                                              08/04/2008 15:26:32 PAGE 3   

   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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