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

📄 st7920.lst

📁 c语言实现st7920驱动
💻 LST
字号:
C51 COMPILER V7.50   ST7920                                                                09/06/2008 00:08:16 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          
   4          #define uchar unsigned char
   5          #define uint  unsigned int
   6          
   7          #define lcdBus P2
   8          sbit lcd_rs = P0^7;
   9          sbit lcd_rw = P0^6;
  10          sbit lcd_e  = P0^5;
  11          
  12          static void delayus(uchar n)
  13          {
  14   1          n = n>>1;
  15   1          while( --n );
  16   1      }
  17          
  18          static void delayms(uchar n)
  19          {
  20   1          while( n-- )
  21   1          {
  22   2              delayus(240);
  23   2              delayus(240);
  24   2              delayus(240);
  25   2              delayus(240);
  26   2          }
  27   1      }
  28          
  29          void checkBusy()
  30          {
  31   1          lcd_rs = 0;
  32   1          lcd_rw = 1;
  33   1          lcd_e = 1;
  34   1          lcdBus = 0xff;
  35   1          while( (lcdBus&0x80)==0x80 );
  36   1          lcd_e = 0;
  37   1      }
  38          
  39          void writeCommand(uchar com)
  40          {
  41   1          checkBusy();
  42   1          lcd_rs = 0;
  43   1          lcd_rw = 0;
  44   1          lcdBus = com;
  45   1          lcd_e = 1;
  46   1          delayus( 10 );
  47   1          lcd_e = 0;
  48   1          delayus( 10 );
  49   1      }
  50          
  51          void writeData(uchar dat)
  52          {
  53   1          checkBusy();
  54   1          lcd_rs = 1;
  55   1          lcd_rw = 0;
C51 COMPILER V7.50   ST7920                                                                09/06/2008 00:08:16 PAGE 2   

  56   1          lcdBus = dat;
  57   1          lcd_e = 1;
  58   1          delayus( 10 );
  59   1          lcd_e = 0;
  60   1          delayus( 10 );
  61   1      }
  62          
  63          void lcdReset()
  64          {
  65   1          delayms( 40 );
  66   1          writeCommand( 0x30 ); //0b0011x0xx 8-bit interface and basic instruction
  67   1          delayus( 130 );
  68   1          writeCommand( 0x30 ); //0b0011x0xx
  69   1          delayus( 50 );
  70   1          writeCommand( 0x0c ); //0b00001bcd display on/off control
  71   1          delayus( 130 );
  72   1          writeCommand( 0x01 ); //0b00000001 display clear
  73   1          delayms( 12 );
  74   1          writeCommand( 0x06 ); //0b000001(I/D)s  entry mode set
  75   1      }
  76          
  77          void writeCGRAM(uchar addr,uchar *array) // 0<=addr<=3
  78          {
  79   1          uchar i;
  80   1          addr = addr<<4;
  81   1          addr = addr|0x40;
  82   1          writeCommand( 0x30 );
  83   1          writeCommand( addr );
  84   1          for( i=0 ; i<16 ; i++ )
  85   1          {
  86   2              writeData( array[i*2] );
  87   2              writeData( array[i*2+1] );
  88   2          }
  89   1      }
  90          
  91          void writeString(uchar line,uchar *str)
  92          {
  93   1          uchar i;
  94   1          switch( line )
  95   1          {
  96   2              case 0:
  97   2                  writeCommand(0x80);
  98   2                  break;
  99   2              case 1:
 100   2                  writeCommand(0x90);
 101   2                  break;
 102   2              case 2:
 103   2                  writeCommand(0x88);
 104   2                  break;
 105   2              case 3:
 106   2                  writeCommand(0x98);
 107   2          }
 108   1          for( i=0 ; str[i] ; i++ )
 109   1          {
 110   2              writeData(str[i]);
 111   2              delayus(100);
 112   2          }
 113   1      }
 114          
 115          void writeBmp(uchar *img)
 116          {
 117   1          uchar x,y,i;
C51 COMPILER V7.50   ST7920                                                                09/06/2008 00:08:16 PAGE 3   

 118   1              uint j = 0;
 119   1              for( i=0 ; i<9 ; i+=8 )
 120   1              for( y=0 ; y<32 ; y++ )
 121   1              for( x=0 ; x<8 ; x++ )
 122   1              {
 123   2                  writeCommand(0x36);
 124   2                      writeCommand(y+0x80);
 125   2                      writeCommand(x+0x80+i);
 126   2                      writeCommand(0x30);
 127   2                      writeData(img[j++]);
 128   2                      writeData(img[j++]);
 129   2              }
 130   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    400    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   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 + -