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

📄 lcddev_ra8806.lst

📁 RA8806底层驱动
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE LCDDEV_RA8806
OBJECT MODULE PLACED IN LcdDev_Ra8806.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LcdDev_Ra8806.C OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1                                                                   
   2          #include      <c8051f020.h>                 // SFR declaratiONs  
   3          #include    "DataTypeDef.H"               
   4          #include  "LcdDev_Ra8806.H" 
   5           #include  "GraphicHZ/HanZi48x48.C"  
   6           #include  "GraphicHZ/HanZi32x32.C"  
   7           #include  "GraphicHZ/ASCII_24x48.C"  
   8           #include  "GraphicHZ/ASCII_16x32.C"  
   9          
  10          void LCD_ChkBusy(void);
  11           
  12          static void LCD_Delay(INT16U KK)
  13          {
  14   1         while(KK--) ;
  15   1      }
  16          /*******************************************************************************************************
  17          **
  18          **                             LCD底层驱动部分代码
  19          **
  20          ********************************************************************************************************/ 
  21                                                                                                                                                                                                                    
  22          /*******************************************************************************************************
  23          ** 名    称:                  void LCD_CmdWrite(INT8U CmdReg,INT8U CmdValue)
  24          ** 功    能:向LCD中写入指令数据
  25          ** 入口参数:CmdReg   
  26          **           CmdValue
  27          ** 出口参数:无    
  28          **----------------------------------------------------------------------------------------------------
  29          ** 作 者  : 严  俊  生
  30          ** 日 期  : 2009-01-26 
  31          *******************************************************************************************************/
  32          void LCD_CmdWrite(INT8U CmdReg)
  33          {
  34   1           LCD_ChkBusy();                           // 判断 RA8803 是否忙碌中
  35   1               LcdDataPort_OutPut();                    // 设置LCD总线的端口状态为输出   
  36   1               //LCD_DataPort = CmdReg;                                         // 准备预写入显示内存的数据           
  37   1               LcdCS_ON();                              // 片选LCD信号使能  
  38   1               LcdRD_OFF();                             // "读"信号禁能  
  39   1               LcdRS_INS();                             // 选择写入指令信号 
  40   1                                                                                                                                       
  41   1               LCD_DataPort = CmdReg;                                   // 准备预写入显示内存的数据 
  42   1               LcdWR_ON();                                                      // "写"信号使能  
  43   1               //LCD_Delay(0);                 
  44   1               LcdWR_OFF();                                                     // "写"信号禁能  
  45   1      
  46   1               LcdCS_OFF();                             // 片选LCD信号禁能   
  47   1      } 
  48          
  49          /*******************************************************************************************************
  50          ** 名    称:                  INT8U LCD_CmdRead(void)
  51          ** 功    能:读取LCD对应地址寄存器中到数据
  52          ** 入口参数:CmdReg  寄存器的地址
  53          ** 出口参数:寄存器中的内容    
  54          **----------------------------------------------------------------------------------------------------
  55          ** 作 者  : 严  俊  生
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 2   

  56          ** 日 期  : 2009-01-26 
  57          *******************************************************************************************************/
  58          INT8U LCD_CmdRead(void)
  59          {        INT8U CmdReg;                     
  60   1         //------------------------------------------- 执行读寄存器内容时序操作
  61   1               LcdDataPort_InPut();                     // 设置LCD总线的端口状态为输入  
  62   1               LcdCS_ON();                              // 片选LCD信号使能 
  63   1               //LcdRS_DAT();                             // 选择写入数据信号
  64   1               LcdRS_INS();                             // 选择写入指令信号  
  65   1               LcdWR_OFF();                                                     // "写"信号禁能     
  66   1      
  67   1               LcdRD_ON();                              // "读"信号使能   
  68   1               CmdReg = LCD_DataPort;                 
  69   1               LcdRD_OFF();                             // "读"信号禁能 
  70   1                                                                                                                               
  71   1               //LcdRS_OFF();                             // 指令/数据端口复位  
  72   1               LcdCS_OFF();                             // 片选LCD信号禁能  
  73   1               return CmdReg;
  74   1      }       
  75          /*******************************************************************************************************
  76          ** 名    称:                  void LCD_DataWrite(INT8U DatValue)
  77          ** 功    能:向LCD中写入指令数据
  78          ** 入口参数:DatValue   
  79          ** 出口参数:无    
  80          **----------------------------------------------------------------------------------------------------
  81          ** 作 者  : 严  俊  生
  82          ** 日 期  : 2009-01-26 
  83          *******************************************************************************************************/
  84          void LCD_DataWrite(INT8U DatValue)
  85          {
  86   1      
  87   1           LCD_ChkBusy();                           // 判断 RA8803 是否忙碌中
  88   1               LcdDataPort_OutPut();                    // 设置LCD总线的端口状态为输出   
  89   1               //LCD_DataPort = DatValue;                               // 准备预写入显示内存的数据  
  90   1               LcdCS_ON();                              // 片选LCD信号使能 
  91   1               LcdRD_OFF();                             // "读"信号禁能  
  92   1               LcdRS_DAT();                             // 选择写入数据信号 
  93   1               LcdWR_ON();                                                      // "写"信号使能 
  94   1               LCD_DataPort = DatValue;                                 // 准备预写入显示内存的数据  
  95   1               LCD_Delay(10);                                                                                  
  96   1               LcdWR_OFF();                                                     // "写"信号禁能 
  97   1               LcdCS_OFF();                             // 片选LCD信号禁能   
  98   1      }  
  99          void LCD_StringWrite(INT8U *pStr,INT8U StrLen,INT8U DispMode)
 100          {
 101   1           INT16U i; 
 102   1           LCD_ChkBusy();                           // 判断 RA8803 是否忙碌中
 103   1               LcdDataPort_OutPut();                    // 设置LCD总线的端口状态为输出  
 104   1               LcdRS_INS();                             // 选择写入指令信号 
 105   1               LcdRD_OFF();                             // "读"信号禁能                       
 106   1               LcdCS_ON();                              // 片选LCD信号使能   
 107   1                                                                                                                      
 108   1               LCD_DataPort = 0xB0;                                     // 准备预写入显示内存的数据 
 109   1               LcdWR_ON();                                                      // "写"信号使能  
 110   1               //LCD_Delay(0);                 
 111   1               LcdWR_OFF();                                                     // "写"信号禁能  
 112   1      
 113   1               LcdCS_OFF();                             // 片选LCD信号禁能   
 114   1                        
 115   1               LcdRS_DAT();                             // 选择写入数据信号   
 116   1               LcdCS_ON();                              // 片选LCD信号使能  
 117   1               for(i=0; i<StrLen; i++)
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 3   

 118   1               {      
 119   2               if(DispMode == 1)      
 120   2                  LCD_DataPort = ((*pStr++));                           // 准备预写入显示内存的数据  
 121   2               else
 122   2                  LCD_DataPort = (~(*pStr++));                                  // 准备预写入显示内存的数据  
 123   2               LcdWR_ON();                                                      // "写"信号使能 
 124   2               //LCD_Delay(0);                                                                                 
 125   2               LcdWR_OFF();                             // "写"信号禁能 
 126   2               }                                                        
 127   1      
 128   1               LcdCS_OFF();                             // 片选LCD信号禁能   
 129   1      }  
 130          
 131          INT8U LCD_DataRead(void)
 132          {   INT8U uData;   
 133   1           LCD_ChkBusy();                           // 判断 RA8803 是否忙碌中
 134   1         //------------------------------------------- 执行读寄存器内容时序操作
 135   1               LcdDataPort_InPut();                     // 设置LCD总线的端口状态为输入  
 136   1               LcdCS_ON();                              // 片选LCD信号使能 
 137   1               LcdRS_DAT();                             // 选择写入数据信号
 138   1               //LcdRS_INS();                             // 选择写入指令信号  
 139   1               LcdWR_OFF();                                                     // "写"信号禁能     
 140   1      
 141   1               LcdRD_ON();                              // "读"信号使能   
 142   1               uData = LCD_DataPort;                  
 143   1               LcdRD_OFF();                             // "读"信号禁能 
 144   1                                                                                                                               
 145   1               LcdRS_OFF();                             // 指令/数据端口复位  
 146   1               LcdCS_OFF();                             // 片选LCD信号禁能  
 147   1               return uData;
 148   1      }
 149           
 150          //==============================================================================
 151          //Subroutine:   LCD_ChkBusy
 152          //Function:             
 153          //==============================================================================
 154          void LCD_ChkBusy(void)
 155          {
 156   1              volatile INT8U temp; 
 157   1              do
 158   1              {
 159   2                      temp = LCD_CmdRead();
 160   2                      LCD_Delay(10);  
 161   2              }while(temp & 0xC0);
 162   1      }
 163          
 164          /*******************************************************************************************************
 165          **                                                                                                                                                                                                        **
 166          **                                           LCD控制部分代码                                                                                  **
 167          **                                                                                                                                                                                                        **
 168          ********************************************************************************************************/ 
 169                                                                                                                                                                                                                     
 170          void LcdReset(void)
 171          {       
 172   1               LedReset_ON();           
 173   1               LCD_Delay(2000); 
 174   1               LedReset_OFF();           
 175   1               LCD_Delay(25000); 
 176   1               LedReset_ON();           
 177   1               LCD_Delay(65000);         
 178   1      }    
 179          
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 4   

 180          //==============================================================================
 181          //Subroutine:   LCD_On
 182          //Function:
 183          //==============================================================================
 184          void LCD_ON(void)
 185          {
 186   1              unsigned char temp;
 187   1      
 188   1              LCD_CmdWrite(WLCR);
 189   1              temp = LCD_DataRead();
 190   1              temp |= cSetb2;
 191   1              LCD_CmdWrite(WLCR);
 192   1              LCD_DataWrite(temp);
 193   1      }  
 194          //==============================================================================
 195          //Subroutine:   LCD_OFF
 196          //Function:
 197          //==============================================================================
 198          void LCD_OFF(void)
 199          {
 200   1              unsigned char temp;
 201   1              
 202   1              LCD_CmdWrite(WLCR);
 203   1              temp = LCD_DataRead();
 204   1              temp &= cClrb2;
 205   1              LCD_CmdWrite(WLCR);
 206   1              LCD_DataWrite(temp);
 207   1      } 
 208          //==============================================================================
 209          //Subroutine:   LCD_Text
 210          //Function:
 211          //============================================================================== 
 212          void LCD_Text(void)
 213          {
 214   1              unsigned char temp; 
 215   1              LCD_CmdWrite(WLCR);
 216   1              temp = LCD_DataRead();
 217   1              temp |= cSetb3;
 218   1              LCD_CmdWrite(WLCR);
 219   1              LCD_DataWrite(temp);
 220   1      }
 221          //==============================================================================
 222          //Subroutine:   LCD_Graphic
 223          //Function:
 224          //==============================================================================
 225          void LCD_Graphic(void)
 226          {
 227   1              unsigned char temp;
 228   1              
 229   1              LCD_CmdWrite(WLCR);
 230   1              temp = LCD_DataRead();
 231   1              temp &= cClrb3;
 232   1              LCD_CmdWrite(WLCR);
 233   1              LCD_DataWrite(temp);
 234   1      } 
 235           
 236          //==============================================================================
 237          //Subroutine:   Reverse_Data
 238          //Function:
 239          //==============================================================================
 240          void Reverse_Data(void)
 241          {
C51 COMPILER V7.09   LCDDEV_RA8806                                                         02/09/2009 16:04:54 PAGE 5   

 242   1              unsigned char temp; 
 243   1              LCD_CmdWrite(WCCR);
 244   1              temp = LCD_DataRead();
 245   1              temp |= (cSetb4);
 246   1              LCD_CmdWrite(WCCR);
 247   1              LCD_DataWrite(temp);
 248   1      }
 249          
 250          //==============================================================================
 251          //Subroutine:   Access_2Page

⌨️ 快捷键说明

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