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

📄 ks0108.lst

📁 单片机C语言程序设计.日历时钟用液晶显示
💻 LST
字号:
C51 COMPILER V8.05a   KS0108                                                               08/04/2007 17:18:57 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE KS0108
OBJECT MODULE PLACED IN KS0108.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE KS0108.C BROWSE DEBUG OBJECTEXTEND

line level    source

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

  56          {
  57   1              LCD_WaitReady2();
  58   1              LCD_CS1=SELECTCS;
  59   1              LCD_RW=0;
  60   1              LCD_RS=0;
  61   1              LCD_DATA=ch;
  62   1              LCD_E=1;
  63   1              LCD_E=0;
  64   1              LCD_CS1=!SELECTCS;
  65   1      }
  66          
  67          void LCD_WriteData1(char ch)    //向LCD控制芯片KS0108发送数据命令
  68          {
  69   1              LCD_WaitReady1();
  70   1              LCD_CS2=SELECTCS;
  71   1              LCD_RW=0;
  72   1              LCD_RS=1;
  73   1              LCD_DATA=ch;
  74   1              LCD_E=1;
  75   1              LCD_E=0;
  76   1              LCD_CS2=!SELECTCS;
  77   1      }
  78          
  79          void LCD_WriteData2(char ch)    //向LCD控制芯片KS0108发送数据命令
  80          {
  81   1              LCD_WaitReady2();
  82   1              LCD_CS1=SELECTCS;
  83   1              LCD_RW=0;
  84   1              LCD_RS=1;
  85   1              LCD_DATA=ch;
  86   1              LCD_E=1;
  87   1              LCD_E=0;
  88   1              LCD_CS1=!SELECTCS;
  89   1      }
  90          
  91          
  92          
  93          void LCD_WriteHZ(char x,char y,char *Dot) //显示16*16点阵汉字
  94          {
  95   1      char i;
  96   1              for (i=0;i<32;i++)
  97   1              {
  98   2                      if ((x+i%16)<64)
  99   2                      {
 100   3                              LCD_WriteCommand1(0xB8+y+i/16);
 101   3                              LCD_WriteCommand1(0x40+x+i%16);
 102   3                              LCD_WriteData1(Dot[i]);
 103   3                      }
 104   2                      else
 105   2                      {
 106   3                              LCD_WriteCommand2(0xB8+y+i/16);
 107   3                              LCD_WriteCommand2(0x40+x-64+i%16);
 108   3                              LCD_WriteData2(Dot[i]);
 109   3                      }
 110   2              }
 111   1      }
 112          
 113          ///////////////////////////////////////////////////////////////////
 114          /*  void LCD_WriteChar(char x,char y,char *Dot) //显示8*16点阵字符
 115          {
 116          char i;
 117                  for (i=0;i<16;i++)
C51 COMPILER V8.05a   KS0108                                                               08/04/2007 17:18:57 PAGE 3   

 118                  {
 119                          if ((x+i%8)<64)
 120                          {
 121                                  LCD_WriteCommand1(0xB8+y+i/8);
 122                                  LCD_WriteCommand1(0x40+x+i%8);
 123                                  LCD_WriteData1(Dot[i]);
 124                          }
 125                          else
 126                          {
 127                                  LCD_WriteCommand2(0xB8+y+i/8);
 128                                  LCD_WriteCommand2(0x40+x-64+i%8);
 129                                  LCD_WriteData2(Dot[i]);
 130                          }
 131                  }
 132          }
 133          void LCD_DispChar(char x,char y,char ch) //128*64  取值x=0-128 y=0-8
 134          {
 135                  if ((ch>=0)&&(ch<=0xb))
 136                  {
 137                          LCD_WriteChar(x,y,&Number[ch*16]);
 138                  }
 139          }  */
 140          /////////////////////////////////////////////////////////////////////
 141          
 142          
 143          void LCD_DispChar(char x,char y,char ch)
 144          {
 145   1              unsigned char i;
 146   1              unsigned char code *Dot;
 147   1              Dot=Number[ch-0x20];
 148   1              for (i=0;i<16;i++)
 149   1              {
 150   2                      if ((x+i%8)<64)
 151   2                      {
 152   3                              LCD_WriteCommand1(0xB8+y+i/8);
 153   3                              LCD_WriteCommand1(0x40+x+i%8);
 154   3                              LCD_WriteData1(Dot[i]);
 155   3                      }
 156   2                      else
 157   2                      {
 158   3                              LCD_WriteCommand2(0xB8+y+i/8);
 159   3                              LCD_WriteCommand2(0x40+x-64+i%8);
 160   3                              LCD_WriteData2(Dot[i]);
 161   3                      }
 162   2              }
 163   1      }
 164          
 165          
 166          void Display(char x,char y,char *str)
 167          {
 168   1              while(*str)
 169   1              {
 170   2                      LCD_DispChar(x,y,*str++);
 171   2                      x+=8;
 172   2              }
 173   1      }
 174          
 175          
 176          void InitLCD(void)      //初始化LCD
 177          {
 178   1              char i,j;
 179   1              LCD_RST=0;
C51 COMPILER V8.05a   KS0108                                                               08/04/2007 17:18:57 PAGE 4   

 180   1              Delay1ms(1);
 181   1              LCD_RST=1;
 182   1      
 183   1              LCD_WriteCommand1(0xc0);        
 184   1              LCD_WriteCommand2(0xc0);
 185   1              LCD_WriteCommand1(0x3f);        //开显示
 186   1              LCD_WriteCommand2(0x3f);
 187   1      
 188   1              for (j=0;j<8;j++)                       //清屏
 189   1              {
 190   2                      LCD_WriteCommand1(0xB8+j);      //清左半屏
 191   2                      LCD_WriteCommand1(0x40);
 192   2                      for (i=0;i<64;i++)
 193   2                              LCD_WriteData1(0x00);
 194   2      
 195   2                      LCD_WriteCommand2(0xB8+j);      //清右半屏
 196   2                      LCD_WriteCommand2(0x40);
 197   2                      for (i=0;i<64;i++)
 198   2                              LCD_WriteData2(0x00);
 199   2              }
 200   1      }
 201          
 202          void DispBmp(char *buf) //显示一幅位图
 203          {
 204   1      int i,j;
 205   1              for (j=0;j<8;j++)                       //显示位图
 206   1              {
 207   2                      LCD_WriteCommand1(0xB8+j);      
 208   2                      LCD_WriteCommand1(0x40);
 209   2                      for (i=0;i<64;i++)
 210   2                              LCD_WriteData1(buf[(j*2)*64+i]);
 211   2                      LCD_WriteCommand2(0xB8+j);      
 212   2                      LCD_WriteCommand2(0x40);
 213   2                      for (i=0;i<64;i++)
 214   2                              LCD_WriteData2(buf[(j*2+1)*64+i]);
 215   2              }
 216   1      }
 217          
 218          void Delay1s(unsigned char T);
 219          void TestLCD(void)
 220          {
 221   1          char i;
 222   1              InitLCD();
 223   1              DispBmp(screen);
 224   1              for (i=0;i<64;i++)
 225   1              {
 226   2                      Delay1ms(50);
 227   2                      LCD_WriteCommand1(0xc0+i%64);   //设置起始行,实现向上滚动
 228   2                      LCD_WriteCommand2(0xc0+i%64);
 229   2              }
 230   1              Delay1s(3);
 231   1      
 232   1                      /*DispBmp(screen1);
 233   1                      Delay1s(3);
 234   1                      DispBmp(screen2);
 235   1                      Delay1s(3);
 236   1                      InitLCD();
 237   1                      LCD_WriteHZ(2,1,Han); //显示16*16点阵汉字'汉'
 238   1                      LCD_WriteHZ(60,3,Zi); //显示16*16点阵汉字'字'
 239   1                      Delay1s(3);*/
 240   1      }
 241          
C51 COMPILER V8.05a   KS0108                                                               08/04/2007 17:18:57 PAGE 5   

 242          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    800    ----
   CONSTANT SIZE    =   2688    ----
   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 + -