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

📄 lcm320240-function.lst

📁 51单片机驱动青云创新的LCM3202403的源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   LCM320240_FUNCTION                                                    03/19/2009 15:59:28 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LCM320240_FUNCTION
OBJECT MODULE PLACED IN LCM320240-function.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL\C51\BIN\C51.EXE LCM320240-function.C LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"LCM3202403.h"
   2          
   3             
   4          /* ------------------初始化子程序------------------------*/
   5          void LCM_initial(void)
   6          {
   7   1          wrcmd(SystemSet);//系统设置
   8   1              wrdata(0x30);//8*8                     1
   9   1          wrdata(0x87);//8                       2
  10   1          wrdata(0x07);//8                       3
  11   1          wrdata(0x27);//显示每行字节数40        4         
  12   1          wrdata(0x39);//设置显示频率                    5
  13   1          wrdata(0xef);//行数240                 6 
  14   1          wrdata(0x28);//一行占缓冲区字节数      7
  15   1          wrdata(0x00);
  16   1              
  17   1              wrcmd(Scroll);//存储设置       
  18   1              wrdata(0x00); //                       1
  19   1          wrdata(0x00);//起始地址0000H           2
  20   1          wrdata(0xef);//240行                   3
  21   1          wrdata(0x00);//                        4                         
  22   1          wrdata(0x40);//起始地址4000H                   5
  23   1          wrdata(0xef);//240行                                   6
  24   1          wrdata(0x00);//                                7
  25   1          wrdata(0x80);//起始地址8000H                   8
  26   1          wrdata(0x00);//                                                9
  27   1          wrdata(0x00);//起始地址0000H                   10
  28   1           
  29   1              wrcmd(HdotScr);//设置水平点位移
  30   1          wrdata(0x00);       
  31   1              
  32   1              wrcmd(Ovlay);//第一层文本格式,三层或关系
  33   1          wrdata(0x00);
  34   1      
  35   1              wrcmd(CsrForm);//光标格式设置
  36   1              wrdata(0x07);//8*8
  37   1          wrdata(0x87);//block cursor
  38   1      
  39   1              wrcmd(DispOn);//显示屏开
  40   1              wrdata(0x16);//一区开不闪,二区开不闪,光标闪烁
  41   1                
  42   1      }
  43          
  44          
  45          /* ------------------图形写入子程序--------------------------*/
  46          void LCM_picture(uint x, uint y, uint width, uint height, uchar *p)  //write a dot on the 2nd layer
  47          {
  48   1              uchar i, j;
  49   1              uint addr;
  50   1              addr = 0x4000 + x + y*AP;
  51   1              if(width % 8 == 0)
  52   1                      width = width / 8;              //点阵对应到每行占用的字节数
  53   1              else
  54   1                      width = (width + 8) / 8;//不足一字节,按一字节算,取整
  55   1              for(i=0; i<height; i++)         //图形点阵,像素高度
C51 COMPILER V7.20   LCM320240_FUNCTION                                                    03/19/2009 15:59:28 PAGE 2   

  56   1              {       
  57   2                      wrcmd(CsrW);                    // 光标Locate,定位0x46
  58   2                      wrdata(addr);                   // 写入参数CSRL设置参数光标指针低8位
  59   2                      wrdata(addr>>8);                // 写入参数CSRH设置参数光标指针高8位
  60   2                      wrcmd(CsrDirR);                 // 光标移动方向定义:自动右移
  61   2                      wrcmd(mWrite);                  // 数据写入指令,代码0x42
  62   2                      for(j=0; j<width; j++)
  63   2                      {
  64   3                              wrdata(*p++);           // 写入数据
  65   3                      }                                                       
  66   2                      addr = addr + AP;               //按行写入数据,每行在内存中占用地址为AP,所以地址每次加AP                      
  67   2              }                           
  68   1      }
  69          
  70          
  71          /* ------------------划线子程序--------------------------
  72          void LCM_line(uint x1, uint y1, uint x2, uint y2)  //write a line on the 2nd layer
  73          {                                                                                                 
  74                  int dalt_x, dalt_y, err = 0;
  75                  if(y1>y2)
  76                  {               
  77                          SWAP(x1, x2);
  78                          SWAP(y1, y2);
  79                  }
  80                  LCM_dot(x1, y1);
  81                  dalt_x=x2-x1;
  82                  dalt_y=y2-y1;
  83                  if(dalt_x>=0)
  84                  {
  85                          if(dalt_y>dalt_x)
  86                          {
  87                                  while(y1<y2)
  88                                  {
  89                                          if(err<0)
  90                                          {
  91                                                  x1=x1+1;
  92                                                  y1=y1+1;
  93                                                  err=err+dalt_y-dalt_x;
  94                                          }
  95                                          else
  96                                          {
  97                                                  y1=y1+1;
  98                                                  err=err-dalt_x;
  99                                          }
 100                                          LCM_dot(x1, y1);
 101                                  }
 102                          }
 103                          else
 104                          {
 105                                  if(dalt_y==0)
 106                                          y1=y1-1;
 107                                  while(x1<x2)
 108                                  {
 109                                          if(err<0)
 110                                          {
 111                                                  x1=x1+1;
 112                                                  err=err+dalt_y;
 113                                          }
 114                                          else
 115                                          {
 116                                                  y1=y1+1;
 117                                                  x1=x1+1;
C51 COMPILER V7.20   LCM320240_FUNCTION                                                    03/19/2009 15:59:28 PAGE 3   

 118                                                  err=err+dalt_y-dalt_x;
 119                                          }
 120                                          LCM_dot(x1, y1);
 121                                  }
 122                          }
 123                  }
 124                  else
 125                  {
 126                          dalt_x=x1-x2;
 127                          if(dalt_y>dalt_x)
 128                          {
 129                                  while(y1<y2)
 130                                  {
 131                                          if(err<0)
 132                                          {
 133                                                  x1=x1-1;
 134                                                  y1=y1+1;
 135                                                  err=err+dalt_y-dalt_x;
 136                                          }
 137                                          else
 138                                          {
 139                                                  y1=y1+1;
 140                                                  err=err-dalt_x;
 141                                          }
 142                                          LCM_dot(x1, y1);
 143                                  }
 144                          }
 145                          else
 146                          {
 147                                  if(dalt_y==0)
 148                                          y1=y1-1;
 149                                  while(x1>x2)
 150                                  {
 151                                          if(err<0)
 152                                          {
 153                                                  x1=x1-1;
 154                                                  err=err+dalt_y;
 155                                          }
 156                                          else
 157                                          {
 158                                                  x1=x1-1;
 159                                                  y1=y1+1;
 160                                                  err=err+dalt_y-dalt_x;
 161                                          }
 162                                          LCM_dot(x1, y1);
 163                                  }
 164                          }
 165                  }
 166          }*/
 167          
 168          
 169          /* ------------------坐标点写入子程序--------------------------
 170          void LCM_dot(uint x, uint y)  //write a dot on the 2nd layer
 171          {
 172                  uint addr;
 173                  uchar addrh, addrl;
 174                  uchar dotdata = 0x80, m;
 175                  addr = 0x4000 + x/8 + y*AP;
 176                  m = x%8;
 177                  dotdata = dotdata >> m;
 178                  addrl = addr;
 179                  addrh = addr>>8;
C51 COMPILER V7.20   LCM320240_FUNCTION                                                    03/19/2009 15:59:28 PAGE 4   

 180                  wrcmd(CsrDirR);                 // 光标移动方向定义:自动右移
 181                  wrcmd(CsrW);                    // 光标Locate,定位0x46

⌨️ 快捷键说明

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