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

📄 lcd12864.lst

📁 单片机密码-24c01-12864-4x4按键扫描 初始密码是123456,按#确认 进入后,按*修改密码
💻 LST
字号:
C51 COMPILER V8.02   LCD12864                                                              06/21/2008 15:17:30 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN LCD12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD12864.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REG52.H>
   2          #include "LCD12864.h"
   3          #include "ZK.h"
   4          //#include"common.h"
   5          
   6          
   7          
   8          
   9          
  10          /*忙判别*/
  11          void lcd_busy(void)
  12          {
  13   1          p_di=0;p_rw=1;P0=0xff;
  14   1          while(1)
  15   1          {
  16   2              p_e=1;
  17   2              if(P0<0x80) break;
  18   2              p_e=0;
  19   2          } 
  20   1          p_e=0;
  21   1          p_rw=0;
  22   1      }
  23          
  24          /*设置xy*/
  25          void set_xy(uchar x,uchar y)
  26          {
  27   1          if (x>=64) 
  28   1          {
  29   2              p_csa=0;p_csb=1;
  30   2          }
  31   1          else 
  32   1          {
  33   2              p_csb=0;p_csa=1;
  34   2          }
  35   1          lcd_busy();
  36   1          p_di=0;P0=0x40|x;p_e=1;p_e=0;
  37   1          lcd_busy();
  38   1          p_di=0;P0=0xb8|y;p_e=1;p_e=0;
  39   1          P0=0xff;
  40   1      }
  41          
  42          void lw(uchar x,uchar y,uchar dd)
  43          {
  44   1          set_xy(x,y);
  45   1          lcd_busy();p_di=1;P0=dd;p_e=1;p_e=0;
  46   1          P0=0xff;
  47   1      }
  48          
  49          /*显示初始化*/
  50          #pragma disable
  51          void lcd_init(void)
  52          {
  53   1          uchar x,y;
  54   1          
  55   1          /*开显示*/
C51 COMPILER V8.02   LCD12864                                                              06/21/2008 15:17:30 PAGE 2   

  56   1          p_e=p_di=0;
  57   1          p_csa=p_csb=0;
  58   1          p_csa=1;lcd_busy();P0=0x3f;p_e=1;p_e=0;p_csa=0;
  59   1          p_csb=1;lcd_busy();P0=0x3f;p_e=1;p_e=0;p_csb=0;
  60   1          /*0行开始显示*/
  61   1          p_csa=1;lcd_busy();p_di=0;P0=0xc0;p_e=1;p_e=0;p_csa=0;
  62   1          p_csb=1;lcd_busy();p_di=0;P0=0xc0;p_e=1;p_e=0;p_csb=0;
  63   1          for (y=0;y<8;y++)
  64   1          {
  65   2              for (x=0;x<128;x++) lw(x,y,0);
  66   2          }
  67   1      }
  68          
  69          
  70          //显示汉字,fb==1:反白显示
  71          void dh(uchar x,uchar y,uchar n,uchar fb)
  72          {
  73   1          uchar i,dd;
  74   1          for (i=0;i<16;i++)
  75   1          {
  76   2              dd=hz[n].Msk[i];
  77   2              if (fb) dd=255-dd;
  78   2              lw(x*8+i,y,dd);
  79   2              dd=hz[n].Msk[i+16];
  80   2              if (fb) dd=255-dd;
  81   2              lw(x*8+i,y+1,dd);
  82   2          }
  83   1      }
  84          
  85          //显示字符,fb==1:反白显示
  86          void da(uchar x,uchar y,uchar n,uchar fb)
  87          {
  88   1          uchar i,dd;
  89   1          n-=32;
  90   1          if (n>128) n=0;
  91   1          if (fb) dd=255; else dd=0; 
  92   1          lw(x*8,y,dd);
  93   1          lw(x*8,y+1,dd);
  94   1          for (i=0;i<8;i++)
  95   1          {
  96   2              dd=asc[i+n*16];
  97   2              if (fb) dd=255-dd; 
  98   2              lw(x*8+i+1,y,dd);
  99   2              dd=asc[i+n*16+8];
 100   2              if (fb) dd=255-dd; 
 101   2              lw(x*8+i+1,y+1,dd);
 102   2          }
 103   1      }
 104          
 105          void print_str(uchar x,uchar y,char *str,uchar fb)
 106          {
 107   1          uchar c1,c2,i,j;
 108   1          
 109   1          j=0;                          //字符串是最后一位是0结尾?
 110   1          while(str[j])         //如果不是最后一位则进入循环
 111   1          {
 112   2              c1=str[j];
 113   2              if(c1>128)
 114   2              {
 115   3                  c2=str[j+1];
 116   3                  for(i=0;i<HZMAX;i++)
 117   3                  {
C51 COMPILER V8.02   LCD12864                                                              06/21/2008 15:17:30 PAGE 3   

 118   4                      if(c1==hz[i].Index[0] && c2==hz[i].Index[1])
 119   4                      {
 120   5                          break;
 121   5                      }
 122   4                  }
 123   3                  if(i<HZMAX)
 124   3                  {
 125   4                      /* Found HZ */
 126   4                      dh(j+x,y,i,fb);
 127   4                  }
 128   3                  else
 129   3                  {
 130   4                      /* Not Found HZ */
 131   4                      dh(j+x,y,0,0);
 132   4                  }
 133   3                  j+=2;
 134   3              }
 135   2              else
 136   2              {
 137   3                  da(x+j,y,c1,fb);
 138   3                  j++;        
 139   3              }
 140   2          }
 141   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    634    ----
   CONSTANT SIZE    =   2862    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      16
   IDATA SIZE       =   ----    ----
   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 + -