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

📄 lcd12864.lst

📁 基于Mini51板的数字示波器设计
💻 LST
字号:
C51 COMPILER V8.02   LCD12864                                                              01/15/2009 14:10:41 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 "lcd12864.h"
   2          
   3          unsigned char pointX=32;
   4          unsigned char pointY=32;
   5          
   6          void loop_lcd_is_busy(unsigned char right)
   7          {
   8   1        unsigned char tmp,counter=0;
   9   1        do {
  10   2              if(right) tmp = LCD_RCR;
  11   2              else tmp = LCD_LCR;     
  12   2              if(counter++>50) break;//超时跳出
  13   2        }
  14   1        while ((tmp|0x7f)==0xff);      
  15   1      }
  16          
  17          void lcd_cmd_wr(unsigned char cmdcode,unsigned char right)
  18          {
  19   1        loop_lcd_is_busy(right);
  20   1        if(right) LCD_RCW = cmdcode;
  21   1        else LCD_LCW = cmdcode;  
  22   1      }
  23          
  24          void lcd_dat_wr(unsigned char ldata,unsigned char right)
  25          { 
  26   1        loop_lcd_is_busy(right);
  27   1        if(right) LCD_RDW = ldata;
  28   1        else LCD_LDW = ldata;
  29   1      }
  30          
  31          void lcd_clr(void)
  32          {
  33   1              unsigned char i,j;
  34   1              for(i=0;i<8;i++) {
  35   2                      lcd_cmd_wr(ORGY+i,0);
  36   2                      lcd_cmd_wr(ORGX,0);
  37   2                      lcd_cmd_wr(ORGY+i,1);
  38   2                      lcd_cmd_wr(ORGX,1);
  39   2                      for(j=0;j<64;j++) {
  40   3                              lcd_dat_wr(0,0);
  41   3                              lcd_dat_wr(0,1);
  42   3                      }
  43   2              }
  44   1      }
  45          
  46          void lcd_init(void)
  47          {
  48   1        lcd_cmd_wr(DISPON,0);
  49   1        lcd_cmd_wr(DISPFIRST,0);
  50   1        lcd_cmd_wr(ORGY,0);
  51   1        lcd_cmd_wr(ORGX,0);
  52   1        lcd_cmd_wr(DISPON,1);
  53   1        lcd_cmd_wr(DISPFIRST,1);
  54   1        lcd_cmd_wr(ORGY,1);
  55   1        lcd_cmd_wr(ORGX,1);
C51 COMPILER V8.02   LCD12864                                                              01/15/2009 14:10:41 PAGE 2   

  56   1        lcd_clr();
  57   1      }
  58          
  59          //LCD更新指定列,以列为单位,一次更新1列
  60          void lcd_row_wr(unsigned char x,unsigned char *da)//x是列坐标,*da是8字节列数据
  61          {
  62   1              unsigned char j;
  63   1              if(x<64) { //根据列坐标选择左右半屏
  64   2                      for(j=0;j<8;j++) { //写左半屏
  65   3                              lcd_cmd_wr(ORGY+j,0);
  66   3                              lcd_cmd_wr(ORGX+x,0);
  67   3                              lcd_dat_wr(da[j],0);
  68   3                      }
  69   2              }
  70   1              else {
  71   2                      x-=64;//坐标调整
  72   2                      for(j=0;j<8;j++) { //写右半屏
  73   3                              lcd_cmd_wr(ORGY+j,1);
  74   3                              lcd_cmd_wr(ORGX+x,1);
  75   3                              lcd_dat_wr(da[j],1);
  76   3                      }               
  77   2              }
  78   1      }
  79          
  80          
  81          void lcd_disp(unsigned char x,unsigned char y)
  82          {
  83   1              unsigned char da[8];
  84   1              unsigned char j;
  85   1              y = 63-y;
  86   1              for(j=1;j<7;j++) da[j] = 0x0;
  87   1              {//绘制边框
  88   2                      da[0]=0x01;
  89   2                      da[7]=0x80;
  90   2                              if((x==0)||(x==127)) {
  91   3                              for(j=0;j<8;j++) da[j] = 0xff;
  92   3                      }
  93   2              }
  94   1              
  95   1              //绘制由变量pointY控制的水平游标线      
  96   1              if(x%5==0) da[pointY>>3] |= 0x01 << (pointY&0x07);
  97   1      
  98   1              //绘制由变量pointX控制的垂直游标线
  99   1              if(x==pointX) 
 100   1                      for(j=0;j<64;j++) 
 101   1                              if(j%5==0) da[j>>3] |= 0x01 <<(j&0x07); 
 102   1              //绘制信号波形
 103   1              da[y/8] |= 0x01<<(y%8);
 104   1              lcd_row_wr(x,da);
 105   1      }
 106          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    503    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      15
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V8.02   LCD12864                                                              01/15/2009 14:10:41 PAGE 3   


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

⌨️ 快捷键说明

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