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

📄 lcd.lst

📁 多功能智能充电器
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   LCD                                                                   05/20/2008 10:43:29 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN Lcd.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\Lcd.c BROWSE DEBUG OBJECTEXTEND PRINT(.\Lcd.lst) OBJECT(Lcd.obj)

line level    source

   1          #include "reg5410.h"
   2          
   3          
   4          
   5          sbit CS =P1^2; 
   6          sbit SID=P1^3; 
   7          sbit SCLK=P1^4; 
   8          
   9          void delay(unsigned int j)
  10          {
  11   1               unsigned char i;
  12   1               do{
  13   2               for(i=0;i<100;i++);
  14   2                }while(j--);
  15   1      }       
  16                                                                                                                                                                                                                  
  17          void send_command(unsigned char command_data) 
  18          { 
  19   1              unsigned char i; 
  20   1              unsigned char i_data,temp_data1,temp_data2; 
  21   1      
  22   1              i_data=0xf8; 
  23   1              delay(10); 
  24   1              CS=1; 
  25   1              SCLK=0; 
  26   1              for(i=0;i<8;i++) 
  27   1              { 
  28   2                      SID=(bit)(i_data&0x80); 
  29   2                      SCLK=0; 
  30   2                      SCLK=1; 
  31   2                      i_data=i_data<<1; 
  32   2              } 
  33   1              i_data=command_data; 
  34   1              i_data&=0xf0; 
  35   1              for(i=0;i<8;i++) 
  36   1              { 
  37   2                      SID=(bit)(i_data&0x80); 
  38   2                      SCLK=0; 
  39   2                      SCLK=1; 
  40   2                      i_data=i_data<<1; 
  41   2              } 
  42   1              i_data=command_data; 
  43   1              temp_data1=i_data&0xf0; 
  44   1              temp_data2=i_data&0x0f; 
  45   1              temp_data1>>=4; 
  46   1              temp_data2<<=4; 
  47   1              i_data=temp_data1|temp_data2; 
  48   1              i_data&=0xf0; 
  49   1              for(i=0;i<8;i++) 
  50   1              { 
  51   2                      SID=(bit)(i_data&0x80); 
  52   2                      SCLK=0; 
  53   2                      SCLK=1; 
  54   2                      i_data=i_data<<1; 
  55   2              } 
C51 COMPILER V8.02   LCD                                                                   05/20/2008 10:43:29 PAGE 2   

  56   1              CS=0; 
  57   1      } 
  58          
  59          void send_data(unsigned char command_data) 
  60          { 
  61   1              unsigned char i; 
  62   1              unsigned char i_data,temp_data1,temp_data2;
  63   1      
  64   1              i_data=0xfa; 
  65   1              delay(10); 
  66   1              CS=1; 
  67   1              for(i=0;i<8;i++) 
  68   1              { 
  69   2                      SID=(bit)(i_data&0x80); 
  70   2                      SCLK=0; 
  71   2                      SCLK=1; 
  72   2                      i_data=i_data<<1; 
  73   2              } 
  74   1              i_data=command_data; 
  75   1              i_data&=0xf0; 
  76   1              for(i=0;i<8;i++) 
  77   1              { 
  78   2                      SID=(bit)(i_data&0x80); 
  79   2                      SCLK=0; 
  80   2                      SCLK=1; 
  81   2                      i_data=i_data<<1; 
  82   2              } 
  83   1              i_data=command_data; 
  84   1              temp_data1=i_data&0xf0; 
  85   1              temp_data2=i_data&0x0f; 
  86   1              temp_data1>>=4; 
  87   1              temp_data2<<=4; 
  88   1              i_data=temp_data1|temp_data2; 
  89   1              i_data&=0xf0; 
  90   1              for(i=0;i<8;i++) 
  91   1              { 
  92   2                      SID=(bit)(i_data&0x80); 
  93   2                      SCLK=0; 
  94   2                      SCLK=1; 
  95   2                      i_data=i_data<<1; 
  96   2              } 
  97   1              CS=0; 
  98   1      }
  99          
 100          void InitLCD() /*液晶初始化*/
 101          { 
 102   1              send_command(0x30); //功能设置:一次送8位数据,基本指令集  
 103   1              send_command(0x06); //点设定:显示字符/光标从左到右移位,DDRAM地址加1 
 104   1              send_command(0x0c); //显示设定:开显示,显示光标,当前显示位反白闪动  
 105   1              send_command(0x04); //显示设定:开显示,显示光标,当前显示位反白闪动   
 106   1              send_command(0x01); //清DDRAM                                                                      
 107   1              send_command(0x02); //DDRAM地址归位                                                      
 108   1              send_command(0x80); //把显示地址设为0X80,即为第一行的首位                      
 109   1      }
 110          
 111          
 112          
 113          /*      flagnew 是刷新标志位,1则刷新,0不刷新, 
 114                  x,y为起始座标 x(0<=x<=3),y(0<=y<=7),x为行座标,y为列座标;
 115                  how为要显示汉字的个数; 
 116                  str是要显示汉字的地址 */
 117                                                                          
C51 COMPILER V8.02   LCD                                                                   05/20/2008 10:43:29 PAGE 3   

 118          void DispHanzi(unsigned char x,unsigned char y,unsigned char how,unsigned char *stri)
 119          {
 120   1              unsigned char hi=0;                                                                       //汉字显示
 121   1              if(x==0) send_command(0x80+y);          
 122   1              else if(x==1) send_command(0x90+y);
 123   1              else if(x==2) send_command(0x88+y);
 124   1              else if(x==3) send_command(0x98+y);
 125   1              for(hi=0;hi<how;hi++)
 126   1              {
 127   2                      send_data(*(stri+hi*2));
 128   2                      send_data(*(stri+hi*2+1));
 129   2              }
 130   1      }
 131          
 132          void DispZimu(unsigned char x,unsigned char y,unsigned char how,unsigned char *stri)
 133          {
 134   1              unsigned char hi=0;                                                                     //字母显示
 135   1              if(x==0) send_command(0x80+y);          
 136   1              else if(x==1) send_command(0x90+y);
 137   1              else if(x==2) send_command(0x88+y);
 138   1              else if(x==3) send_command(0x98+y);     
 139   1              for(hi=0;hi<how;hi++)
 140   1              {
 141   2                      send_data(0xA3);
 142   2                      send_data(*(stri+hi));
 143   2              }       
 144   1      }
 145          
 146          /*      x,y为起始座标 x(0<=x<=3),y(0<=y<=7),x为行座标,y为列座标;         
 147                  n要显示数字*/
 148          void DispShuzi(unsigned char x,unsigned char y,unsigned int n)   //8*16数字显示
 149          {       
 150   1          if(x==0) send_command(0x80+y);              
 151   1              else if(x==1) send_command(0x90+y);
 152   1              else if(x==2) send_command(0x88+y);
 153   1              else if(x==3) send_command(0x98+y);
 154   1      
 155   1          if(n/1000%10!=0)
 156   1              {
 157   2                      send_data(0x30+n/1000%10);
 158   2                      send_data(0x30+n/100%10); 
 159   2                      send_data(0x30+n/10%10);
 160   2                      send_data(0x2E);
 161   2                      send_data(0x30+n%10);
 162   2                      send_data(0x20);
 163   2      //              send_data(0x73);
 164   2              }
 165   1              else if(n/100%10!=0)
 166   1              {
 167   2                      send_data(0x20);
 168   2                      send_data(0x30+n/100%10);
 169   2                      send_data(0x30+n/10%10);
 170   2                      send_data(0x2E);
 171   2                      send_data(0x30+n%10);
 172   2                      send_data(0x20);
 173   2      //              send_data(0x73);
 174   2              }
 175   1              else if(n/10%10!=0)
 176   1              {
 177   2                      send_data(0x20);
 178   2                      send_data(0x20);
 179   2                      send_data(0x30+n/10%10);
C51 COMPILER V8.02   LCD                                                                   05/20/2008 10:43:29 PAGE 4   

 180   2                      send_data(0x2E);
 181   2                      send_data(0x30+n%10);
 182   2                      send_data(0x20);

⌨️ 快捷键说明

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