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

📄 lcd.lst

📁 智能家居系统。。。包括PS2键盘
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   05/18/2008 14:29:17 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: E:\My Electronic\Tools\Design tools\keil7.06\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //////////////////////////////////////////
   2          //创新实验室 LCD RT12864M 的串口通信程序//
   3          //                              2006/12/3                               //
   4          //                              balisula                                //
   5          //////////////////////////////////////////
   6          #include <REG52.H>
   7          #include <intrins.h>
   8          
   9          #define  uchar unsigned char
  10          #define  command 1
  11          #define  lcddata 0
  12          
  13          sbit csl = P1^1;
  14          sbit sid = P1^2;
  15          sbit clkl = P1^3;
  16          sbit rstl = P1^4; 
  17          //sbit psb  =P3^2;
  18          sbit lcd_bk =P1^5;
  19          
  20          void delay_2us(unsigned char us);       //精确延时时间=2*us*T+5*T,      T为一个机器周期
  21          void delay_ms(unsigned int ms); //延时时间=8*ms*T(约等于,实际值比此值大,延时时间越长,误差越大,最大误差262*
             -T)
  22          
  23          void sent_com_bit(uchar sent_bit)
  24          {       
  25   1              uchar temp,i;
  26   1      
  27   1              temp=sent_bit;
  28   1              csl=0;
  29   1              clkl=0;
  30   1              sid=0;
  31   1              csl=1;
  32   1              for(i=0;i<8;i++)
  33   1              {
  34   2                      clkl=0;
  35   2                      if((temp&0x80)==0x80)
  36   2                              sid=1;
  37   2                      else
  38   2                              sid=0;
  39   2                      temp<<=1;       
  40   2                      clkl=1;
  41   2                      _nop_ ();
  42   2              }
  43   1              csl=0;
  44   1              clkl=0;
  45   1      }
  46          
  47          void sent_com_3bit(uchar fun,uchar sent_data)
  48          {
  49   1              uchar temp1,temp2,temp3;
  50   1      
  51   1              if(fun==1)
  52   1                      temp1=0xF8;             //发送控制指令
  53   1              else if(fun==0)
  54   1                      temp1=0xFA;             //发送数据显示指令
C51 COMPILER V7.06   LCD                                                                   05/18/2008 14:29:17 PAGE 2   

  55   1              temp2=(sent_data&0xF0); //高4位
  56   1              temp3=((sent_data<<4)&0xF0);//低四位
  57   1      
  58   1              sent_com_bit(temp1);
  59   1              delay_2us(5);
  60   1              sent_com_bit(temp2);
  61   1              delay_2us(5);
  62   1              sent_com_bit(temp3);    
  63   1              delay_2us(5);
  64   1      }
  65          
  66          void sent_position(uchar x,uchar y)
  67          {
  68   1          uchar address;
  69   1              switch(y)
  70   1              {
  71   2                      case 0: 
  72   2                          address = 0x80 + x;
  73   2                          break; 
  74   2                  case 1: 
  75   2                          address = 0x90 + x;
  76   2                              break; 
  77   2                      case 2: 
  78   2                              address = 0x88 + x;
  79   2                              break; 
  80   2                  case 3: 
  81   2                              address = 0x98 + x;
  82   2                              break; 
  83   2                      default:address = 0x80 + x;
  84   2              }
  85   1          sent_com_3bit( command,address );                           
  86   1              
  87   1      }
  88          
  89          void sent_string(uchar x,uchar y,uchar *sent_data,uchar length)
  90          {
  91   1              sent_position(x,y);
  92   1              while(*sent_data&&length)
  93   1              {
  94   2                      sent_com_3bit( lcddata,*sent_data);
  95   2                      sent_data++;
  96   2                      length--;
  97   2              }
  98   1      }
  99          
 100          void sent_pic_position(uchar x,uchar y)
 101          {
 102   1              if(y>31) 
 103   1              {
 104   2                      x+=0x88;
 105   2                      y=(y-32)+0x80;
 106   2              }
 107   1              else
 108   1              {
 109   2                      x+=0x80;
 110   2                      y+=0x80;
 111   2              }
 112   1              sent_com_3bit(command,0x34);
 113   1              sent_com_3bit(command,y);
 114   1              sent_com_3bit(command,x);
 115   1              sent_com_3bit(command,0x30);
 116   1      }
C51 COMPILER V7.06   LCD                                                                   05/18/2008 14:29:17 PAGE 3   

 117          
 118          void LCD_Convert(unsigned char x,unsigned char y,unsigned char weith,unsigned char mode)                //反白
 119          {
 120   1              unsigned char flag=0;
 121   1              unsigned char px=0;
 122   1              unsigned char py=0;     
 123   1              if (mode) mode=0xff;
 124   1              if(x%2) 
 125   1              {
 126   2                      flag=1;
 127   2              }
 128   1              x/=2;
 129   1              for(py=0;py<16;py++)
 130   1              {
 131   2                      sent_pic_position(x,y*16+py);
 132   2                      if(flag) sent_com_3bit(command,0);
 133   2                      for (px=weith;px>0;px--)
 134   2                      {
 135   3                              sent_com_3bit (lcddata,mode);
 136   3                      }
 137   2              }
 138   1              sent_com_3bit(command,0x36);
 139   1              sent_com_3bit(command,0x30);
 140   1      }
 141          
 142          void LCD_clr_pic()
 143          {
 144   1              unsigned char i;
 145   1              for(i=0;i<4;i++) LCD_Convert(0,i,16,0);
 146   1      }
 147          
 148          void init_LCD()
 149          {
 150   1              lcd_bk=1;
 151   1              rstl=0;
 152   1              delay_2us(50);
 153   1              rstl=1;
 154   1              delay_2us(50);
 155   1              //psb=0;
 156   1          sent_com_3bit(command,0x01);      //显示清屏
 157   1              delay_ms(30);
 158   1              sent_com_3bit(command,0x0C);      //显示开,不显示光标(0x0C),显示光标(0x0F)
 159   1              delay_ms(30);
 160   1          sent_com_3bit(command,0x80);      //显示光标移动设置
 161   1              delay_ms(30);
 162   1              LCD_clr_pic();  
 163   1      }


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