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

📄 lcd.lst

📁 关键字:LCD液晶显示屏 串行 并行 ST7920 RT12864
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   LCD                                                                   05/31/2007 04:19:01 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 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          uint16 chart[64]={0};
  13          
  14          /***********************************************************************************************
  15          ** 函数名称:LCD_Init()
  16          ** 函数功能:LCD初始化
  17          ** 入口参数:无
  18          ** 出口参数:无
  19          ***********************************************************************************************/
  20          void LCD_Init(void)     
  21          {
  22   1                //PIN_INITI;
  23   1            PSB = 0;
  24   1            RST = 0;
  25   1                LCD_Dly(50); 
  26   1            RST=1;
  27   1      
  28   1                LCD_Dly(50);                                                          //启动等待,等LCM讲入工作状态                                                                           
  29   1                LCD_Write(0,0x30);                                            //8 位介面,基本指令集
  30   1                LCD_Write(0,0x0c);                                            //显示打开,光标关,反白关
  31   1                LCD_Write(0,0x01);                                            //清屏,将DDRAM的地址计数器归零  
  32   1               
  33   1      }
  34          
  35          void LCD_InitG()        
  36          {
  37   1                //PIN_INITI;
  38   1            PSB = 0;
  39   1            RST = 0;
  40   1                LCD_Dly(2); 
  41   1            RST=1;
  42   1      
  43   1                LCD_Dly(2);                                                           //启动等待,等LCM讲入工作状态                                                                           
  44   1                LCD_Write(0,0x36);                                            //8 位介面,基本指令集
  45   1              //  LCD_Write(0,0x0c);                                                  //显示打开,光标关,反白关
  46   1                //LCD_Write(0,0x01);                                                  //清屏,将DDRAM的地址计数器归零  
  47   1               
  48   1      }
  49          
  50          /***********************************************************************************************
  51          ** 函数名称:LCD_WStr()
  52          ** 函数功能:显示字符串
  53          ** 入口参数:addr       显示的地址
  54          **                       ptr    要显示的字符串的首地址
  55          ** 出口参数:无
C51 COMPILER V7.06   LCD                                                                   05/31/2007 04:19:01 PAGE 2   

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

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

⌨️ 快捷键说明

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