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

📄 lcd.lst

📁 彩晶CM12864-12单色液晶模块128x64点阵的51芯片驱动程序和配置.
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   10/12/2007 19:38:40 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 BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /***************************************************************
   2          Copyright(c) Vitro Light All Rights Reserved.
   3          Author:   Tenghan
   4          Filename: LCD.c
   5          
   6          Description:
   7          This file define the main function of a 12864 LCD.
   8          
   9          *****************************************************************
  10          $File: //LCD.c $
  11          $Revision: #1 $
  12          $Date: 2007/09/15 $
  13          ****************************************************************/
  14          
  15          #include <reg51.h>
  16          #include "type_51.h"
  17          #include "delay.h"
  18          #include "LCD.h"
  19          
  20          // Define
  21          sbit   CS = P2^0 ;
  22          sbit   SID = P2^1 ;              //Serial data 
  23          sbit   SCLK = P2^2 ;            //Serial clock
  24          sbit   PSB = P2^3 ;              // Set PSB 0 is serial control
  25          
  26          /*=============================================================================
  27          Function Name: LCDInitial
  28          Description: Initial LCD.
  29          Input:    None
  30          Return:  None 
  31          Note:
  32          =============================================================================*/
  33          void LCDInitial(void)   
  34          {
  35   1          delaynms(10); // Wait to power on, LCM
  36   1          PSB=0;             //Serial control mode
  37   1          CS=1;              // Chip enable in serial mode
  38   1      
  39   1          WriteCommand(BITBUS8 | BASICSET);  // 0011  8 bit interface, 0000 basic instruction
  40   1          WriteCommand(DISPLAYON);       // 1100 display on, cursor off, blink off
  41   1          WriteCommand(RESETAC);  // Clear screen, set DDRAM AC to 0
  42   1      }
  43          
  44          /*=============================================================================
  45          Function Name: WriteCommand
  46          Description: write command.
  47          Input:    command
  48          Return:  None 
  49          Note: Send the sync control firs, then send the highest 4 bits, lowest 4 bits 
  50          =============================================================================*/
  51          void WriteCommand(UINT8 Command)
  52          {
  53   1          UINT8 HCom,LCom;
  54   1         
  55   1          HCom=Command & 0xf0;                //get the high 4 bits
C51 COMPILER V7.06   LCD                                                                   10/12/2007 19:38:40 PAGE 2   

  56   1          LCom=(Command<<4) & 0xf0;    // Low 4 bits
  57   1          sendbyte(SERIALWCOM);              //Write command sync control   
  58   1          delaynms(2);                                //Delay here is must
  59   1          sendbyte(HCom);                           //send the highest 4 bits
  60   1          delaynms(1);                      
  61   1          sendbyte(LCom);                      
  62   1          delaynms(1);                      
  63   1      }
  64          
  65          /*=============================================================================
  66          Function Name: WriteData
  67          Description: write Data.
  68          Input:    Data
  69          Return:  None 
  70          Note:
  71          =============================================================================*/
  72          void WriteData(UINT8 Data)
  73          {
  74   1          UINT8 Hdata,Ldata;
  75   1          
  76   1          Hdata=Data&0xf0;               
  77   1          Ldata=(Data<<4)&0xf0;     
  78   1          sendbyte(SERIALWDATA);                //Write Data
  79   1          delaynms(1);                                  //Delay here is must
  80   1          sendbyte(Hdata);              
  81   1          //delaynms(1);                 
  82   1          sendbyte(Ldata);              
  83   1          //delaynms(1);                 
  84   1      }
  85          
  86          /*=============================================================================
  87          Function Name: sendbyte
  88          Description: send byte.
  89          Input:    byte to be sent
  90          Return:  None 
  91          Note:  send bit one by one
  92          =============================================================================*/
  93          void sendbyte(UINT8 bbyte) 
  94          {
  95   1         UINT8 i;
  96   1         for(i=0;i<8;i++)
  97   1         {
  98   2             SID=bbyte & 0x80;    //Get the highest bit
  99   2             SCLK=1;
 100   2             SCLK=0;
 101   2             bbyte<<=1;              //Shift left
 102   2         }  
 103   1      }
 104          
 105          /*=============================================================================
 106          Function Name: LCDBlack
 107          Description: lcd test, screen set to black at graph mode.
 108          Input:    None
 109          Return:  None 
 110          Note:
 111          =============================================================================*/
 112          void LCDBlack(void)     
 113          { 
 114   1          UINT8 i,j;
 115   1          for(i=0;i<32;i++)
 116   1          { 
 117   2              WriteCommand(0x80 + i);   //Set Vertical point
C51 COMPILER V7.06   LCD                                                                   10/12/2007 19:38:40 PAGE 3   

 118   2              WriteCommand(0x80);     // Set Horizon point, horizon will automatic increase 1 after write it. 
 119   2              for(j=0;j<16;j++) 
 120   2                  WriteData(0xff); 
 121   2          }
 122   1          
 123   1          for(i=0;i<32;i++)
 124   1          { 
 125   2              WriteCommand(0x80 + i); 
 126   2              WriteCommand(0x88); 
 127   2              for(j=0;j<16;j++) 
 128   2                  WriteData(0xff);                    
 129   2          }
 130   1      }
 131          
 132          /*=============================================================================
 133          Function Name: LCDClear
 134          Description: LCD Clear, clear screen at graph mode.
 135          Input:    None
 136          Return:  None 
 137          Note:
 138          =============================================================================*/
 139          void LCDClear(void)  
 140          { 
 141   1          UINT8 i,j;
 142   1          for(i=0;i<32;i++)
 143   1          { 
 144   2              WriteCommand(0x80 + i);   //Set Vertical point
 145   2              WriteCommand(0x80);        // Set Horizon point, horizon will automatic increase 1 after write it.
             - 
 146   2              for(j=0;j<16;j++) 
 147   2                  WriteData(0x00);
 148   2          }
 149   1          
 150   1          for(i=0;i<32;i++)
 151   1          { 
 152   2              WriteCommand(0x80+i); 
 153   2              WriteCommand(0x88); 
 154   2              for(j=0;j<16;j++) 
 155   2                  WriteData(0x00);
 156   2          }
 157   1      }
 158          
 159          
 160          /*=============================================================================
 161          Function Name: Disp_Img
 162          Description: Display Image.
 163          Input:    None
 164          Return:  None 
 165          Note:
 166          =============================================================================*/
 167          void Disp_Img(UINT8 *Img) 
 168          { 
 169   1          UINT8 i, j;
 170   1          UINT16 k =0 ;
 171   1          for(i=0;i<32;i++)
 172   1          { 
 173   2               WriteCommand(0x80+i);
 174   2               WriteCommand(0x80);
 175   2               for(j=0;j<16;j++) 
 176   2               {
 177   3                   WriteData(Img[k++]);
 178   3                }
C51 COMPILER V7.06   LCD                                                                   10/12/2007 19:38:40 PAGE 4   

 179   2          }
 180   1         
 181   1          for(i=0;i<32;i++)
 182   1          { 
 183   2               WriteCommand(0x80+i);
 184   2               WriteCommand(0x88);
 185   2               for(j=0;j<16;j++) 
 186   2              {
 187   3                  WriteData(Img[k++]);
 188   3              }
 189   2          }
 190   1      }
 191          
 192          


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