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

📄 lcd_grf.lst

📁 关键字:LCD液晶显示屏 串行 并行 ST7920 RT12864
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   LCD_GRF                                                               05/31/2007 03:15:51 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD_GRF
OBJECT MODULE PLACED IN lcd_grf.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd_grf.c LARGE

stmt level    source

   1          /***********************************************************************************************
   2          ** 文件名称:_LCD_C
   3          ** 功能说明:ST7920驱动LCD显示软件包
   4          ** 使用说明:软件包用到LPC213x的二个引脚,默认为P1.24,P1.25,如需修改,请修改头文件中的宏定义数据即可
   5                                   (接触一天,时间不足,理解不深,代码有待优化,鉴谅)
   6          ***********************************************************************************************/
   7          //#include "config.h"
   8          #include <REG52.H>                /* special function register declarations   */
   9                              
  10          #include  "LCD.h"
  11          uint8 h=0,l=0;
  12          
  13          /***********************************************************************************************
  14          ** 函数名称:LCD_Init()
  15          ** 函数功能:LCD初始化
  16          ** 入口参数:无
  17          ** 出口参数:无
  18          ***********************************************************************************************/
  19          void LCD_Init(void)     
  20          {
  21   1                //PIN_INITI;
  22   1            PSB = 0;
  23   1            RST = 0;
  24   1                LCD_Dly(50); 
  25   1            RST=1;
  26   1      
  27   1                LCD_Dly(50);                                                          //启动等待,等LCM讲入工作状态                                                                           
  28   1                LCD_Write(0,0x30);                                            //8 位介面,基本指令集
  29   1                LCD_Write(0,0x0c);                                            //显示打开,光标关,反白关
  30   1                LCD_Write(0,0x01);                                            //清屏,将DDRAM的地址计数器归零  
  31   1               
  32   1      }
  33          
  34          void LCD_InitG()        
  35          {
  36   1                //PIN_INITI;
  37   1            PSB = 0;
  38   1            RST = 0;
  39   1                LCD_Dly(2); 
  40   1            RST=1;
  41   1      
  42   1                LCD_Dly(2);                                                           //启动等待,等LCM讲入工作状态                                                                           
  43   1                LCD_Write(0,0x36);                                            //8 位介面,基本指令集
  44   1              //  LCD_Write(0,0x0c);                                                  //显示打开,光标关,反白关
  45   1                //LCD_Write(0,0x01);                                                  //清屏,将DDRAM的地址计数器归零  
  46   1               
  47   1      }
  48          
  49          /***********************************************************************************************
  50          ** 函数名称:LCD_WStr()
  51          ** 函数功能:显示字符串
  52          ** 入口参数:addr       显示的地址
  53          **                       ptr    要显示的字符串的首地址
  54          ** 出口参数:无
  55          ***********************************************************************************************/
C51 COMPILER V7.06   LCD_GRF                                                               05/31/2007 03:15:51 PAGE 2   

  56          void LCD_WStr(uint8 addr,char *ptr)
  57          {
  58   1              LCD_Write(WIR,addr);
  59   1              //LCD_Dly(1);
  60   1              while(*ptr!=0)
  61   1              {
  62   2                      LCD_Write(WDATA,*ptr++);
  63   2              //      LCD_Dly(1);
  64   2              }
  65   1      }
  66          /***********************************************************************************************
  67          ** 函数名称:LCD_Write()
  68          ** 函数功能:LCD写指令或数据
  69          ** 入口参数:control_flow:              数据控制流,0 为写指令 1 为写数据
  70                                   ddata: 数据
  71          ** 出口参数:无
  72          ***********************************************************************************************/
  73          void LCD_Write(unsigned char control_flow, unsigned char ddata) 
  74          {
  75   1                unsigned char start_data,Hdata,Ldata;
  76   1                if(control_flow==0) start_data=0xf8;  //写指令
  77   1                else                start_data=0xfa;  //写数据
  78   1                
  79   1                CS=1;
  80   1                Hdata=ddata&0xf0;                                             //取高四位
  81   1                Ldata=(ddata<<4)&0xf0;                                //取低四位
  82   1                LCD_SendByte(start_data);                             //发送起始信号
  83   1                LCD_Dly(2);                                                   //延时是必须的
  84   1                LCD_SendByte(Hdata);                          //发送高四位
  85   1                LCD_Dly(2);                                               //延时是必须的
  86   1                LCD_SendByte(Ldata);                                  //发送低四位
  87   1                LCD_Dly(2);                                               //延时是必须的
  88   1                CS=0;
  89   1      }
  90          
  91          /***********************************************************************************************
  92          ** 函数名称:LCD_SendByte()
  93          ** 函数功能:发送一个字节
  94          ** 入口参数:bbyte              字节数据
  95          ** 出口参数:无
  96          ***********************************************************************************************/
  97          void LCD_SendByte(unsigned char bbyte) 
  98          {
  99   1               unsigned char i;
 100   1               
 101   1               for(i=0;i<8;i++)
 102   1               {
 103   2                      if( (bbyte&0x80)!=0 )   SID_1;
 104   2              else 
 105   2              {
 106   3                      SID_0 ;                                 //SID=bbyte&0x80;取出最高位
 107   3              }
 108   2                      SCKL_1;                                                         //SCLK=1;
 109   2                  i=i;
 110   2                      SCKL_0;                                                         //SCLK=0;
 111   2                      bbyte<<=1;                                                      //左移
 112   2               }  
 113   1      }
 114          /***********************************************************************************************
 115          ** 函数名称:LCD_Dly()
 116          ** 函数功能://延时
 117          ** 入口参数:dly        延时参数,值越大,延时时间越长
C51 COMPILER V7.06   LCD_GRF                                                               05/31/2007 03:15:51 PAGE 3   

 118          ** 出口参数:无
 119          ***********************************************************************************************/
 120          void LCD_Dly(unsigned int dly) 
 121          {
 122   1              unsigned int i,j;
 123   1              for(i=dly;i>0;i--)
 124   1                      for(j=5;j>0;j--);
 125   1      }
 126          
 127          /***********************************************************************************************
 128          ** 函数名称:LCD_Test()
 129          ** 函数功能:图形方式下屏幕全黑
 130          ** 入口参数:无
 131          ** 出口参数:无
 132          ***********************************************************************************************/
 133          /*void LCD_Test(void)   
 134          { 
 135                  unsigned char i,j;
 136                  for(i=0;i<32;i++)
 137                  { 
 138                          LCD_Write(0,0x80+i);
 139                                  LCD_Write(0,0x80);
 140                      for(j=0;j<16;j++) 
 141                          LCD_Write(1,0xff);
 142                   }
 143          
 144                   for(i=0;i<32;i++)
 145                   { 
 146                          LCD_Write(0,0x80+i);
 147                          LCD_Write(0,0x88);
 148                      for(j=0;j<16;j++) 
 149                          LCD_Write(1,0xff);
 150                   }
 151          }
 152          
 153          /***********************************************************************************************
 154          ** 函数名称:LCD_GPCLS()
 155          ** 函数功能:图形方式下清屏
 156          ** 入口参数:无
 157          ** 出口参数:无
 158          ***********************************************************************************************/
 159          void LCD_GPCLS(void)  
 160          { 
 161   1              unsigned char i,j;
 162   1           LCD_Write(0,0x36);
 163   1         
 164   1              for(i=0;i<32;i++)
 165   1              { 
 166   2                      LCD_Write(0,0x80+i);
 167   2                      LCD_Write(0,0x80);
 168   2                  for(j=0;j<16;j++) 
 169   2                              LCD_Write(1,0x00);
 170   2              }
 171   1      
 172   1              for(i=0;i<32;i++)
 173   1              { 
 174   2                      LCD_Write(0,0x80+i);
 175   2                      
 176   2                      LCD_Write(0,0x88);
 177   2                      
 178   2                  for(j=0;j<16;j++) 
 179   2                              LCD_Write(1,0x00);
C51 COMPILER V7.06   LCD_GRF                                                               05/31/2007 03:15:51 PAGE 4   

 180   2              }
 181   1      }
 182          
 183          /***********************************************************************************************
 184          ** 函数名称:Draw_point()

⌨️ 快捷键说明

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