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

📄 lcddrev_ra8802.lst

📁 RA8806底层驱动
💻 LST
字号:
C51 COMPILER V7.09   LCDDREV_RA8802                                                        01/27/2009 12:19:11 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE LCDDREV_RA8802
OBJECT MODULE PLACED IN LcdDrev_Ra8802.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LcdDrev_Ra8802.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1                                                                   
   2          #include      <c8051f020.h>                 // SFR declarations  
   3          #include         "absacc.H"
   4          #include           "math.h" 
   5          #include    "DataTypeDef.H"     
   6          #include "LcdDrev_Ra8802.H" 
   7          
   8          #define   LCD_BUS   P7
   9          #define   LcdBus_InPut()    {P74OUT &= ~0xC0; XBR2 &= ~0x80;  P7 = 0xFF;}
  10          #define   LcdBus_OutPut()   {P74OUT |= 0xC0; XBR2 |= 0x80;}
  11          
  12          //sbit      WR1    =   P4^7;                   //写控制信号
  13          #define   LcdWR_On()      P4 |= 0x80;
  14          #define   LcdWR_Off()    P4 &= ~0x80; 
  15          
  16          //sbit      RD1    =   P4^6;                   //读控制信号
  17          #define   LcdRD_On()      P4 |= 0x40;
  18          #define   LcdRD_Off()    P4 &= ~0x40; 
  19          
  20          //sbit      CD1    =   P0^0;                   //通道信号, cd=1指令 cd=0 数据
  21          #define   LcdCD_On()      P6 |= 0x01;
  22          #define   LcdCD_Off()    P6 &= ~0x01;
  23          
  24          //sbit      Lcd_CS =   P6^1;
  25          #define   LcdCS_On()      P6 |= 0x02;
  26          #define   LcdCS_Off()    P6 &= ~0x02;
  27          
  28          
  29          #define GraphAddr 0x0000 //head of graph
  30          
  31          //以8*8字符计算,显示屏横向、纵向可以显示的字符个数
  32          //以240*128为例:                 
  33          #define   LineChar    32              //一行16个字符(8*8)
  34          #define   ColumnChar 16               //总共16列
  35          
  36          
  37          static void delay(INT8U KK)
  38          {
  39   1         while(KK--) ;
  40   1      }
  41          
  42          /******************************************************************************** 
  43          函数名:    LcdReadSdate(void) 
  44          函数功能: IOPORT输出数据并检查LCD忙数据。
  45          返回数据:checkbusy
  46          /********************************************************************************/ 
  47          INT8U LcdReadSdate(void)
  48          {  
  49   1          INT8U   checkbusy; 
  50   1              LcdBus_OutPut();
  51   1          LCD_BUS = 0xFF;
  52   1          LcdCD_On();                      // C/D = 1, 指令操作
  53   1          LcdRD_Off();                             // 读状态操作
  54   1              LcdBus_InPut();                      // 配置P7口为输入口
  55   1          checkbusy = LCD_BUS;                 //
C51 COMPILER V7.09   LCDDREV_RA8802                                                        01/27/2009 12:19:11 PAGE 2   

  56   1          LcdRD_On();                                  // RD = 1
  57   1          return ( checkbusy );  
  58   1      }
  59          /******************************************************************************** 
  60          函 数 名: Void RWcheck(void) 
  61          函数功能: 判断状态位STA1,STA0子程序(读写指令和读写数据的状态),
  62                    在写指令的读、写数据之前这两个标志位必须同时为1 
  63          /********************************************************************************/ 
  64          void LcdRwCheck(void)
  65          {   
  66   1           INT8U   databusy;
  67   1           do{ databusy=LcdReadSdate(); }
  68   1           while( !(databusy&0x03) );
  69   1      }
  70          /******************************************************************************** 
  71          函 数 名: Void AutoRcheck() 
  72          函数功能: 判断状态位STA2的子程序(数据自动读状态),该位在数据自动读操作过程中
  73                    取代STA0和STA1有效。在连续读过程中每读一次之前都要确认STA2=1
  74          ******************************************************************************** 
  75          void LcdAutoReadCheck(void)
  76          {   
  77               INT8U   databusy;
  78               do{ databusy=LcdReadSdate(); }
  79               while( !(databusy&0x04) ); 
  80          }
  81          /******************************************************************************** 
  82          函数名: Void AutoWcheck() 
  83          函数功能: 判断状态位STA3子程序(数据自动写状态) 
  84          ******************************************************************************** 
  85          void LcdAutoWriteCheck(void)
  86          {    
  87               INT8U   databusy;
  88               do{  databusy=LcdReadSdate(); }
  89               while( !(databusy&0x08) );
  90          }
  91          
  92          
  93          /*------输入/出函数,与T6963通讯------------------------------------------------*/
  94          
  95          
  96          
  97          /******************************************************************************** 
  98          函 数 名:  Void WriteData(INT8U cmd)
  99                     Void WriteCmd2(INT8U dat1,INT8U cmd)
 100                     Void WriteCmd3(INT8U dat1,INT8U dat2,INT8U cmd)
 101                     Void WriteData(INT8U dat)
 102          函数功能: 写指令和写数据子程序
 103          ********************************************************************************/ 
 104          void LcdWriteData(INT8U dat)
 105          {   
 106   1          LcdRwCheck();          // 判断状态位
 107   1          LcdCD_Off();           // C/D=0;数据写入入口   
 108   1              LcdBus_OutPut();              
 109   1          LCD_BUS=dat;
 110   1          LcdWR_Off();           // WR1=0;
 111   1          LcdWR_On();            // WR1=1; 
 112   1      }  
 113          
 114          /******************************************************************************** 
 115          函 数 名:  Void WriteData(INT8U cmd)
 116                     Void WriteCmd2(INT8U dat1,INT8U cmd)
 117                     Void WriteCmd3(INT8U dat1,INT8U dat2,INT8U cmd)
C51 COMPILER V7.09   LCDDREV_RA8802                                                        01/27/2009 12:19:11 PAGE 3   

 118                     Void WriteData(INT8U dat)
 119          函数功能: 写指令和写数据子程序
 120          ********************************************************************************/ 
 121          void LcdWriteCmd1(INT8U cmd)
 122          {  
 123   1          LcdRwCheck();                  // 判断状态位
 124   1          LcdCD_On();            // C/D=1;命令写入入口
 125   1              LcdBus_OutPut();       
 126   1          LCD_BUS=cmd; 
 127   1          LcdWR_Off();           // WR1=0;
 128   1          LcdWR_On();            // WR1=1; 
 129   1      }  
 130          /******************************************************************************** 
 131          函 数 名:  Void LcdWriteCmd2(INT8U dat1,INT8U cmd)
 132          函数功能: 写指令和写数据子程序
 133          ********************************************************************************/ 
 134          void LcdWriteCmd2(INT8U dat,INT8U cmd)
 135          {
 136   1          LcdWriteData(dat);   
 137   1          LcdWriteCmd1(cmd);      
 138   1      } 
 139          /******************************************************************************** 
 140          函 数 名: Void LcdWriteCmd3(INT8U dat1,INT8U dat2,INT8U cmd)
 141          函数功能: 写指令和写数据子程序
 142                    写有 3 个参数命令
 143          ********************************************************************************/
 144          void LcdWriteCmd3(INT8U dat1,INT8U dat2,INT8U cmd)
 145          {       
 146   1          LcdWriteData(dat1);  
 147   1          LcdWriteData(dat2);
 148   1          LcdWriteCmd1(cmd);   
 149   1      }
 150          
 151          /*
 152          INT8U LcdReadData(void)
 153          {       INT8U checkbusy;
 154              LcdRwCheck();                // 判断状态位
 155              LcdCD_Off();                 // C/D=0; 
 156              LCD_BUS = 0xFF;                      // LCD_BUS口置"1"
 157                  LcdRD_Off();                         // /RD = 0, 读状态操作
 158                  LcdBus_InPut();                      // 配置P7口为输入口
 159              checkbusy = LCD_BUS;                 //     读取数据
 160              LcdRD_On();                                  // RD = 1
 161                  return (checkbusy);
 162          }                                                    // */
 163          
 164          
 165          
 166          
 167          
 168          
 169          
 170          /******************************************************************************** 
 171          函数名: Void ClearScreen(INT16U ram) 
 172          函数功能: 清除整个屏幕 
 173               ram : 需要清零的单元数
 174          ********************************************************************************/ 
 175          void ClearScreen(void) 
 176          { 
 177   1           INT16U i; 
 178   1           //================================================== 清显示RAM区: 0000h--2000H(8K) 
 179   1           LcdWriteCmd3(0x00,0x00,0x24);                     // 设置指针地址0000H 
C51 COMPILER V7.09   LCDDREV_RA8802                                                        01/27/2009 12:19:11 PAGE 4   

 180   1           LcdWriteCmd1(0xB0);                               // 设置自动写方式 
 181   1           for(i=0; i<0x2000; i++) 
 182   1                  LcdWriteData(0x00);     // data=0; 
 183   1           LcdWriteCmd1(0xB2);                               // 设置自动写结束指令 
 184   1              // LcdWriteCmd3(0x01,0x01,0x21); 
 185   1      } 
 186           
 187          /********************************************************************************
 188          函数名:   void LcdInit (void)
 189          函数功能:LCD初始化设置
 190          ********************************************************************************/ 
 191          void LcdInit(void)
 192          {       
 193   1          LcdCS_Off();
 194   1          LcdWriteCmd3(0x00,0x00,0x40);   //设置文本显示区域首地址
 195   1          LcdWriteCmd3(0x20,0x00,0x41);   //设置文本显示区域宽度
 196   1          LcdWriteCmd3(0x00,0x08,0x42);   //设置图形显示区域首地址:GraphAddr
 197   1          LcdWriteCmd3(0x20,0x00,0x43);   //设置图形显示区域宽度:LineChar  
 198   1                                          //即一行显示所占字节数 
 199   1          LcdWriteCmd1(0xA0);             //设置光标形状 cursor size 8*8
 200   1          LcdWriteCmd1(0x88);             //设置显示方式:CGROM方式 文本\图形  逻辑“或”合成
 201   1          LcdWriteCmd1(0x9C);             //设置显示开关:图形、文本、光标、闪烁开启
 202   1          ClearScreen(); 
 203   1              delay(0);
 204   1       } 
 205          
 206           


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