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

📄 displaylcd.lst

📁 ST7920的使用方法
💻 LST
字号:
C51 COMPILER V7.06   DISPLAYLCD                                                            12/05/2008 17:08:25 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DISPLAYLCD
OBJECT MODULE PLACED IN DisplayLCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DisplayLCD.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <at89x52.h>
   2          #include<intrins.h>
   3          
   4          #define uchar unsigned char
   5          #define uint unsigned int 
   6          #define xtal 8
   7          
   8          #define Set_CS() P2 |= (1<<0)
   9          #define Set_SID() P2 |= (1<<1)
  10          #define Set_SCLK() P2 |= (1<<2)
  11          
  12          #define Clr_CS() P2 &=~(1<<0)
  13          #define Clr_SID() P2 &=~(1<<1)
  14          #define Clr_SCLK() P2 &=~(1<<2)
  15          
  16          
  17           
  18          //====================================================================
  19          //函数声明
  20          void Delay(uint ms);      //延时子程序
  21          void W_1byte(uchar RW, uchar RS, uchar W_data);
  22          void Write_8bits(uint W_bits);
  23          void LCD_Init(void);
  24          
  25          /********************************************************************
  26          ********************************************************************/ 
  27          //===================================================================
  28          const uchar mynew1[]={"  开门鸿公司"};
  29          const uchar mynew2[]={"    欢迎您!"};
  30          const uchar mynew3[]={"  联系电话:"};
  31          const uchar mynew4[]={"12345678"};
  32          /********************************************************************
  33          
  34          ********************************************************************/
  35          void main()
  36          {
  37   1       uchar i = 0;
  38   1       P2 = 0x00;
  39   1       P2 |= (1<<6);
  40   1       P2 |= (1<<7);
  41   1      
  42   1        P2 |= (1<<5);
  43   1        P2 |=  1<<3;
  44   1      
  45   1       Clr_CS();
  46   1       Clr_SID();
  47   1       Clr_SCLK();
  48   1       LCD_Init();
  49   1       while(1)
  50   1       {
  51   2      
  52   2      
  53   2         _nop_();
  54   2        W_1byte(0,0,0x80);   //显示的地址0x80
  55   2         _nop_();
C51 COMPILER V7.06   DISPLAYLCD                                                            12/05/2008 17:08:25 PAGE 2   

  56   2        for(i=0;mynew1[i]!='\0';i++)
  57   2        {
  58   3         W_1byte(0,1,mynew1[i]);
  59   3        }
  60   2        W_1byte(0,0,0x90);     //显示的地址0x90
  61   2        for(i=0;mynew2[i]!='\0';i++)
  62   2        {
  63   3         W_1byte(0,1,mynew2[i]); 
  64   3        }
  65   2        Delay(100);
  66   2         _nop_();
  67   2         W_1byte(0,0,0x01); //写指令
  68   2         _nop_();
  69   2         W_1byte(0,0,0x02); //写指令
  70   2         _nop_();
  71   2        W_1byte(0,0,0x80);   //显示的地址0x88
  72   2        for(i=0;mynew3[i]!='\0';i++)
  73   2        {
  74   3         W_1byte(0,1,mynew3[i]);
  75   3        }
  76   2        W_1byte(0,0,0x90);     //显示的地址0x98
  77   2        for(i=0;mynew4[i]!='\0';i++)
  78   2        {
  79   3         W_1byte(0,1,mynew4[i]);
  80   3        }
  81   2        Delay(100);
  82   2         _nop_();
  83   2         W_1byte(0,0,0x01); //写指令
  84   2         _nop_();
  85   2         W_1byte(0,0,0x02); //写指令
  86   2         _nop_();
  87   2         Delay(100);
  88   2      
  89   2      
  90   2       
  91   2       }
  92   1      }
  93          /******************************************************************/
  94          void LCD_Init(void)
  95          {
  96   1        uchar cmd;
  97   1        cmd=0x30;   //功能设置 8位数据,基本指令
  98   1       W_1byte(0,0,cmd);
  99   1       Delay(2);
 100   1       cmd=0x0C;   //显示状态 ON,游标OFF,反白OFF
 101   1       W_1byte(0,0,cmd); //写指令
 102   1       Delay(2);
 103   1       cmd=0x01;   //清除显示
 104   1       W_1byte(0,0,cmd); //写指令
 105   1       Delay(2);
 106   1       cmd=0x02;   //地址归位
 107   1       W_1byte(0,0,cmd); //写指令
 108   1       Delay(2);
 109   1       cmd=0x80;   //设置DDRAM地址
 110   1       W_1byte(0,0,cmd); //写指令
 111   1       Delay(2);   //延时
 112   1      }
 113          /*******************************************************************
 114          函 数 名:W_1byte
 115          入口参数:RW、RS、W_data
 116          出口参数:无
 117          建立日期:2007年3月3日
C51 COMPILER V7.06   DISPLAYLCD                                                            12/05/2008 17:08:25 PAGE 3   

 118          修改日期:
 119          函数作用:写一个字节的数据到12864液晶,包括指令和数据
 120          说    明:RW=1,从液晶读数据到MCU;RW=0,写一个数据到液晶;
 121             (一般RW都设为0,即只向液晶写数据,不读数据)
 122                    RS=1,写入的是数据;RS=0,写入的是指令;
 123              一般模式:RW=0,RS=1;写数据
 124                 RW=0,RS=0;写指令
 125          ********************************************************************/
 126          void W_1byte(uchar RW, uchar RS, uchar W_data)
 127          {
 128   1       uint H_data,L_data,S_ID = 0xf8;  //11111RWRS0
 129   1       if(RW == 0)
 130   1       {
 131   2         S_ID &=~ 0x04;
 132   2       }
 133   1       else     //if(RW==1)
 134   1       {
 135   2         S_ID |= 0X04;
 136   2       }
 137   1       if(RS == 0)
 138   1       {
 139   2         S_ID &=~ 0x02;
 140   2       }
 141   1       else     //if(RS==1)
 142   1       {
 143   2         S_ID |= 0X02;
 144   2       }
 145   1       H_data = W_data;
 146   1       H_data &= 0xf0;   //屏蔽低4位的数据
 147   1       L_data = W_data;     //xxxx0000格式
 148   1       L_data &= 0x0f;   //屏蔽高4位的数据
 149   1       L_data <<= 4;   //xxxx0000格式
 150   1       Set_CS();
 151   1       Write_8bits(S_ID);   //发送S_ID
 152   1       Write_8bits(H_data); //发送H_data
 153   1       Write_8bits(L_data); //发送L_data
 154   1       Clr_CS(); 
 155   1      }
 156          /********************************************************************
 157          函 数 名:Write_8bits
 158          入口参数:W_bits
 159          出口参数:无
 160          建立日期:2007年3月3日
 161          修改日期:
 162          函数作用:负责串行输出8个bit位
 163          说    明:
 164          ********************************************************************/
 165          void Write_8bits(uint W_bits)
 166          {
 167   1       uint i,Temp_data,j=0;
 168   1       for(i=0; i<8; i++)
 169   1       {
 170   2        Temp_data = W_bits;
 171   2        Temp_data <<= i;
 172   2        if((Temp_data&0x80)==0)  //bit7 is zero
 173   2        {
 174   3         Clr_SID();
 175   3         j++;
 176   3         Set_SCLK();
 177   3         _nop_();
 178   3         Clr_SCLK();
 179   3         _nop_();
C51 COMPILER V7.06   DISPLAYLCD                                                            12/05/2008 17:08:25 PAGE 4   

 180   3         Clr_SID();
 181   3         _nop_();
 182   3      
 183   3        }
 184   2        else         //bit7 is one
 185   2        {
 186   3         Set_SID();
 187   3         _nop_();
 188   3         Set_SCLK();
 189   3         _nop_();
 190   3         _nop_();
 191   3         Clr_SCLK();
 192   3         _nop_();
 193   3         Clr_SID();
 194   3         _nop_();
 195   3      
 196   3        } 
 197   2       }
 198   1      }
 199          /********************************************************************
 200          函 数 名:Delay
 201          入口参数:ms
 202          出口参数:无
 203          建立日期:2007年3月3日
 204          修改日期:
 205          函数作用:毫秒级的延时程序,当晶振为12Mhz时,xtal=12;
 206          说    明:
 207          ********************************************************************/
 208          void Delay(uint ms) 
 209          { 
 210   1          uint i; 
 211   1          while(ms--)    
 212   1         { 
 213   2           for(i=1;i<(uint)(xtal*143-2);i++) 
 214   2               ; 
 215   2         }   
 216   1      }
 217          //===================================================================*/
 218          


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