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

📄 dianzhen.lst

📁 笔者自己弄的一个32*16的点阵模块,使用51单片机以及74hc595和74hc138实现,内有动态显示程序和静态显示程序,以及Protel99SE原理图和PCB图.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   DIANZHEN                                                              08/20/2008 15:27:17 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          uchar start;
   5          uchar CS_3_8_0, CS_3_8_1;
   6          
   7          void SendData(uchar ddata);//向74HC595发送数据
   8          void DisplayPic(uchar* Pic, uchar num);  
   9          void Delayms(uint ticks);
  10          
  11          //图片数据
  12          uchar code pic[] = {
  13          /*--  文字:  中  --*/
  14          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  15          0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,
  16          0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,
  17          
  18          /*--  空格 --*/
  19          //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  20          
  21          /*--  文字:  国  --*/
  22          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  23          0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,0xFE,0x00,0x00,
  24          0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,0x00,
  25          
  26          /*--  空格 --*/
  27          //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  28          
  29          /*--  文字:  人  --*/
  30          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  31          0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  32          0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x01,0x06,0x0C,0x18,0x30,0x60,0x20,0x00,
  33          
  34          /*--  空格 --*/
  35          //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  36          
  37          /*--  文字:  民  --*/
  38          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  39          0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0xF2,0x92,0x92,0x92,0x9E,0x80,0x80,0x00,0x00,
  40          0x00,0x00,0xFF,0x40,0x20,0x10,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0xF0,0x00,0x00,
  41          
  42          /*--  空格 --*/
  43          //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  44          
  45          /*--  文字:  解  --*/
  46          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  47          0x08,0xF4,0x57,0x54,0xFC,0x54,0xF0,0x42,0xA2,0x1E,0x02,0xA2,0x62,0x3E,0x00,0x00,
  48          0x80,0x7F,0x02,0x02,0x5F,0x82,0x7F,0x0A,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x00,
  49          
  50          /*--  空格 --*/
  51          //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  52          
  53          /*--  文字:  放  --*/
  54          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  55          0x08,0x08,0xF8,0x49,0x4E,0xC8,0x88,0x40,0x38,0xCF,0x0A,0x08,0x88,0x78,0x08,0x00,
C51 COMPILER V7.06   DIANZHEN                                                              08/20/2008 15:27:17 PAGE 2   

  56          0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x40,0x20,0x10,0x0B,0x0E,0x31,0x60,0x20,0x00,
  57          
  58          /*--  空格 --*/
  59          //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60          
  61          /*--  文字:  军  --*/
  62          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  63          0x00,0x18,0x26,0x22,0xA2,0x72,0x2E,0xAA,0x22,0x22,0x22,0x32,0x22,0x0A,0x06,0x00,
  64          0x00,0x10,0x10,0x12,0x13,0x12,0x12,0xFF,0x12,0x12,0x12,0x13,0x12,0x18,0x10,0x00,
  65          
  66          };
  67          
  68          
  69          void main(void) {
  70   1              while(1) {
  71   2                      start = 0;
  72   2                      DisplayPic(pic, 112);//显示pic1
  73   2                      Delayms(10);
  74   2              }
  75   1      }
  76          
  77          /**************************************************
  78          函数名称: 串行数据发送函数
  79          参数含义: ddata - 字节显示数据
  80          函数功能: 主机向从机发送一个字节串行数据
  81          返 回 值: 无返回
  82          **************************************************/                                                      
  83          void SendData(uchar ddata) {
  84   1              uchar count=0;
  85   1              for(; count != 8; count++) {
  86   2                      SCK = 0;
  87   2                      if(ddata & 0x80)
  88   2                              MOSI=1; //发送数据
  89   2                      else
  90   2                              MOSI=0;
  91   2                      SCK = 1;                                //发送时钟
  92   2                      ddata <<= 1;                            //数据右移一位
  93   2              }
  94   1              SS = 0;
  95   1              SS = 1;                                 //锁存数据
  96   1              SS = 0;
  97   1      }
  98          
  99          /**************************************************
 100          函数名称: 延时函数
 101          参数含义: 延长时间
 102          函数功能: 延时
 103          返 回 值: 无返回
 104          **************************************************/
 105          void Delayms(uint ticks) {
 106   1              uchar i;
 107   1              for(; ticks != 0; ticks--)
 108   1              for(i = 100; i != 0; i--);
 109   1      }
 110          
 111          
 112          /**************************************************
 113          函数名称: 图片显示函数
 114          参数含义: start - 从哪一列开始显示
 115                            pic - 图片数据指针
 116                        num - 图片数组字节数
 117          函数功能: 从某一列开始显示一副图片
C51 COMPILER V7.06   DIANZHEN                                                              08/20/2008 15:27:17 PAGE 3   

 118          返 回 值: bool类型,正确显示返回TURE,异常返回FALSE
 119          **************************************************/
 120          void DisplayPic(uchar* Pic, uchar num) {
 121   1              uchar temp_cs0, temp_cs1;
 122   1              uchar i, j, k;
 123   1              uchar tempdata;
 124   1              for(i = 0; i < 32; i++) {//图片从最右边一列移动到最左边一列的显示代码
 125   2                      for(k = 0; k < 10; k++) {                       
 126   3                              if(i < 8) {//图片从最右边向左移动,所以最开始在最右边
 127   4                                      CS_3_8_0 = 3;
 128   4                                      CS_3_8_1 = (7 - i) % 8;
 129   4                              }
 130   3                              if(i >= 8 && i < 16) {//当向左移动到第二块范围
 131   4                                      CS_3_8_0 = 2;
 132   4                                      CS_3_8_1 = (7 - (i - 8)) % 8;
 133   4                              }
 134   3                              if(i >= 16 && i < 24) {//当向左移动到第三块范围
 135   4                                      CS_3_8_0 = 1;
 136   4                                      CS_3_8_1 = (7 - (i - 16)) % 8;
 137   4                              }
 138   3                              if(i >= 24 && i < 32) {//当向左移动到第四块范围
 139   4                                      CS_3_8_0 = 0;
 140   4                                      CS_3_8_1 = (7 - (i - 24)) % 8;
 141   4                              }
 142   3                              
 143   3                              tempdata = start;//第一排起始数据偏移量

⌨️ 快捷键说明

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