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

📄 lcd.lst

📁 使用 Keil uVision2 用C8051F020 用12864显示输出日历 星期 秒表 三个闹铃
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   10/31/2006 13:43:02 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: c:\KEIL\C51\BIN\C51.exe LCD.c DB OE

stmt level    source

   1          #include "c8051F020.h"
   2          #include <intrins.h>
   3          
   4          
   5          #define LCD_DATA P2
   6          #define LCD_RS P10
   7          #define LCD_RW P11
   8          #define LCD_E  P12
   9          #define LCD_CS1  P13
  10          #define LCD_CS2  P14
  11          #define LCD_RST  P15
  12          
  13          void Delay1ms(unsigned char);
  14          
  15          #define SELECTCS 0
  16          void LCD_WaitReady1(void) //判断LCD控制芯片KS0108是否忙
  17          {
  18   1              LCD_DATA=0xff;
  19   1              _nop_();
  20   1              LCD_CS2=SELECTCS;
  21   1              LCD_RW=1;
  22   1              LCD_RS=0;
  23   1              LCD_E=1;
  24   1              while (LCD_DATA&0x80);
  25   1              LCD_CS2=!SELECTCS;
  26   1      }
  27          
  28          void LCD_WaitReady2(void) //判断LCD控制芯片KS0108是否忙
  29          {
  30   1              LCD_DATA=0xff;
  31   1              _nop_();
  32   1              LCD_CS1=SELECTCS;
  33   1              LCD_RW=1;
  34   1              LCD_RS=0;
  35   1              LCD_E=1;
  36   1              while (LCD_DATA&0x80);
  37   1              LCD_CS1=!SELECTCS;
  38   1      }
  39          
  40          void LCD_WriteCommand1(char ch) //向LCD控制芯片KS0108发送控制命令
  41          {
  42   1              LCD_WaitReady1();
  43   1              LCD_CS2=SELECTCS;
  44   1              LCD_RW=0;
  45   1              LCD_RS=0;
  46   1              LCD_DATA=ch;
  47   1              LCD_E=1;
  48   1              LCD_E=0;
  49   1              LCD_CS2=!SELECTCS;
  50   1      }
  51          
  52          void LCD_WriteCommand2(char ch) //向LCD控制芯片KS0108发送控制命令
  53          {
  54   1              LCD_WaitReady2();
  55   1              LCD_CS1=SELECTCS;
C51 COMPILER V7.06   LCD                                                                   10/31/2006 13:43:02 PAGE 2   

  56   1              LCD_RW=0;
  57   1              LCD_RS=0;
  58   1              LCD_DATA=ch;
  59   1              LCD_E=1;
  60   1              LCD_E=0;
  61   1              LCD_CS1=!SELECTCS;
  62   1      }
  63          
  64          void LCD_WriteData1(char ch)    //向LCD控制芯片KS0108发送数据命令
  65          {
  66   1              LCD_WaitReady1();
  67   1              LCD_CS2=SELECTCS;
  68   1              LCD_RW=0;
  69   1              LCD_RS=1;
  70   1              LCD_DATA=ch;
  71   1              LCD_E=1;
  72   1              LCD_E=0;
  73   1              LCD_CS2=!SELECTCS;
  74   1      }
  75          
  76          void LCD_WriteData2(char ch)    //向LCD控制芯片KS0108发送数据命令
  77          {
  78   1              LCD_WaitReady2();
  79   1              LCD_CS1=SELECTCS;
  80   1              LCD_RW=0;
  81   1              LCD_RS=1;
  82   1              LCD_DATA=ch;
  83   1              LCD_E=1;
  84   1              LCD_E=0;
  85   1              LCD_CS1=!SELECTCS;
  86   1      }
  87          
  88          
  89          void LCD_WriteHZ(char x,char y,char *Dot) //显示16*16点阵汉字
  90          {
  91   1      char i;
  92   1              for (i=0;i<32;i++)
  93   1              {
  94   2                      if ((x+i%16)<64)
  95   2                      {
  96   3                              LCD_WriteCommand1(0xB8+y+i/16);
  97   3                              LCD_WriteCommand1(0x40+x+i%16);
  98   3                              LCD_WriteData1(Dot[i]);
  99   3                      }
 100   2                      else
 101   2                      {
 102   3                              LCD_WriteCommand2(0xB8+y+i/16);
 103   3                              LCD_WriteCommand2(0x40+x-64+i%16);
 104   3                              LCD_WriteData2(Dot[i]);
 105   3                      }
 106   2              }
 107   1      }
 108          
 109          char code Number[]=
 110          /*--  文字:  0123456789:/  --*/
 111          {
 112          0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,
 113          0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,0x00,
 114          0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x14,0x12,0x11,0x10,0x18,0x00,
 115          0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x0C,0x10,0x10,0x10,0x11,0x0E,0x00,
 116          0x00,0x80,0x40,0x20,0xF8,0x00,0x00,0x00,0x00,0x03,0x02,0x12,0x1F,0x12,0x12,0x00,
 117          0x00,0xF8,0x88,0x48,0x48,0x48,0x88,0x00,0x00,0x0C,0x10,0x10,0x10,0x10,0x0F,0x00,
C51 COMPILER V7.06   LCD                                                                   10/31/2006 13:43:02 PAGE 3   

 118          0x00,0xE0,0x10,0x88,0x88,0x98,0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x10,0x0F,0x00,
 119          0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,
 120          0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x0E,0x11,0x10,0x10,0x11,0x0E,0x00,
 121          0x00,0xF0,0x08,0x08,0x08,0x90,0xE0,0x00,0x00,0x00,0x19,0x11,0x11,0x08,0x07,0x00,
 122          0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
 123          0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,
 124          };
 125          
 126          
 127          void LCD_WriteChar(char x,char y,char *Dot) //显示8*16点阵字符
 128          {
 129   1      char i;
 130   1              for (i=0;i<16;i++)
 131   1              {
 132   2                      if ((x+i%8)<64)
 133   2                      {
 134   3                              LCD_WriteCommand1(0xB8+y+i/8);
 135   3                              LCD_WriteCommand1(0x40+x+i%8);
 136   3                              LCD_WriteData1(Dot[i]);
 137   3                      }
 138   2                      else
 139   2                      {
 140   3                              LCD_WriteCommand2(0xB8+y+i/8);
 141   3                              LCD_WriteCommand2(0x40+x-64+i%8);
 142   3                              LCD_WriteData2(Dot[i]);
 143   3                      }
 144   2              }
 145   1      }
 146          
 147          void LCD_DispChar(char x,char y,char ch) //128*64  取值x=0-128 y=0-8
 148          {
 149   1              if ((ch>=0)&&(ch<=0xb))
 150   1              {
 151   2                      LCD_WriteChar(x,y,&Number[ch*16]);
 152   2              }
 153   1      }
 154          
 155          void InitLCD(void)      //初始化LCD
 156          {
 157   1              char i,j;
 158   1              LCD_RST=0;
 159   1              Delay1ms(1);
 160   1              LCD_RST=1;
 161   1              Delay1ms(1);
 162   1              LCD_WriteCommand1(0xc0);        
 163   1              LCD_WriteCommand2(0xc0);
 164   1              LCD_WriteCommand1(0x3f);        //开显示
 165   1              LCD_WriteCommand2(0x3f);
 166   1      
 167   1              for (j=0;j<8;j++)                       //清屏
 168   1              {
 169   2                      LCD_WriteCommand1(0xB8+j);      //清左半屏
 170   2                      LCD_WriteCommand1(0x40);
 171   2                      for (i=0;i<64;i++)
 172   2                              LCD_WriteData1(0x00);
 173   2      
 174   2                      LCD_WriteCommand2(0xB8+j);      //清右半屏
 175   2                      LCD_WriteCommand2(0x40);
 176   2                      for (i=0;i<64;i++)
 177   2                              LCD_WriteData2(0x00);
 178   2              }
 179   1      }
C51 COMPILER V7.06   LCD                                                                   10/31/2006 13:43:02 PAGE 4   

 180          
 181          void DispBmp(char *buf) //显示一幅位图
 182          {
 183   1      int i,j;
 184   1              for (j=0;j<8;j++)                       //显示位图
 185   1              {
 186   2                      LCD_WriteCommand1(0xB8+j);      
 187   2                      LCD_WriteCommand1(0x40);
 188   2                      for (i=0;i<64;i++)
 189   2                              LCD_WriteData1(buf[(j*2)*64+i]);
 190   2                      LCD_WriteCommand2(0xB8+j);      
 191   2                      LCD_WriteCommand2(0x40);
 192   2                      for (i=0;i<64;i++)
 193   2                              LCD_WriteData2(buf[(j*2+1)*64+i]);
 194   2              }
 195   1      }
 196          
 197          void Delay1s(unsigned char T);
 198          
 199          
 200          


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