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

📄 lcddev_ra8802.lst

📁 RA8806底层驱动
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   LCDDEV_RA8802                                                         02/01/2009 22:38:59 PAGE 1   


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

line level    source

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

  56          INT8U ReturnRegDat = 0;
  57          void LcdClear(void)
  58          {                                                         
  59   1               LCD_CmdWrite(0xE0,0x00);                      // 设定将显示内存的数据全部写入”0x00”
  60   1           LCD_CmdWrite(0xF0,0xA8);                              // 当缓存器[0xF0]之位3 设定为”1”时,  
  61   1           LCD_Delay(100);                           // 硬件自动将显示内存全部写入缓存器[E0]的资料
  62   1      } 
  63          
  64          /*******************************************************************************************************
  65          ** 名    称:                  void LcdClear(void)
  66          ** 功    能:设定 显示坐标 (内存地址) 子程序
  67          ** 入口参数:无  
  68          ** 出口参数:无    
  69          **----------------------------------------------------------------------------------------------------
  70          ** 作 者  : 严  俊  生
  71          ** 日 期  : 2009-01-26 
  72          *******************************************************************************************************/ 
  73          void GotoXY(unsigned char x1,unsigned char y1)  
  74          { 
  75   1           LCD_CmdWrite(0x60,x1);                    // 设定水平坐标地址 
  76   1           LCD_CmdWrite(0x70,y1);                    // 设定垂直坐标地址 
  77   1      } 
  78           
  79          /*******************************************************************************************************
  80          ** 名    称:                  void LCD_Fill(INT8U *lcd_char)
  81          ** 功    能:填充整个LCD屏幕
  82          ** 入口参数:无  
  83          ** 出口参数:无    
  84          **----------------------------------------------------------------------------------------------------
  85          ** 作 者  : 严  俊  生
  86          ** 日 期  : 2009-01-26 
  87          *******************************************************************************************************/ 
  88          void LCD_Fill(INT8U *lcd_char) 
  89          { 
  90   1           INT16U i;  
  91   1           LCD_CmdWrite(0x00,0xC9); 
  92   1           GotoXY(0,0);  
  93   1               i = lcd_char[i];
  94   1           for(i=0; i<3600; i++)  
  95   1           { 
  96   2               //LCD_DatWrite(lcd_char[i]); 
  97   2               LCD_DatWrite(0xA4); 
  98   2               LCD_DatWrite(0xA4); 
  99   2           }  
 100   1           LCD_CmdWrite(0x00,0xCC);  
 101   1      } 
 102          
 103          /*******************************************************************************************************
 104          ** 名    称:                  void LCD_CmdWrite(INT8U CmdReg,INT8U CmdValue)
 105          ** 功    能:向LCD中写入指令数据
 106          ** 入口参数:CmdReg   
 107          **           CmdValue
 108          ** 出口参数:无    
 109          **----------------------------------------------------------------------------------------------------
 110          ** 作 者  : 严  俊  生
 111          ** 日 期  : 2009-01-26 
 112          *******************************************************************************************************/
 113          void LCD_CmdWrite(INT8U CmdReg,INT8U CmdValue)
 114          {
 115   1           while( !LcdBusy_PinIN() ) ;               // 判断 RA8803 是否忙碌中
 116   1               LcdDataPort_OutPut();                    // 设置LCD总线的端口状态为输出
 117   1               //LCD_Delay(10);
C51 COMPILER V7.09   LCDDEV_RA8802                                                         02/01/2009 22:38:59 PAGE 3   

 118   1               LCD_DataPort = CmdReg;                                   // 准备预写入显示内存的数据                   
 119   1               LcdCS_ON();                              // 片选LCD信号使能 
 120   1               //LcdRS_DAT();                             // 选择写入数据信号 
 121   1               LcdRS_INS();                             // 选择写入指令信号  
 122   1               LcdRD_OFF();                             // "读"信号禁能 
 123   1                
 124   1               LcdWR_ON();                                                      // "写"信号使能  
 125   1               LCD_Delay(10); 
 126   1               //LCD_DataPort = CmdReg;                                         // 准备预写入显示内存的数据  
 127   1               LcdWR_OFF();                                                     // "写"信号禁能  
 128   1      
 129   1               //LcdCS_OFF();                             // 片选LCD信号禁能 
 130   1               //LCD_Delay(0); 
 131   1                      
 132   1         //------------------------------------------- 对相应寄存器进行写操作
 133   1           while( !LcdBusy_PinIN() ) ;               // 判断 RA8803 是否忙碌中 
 134   1               LCD_DataPort = CmdValue;                             // 准备预写入显示内存的数据               
 135   1               //LcdCS_ON();                              // 片选LCD信号使能 
 136   1               //LcdRS_DAT();                             // 选择写入数据信号 
 137   1               //LcdRS_INS();                             // 选择写入指令信号 
 138   1               //LcdRD_OFF();                             // "读"信号禁能  
 139   1                
 140   1               LcdWR_ON();                                                      // "写"信号使能 
 141   1               LCD_Delay(10); 
 142   1               //LCD_DataPort = CmdValue;                           // 准备预写入显示内存的数据 
 143   1               LcdWR_OFF();                                                     // "写"信号禁能 
 144   1               LcdRS_OFF();                             //  
 145   1                
 146   1               LcdCS_OFF();                             // 片选LCD信号禁能    
 147   1               LCD_Delay(0); 
 148   1      } 
 149          
 150          /*******************************************************************************************************
 151          ** 名    称:                  INT8U LCD_CmdRead(INT8U CmdReg)
 152          ** 功    能:读取LCD对应地址寄存器中到数据
 153          ** 入口参数:CmdReg  寄存器的地址
 154          ** 出口参数:寄存器中的内容    
 155          **----------------------------------------------------------------------------------------------------
 156          ** 作 者  : 严  俊  生
 157          ** 日 期  : 2009-01-26 
 158          *******************************************************************************************************/
 159          INT8U LCD_CmdRead(INT8U CmdReg)
 160          {         
 161   1           while( !LcdBusy_PinIN() ) ;               // 判断 RA8803 是否忙碌中  
 162   1               LcdDataPort_OutPut();                    // 设置LCD总线的端口状态为输出  
 163   1               LCD_DataPort = CmdReg;                                   // 准备预写入显示内存的数据 
 164   1               LcdCS_ON();                              // 片选LCD信号使能  
 165   1               LcdRD_OFF();                             // "读"信号禁能        
 166   1               LcdRS_INS();                             // 选择写入指令信号

⌨️ 快捷键说明

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