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

📄 lcd_screen_driver.lst

📁 自己写的测试程序,调试已通过,可以直接使用, 而且有的还有详细的注释.红外采集器软件
💻 LST
字号:
C51 COMPILER V7.08   LCD_SCREEN_DRIVER                                                     06/13/2007 16:48:12 PAGE 1   


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

line level    source

   1          #include<w78e58b.h>
   2          
   3          
   4          sbit employ=P2^0; 
   5             sbit read_write=P2^7;
   6          sbit data_injunction=P2^6;
   7          sbit piece_left=P2^5;
   8           sbit piece_right=P2^4;
   9          void write_byte(bit piece,unsigned char x,unsigned char y,unsigned char d[]);
  10          
  11          
  12          /*************    write left lcd screen   **********************/
  13          void write_left_injunction(unsigned char d)
  14          { 
  15   1        signed char x;
  16   1        piece_left=1;       
  17   1        read_write=1;                   // 1:read,0:write
  18   1        data_injunction=0;              // 1:data, 0:injunction
  19   1       loop1:
  20   1        lcd_data=0xff;
  21   1        employ=1;
  22   1        x=lcd_data;
  23   1        employ=0;
  24   1        if(x&0x80)
  25   1          { goto loop1;}
  26   1         read_write=0;
  27   1         lcd_data=d;
  28   1         employ=1;
  29   1         employ=0;
  30   1         piece_left=0;
  31   1         piece_right=0;
  32   1         }
  33          /**************   write right lcd screen  ************************/
  34          void write_right_injunction(unsigned char d)
  35          {  
  36   1        signed char x;
  37   1        piece_right=1;       
  38   1        read_write=1;                   // 1:read,0:write
  39   1        data_injunction=0;              // 1:data, 0:injunction
  40   1       loop2:
  41   1        lcd_data=0xff;
  42   1        employ=1;
  43   1        x=lcd_data;
  44   1        employ=0;
  45   1        if(x&0x80)
  46   1          { goto loop2;}
  47   1         read_write=0;
  48   1         lcd_data=d;
  49   1         employ=1;
  50   1         employ=0;
  51   1         piece_left=0;
  52   1         piece_right=0;
  53   1         }
  54          /**************  send left lcd screen dispaly data **************/
  55          void write_left_data(unsigned char d)
C51 COMPILER V7.08   LCD_SCREEN_DRIVER                                                     06/13/2007 16:48:12 PAGE 2   

  56          {
  57   1       signed char x;
  58   1       piece_left=1;                   // employ left lcd screen
  59   1       read_write=1;                   // write data
  60   1       data_injunction=0;              // send injunction
  61   1       loop1:
  62   1          lcd_data=0xff;
  63   1          employ=1;
  64   1          x=lcd_data;
  65   1          employ=0;
  66   1         if(x&0x80)
  67   1            {goto loop1;}
  68   1        data_injunction=1;
  69   1        read_write=0;
  70   1        lcd_data=d;
  71   1        employ=1;
  72   1        employ=0;
  73   1        piece_left=0;
  74   1        piece_right=0;
  75   1        }
  76          /**************  send right lcd screen dispaly data **************/
  77          void write_right_data(unsigned char d)
  78          {
  79   1       signed char x;
  80   1       piece_right=1;                   // employ left lcd screen
  81   1       read_write=1;                   // write data
  82   1       data_injunction=0;              // send injunction
  83   1       loop1:
  84   1          lcd_data=0xff;
  85   1          employ=1;
  86   1          x=lcd_data;
  87   1          employ=0;
  88   1         if(x&0x80)
  89   1            {goto loop1;}
  90   1        data_injunction=1;
  91   1        read_write=0;
  92   1        lcd_data=d;
  93   1        employ=1;
  94   1        employ=0;
  95   1        piece_left=0;
  96   1        piece_right=0;
  97   1        }
  98            
  99          /***************  delay time ***********************************/
 100          void delay_time(unsigned int i)
 101           {
 102   1         unsigned char j;
 103   1         for(;i>0;i--)
 104   1           { for(j=0;j<100;j++)
 105   2              {;}
 106   2               }
 107   1      }
 108          /************   clear_lcd_screen  ********************************/
 109          void clear_lcd_screen(void)
 110           {
 111   1      
 112   1      
 113   1      unsigned char lcd_page;
 114   1        unsigned  char i,j;
 115   1        
 116   1        delay_time(0);                      //must delay time
 117   1        
C51 COMPILER V7.08   LCD_SCREEN_DRIVER                                                     06/13/2007 16:48:12 PAGE 3   

 118   1        for(i=0;i<8;i++)
 119   1        { 
 120   2          lcd_page=i|0xb8;
 121   2             write_left_injunction(lcd_page);
 122   2             write_left_injunction(0x40|i);
 123   2          for(j=0;j<64;j++)
 124   2            {
 125   3                
 126   3             write_left_data(0x00);
 127   3             
 128   3                 }
 129   2         }
 130   1        for(i=0;i<8;i++)
 131   1        {
 132   2          lcd_page=i|0xb8;
 133   2          write_right_injunction(lcd_page);
 134   2          write_right_injunction(0x40);
 135   2        for(j=0;j<64;j++)
 136   2           {
 137   3             write_right_data(0x00);
 138   3            }
 139   2         }
 140   1       }
 141           
 142          /************   initialization led screen ************************/
 143          void initialization_led_screen(void) 
 144          {
 145   1       lcd_data=0x00;
 146   1       employ=0;
 147   1       read_write=0;
 148   1       data_injunction=0;
 149   1       piece_left=0;
 150   1       piece_right=0;
 151   1       write_left_injunction(0x3e);          // off lcd left screen
 152   1       write_right_injunction(0x3e);         // off lcd right screen
 153   1       write_left_injunction(0xc0);          // left part row address select 2^6
 154   1       write_right_injunction(0xc0);          // right part row address select 2^6
 155   1       clear_lcd_screen();
 156   1       write_left_injunction(0x3f);          // on lcd left screen
 157   1       write_right_injunction(0x3f);         // on lcd right screen
 158   1       }
 159          /********************  write a Byte  ******************************************************/
 160          
 161          void write_byte(bit piece,unsigned char x,unsigned char y,unsigned char d[])  // 0:left,1:right
 162           {
 163   1         unsigned char i,j,q;                                               // x less than or equal to 6
 164   1         unsigned char *da;                                               // y less than or equal to 56
 165   1             da=d;                               // x for even
 166   1             x|=0xb8;                              // page address
 167   1             y|=0x40;
 168   1         if(!piece)
 169   1         {                                   // row
 170   2         for(i=0;i<2;i++)
 171   2           {   
 172   3           q=0;
 173   3           for(j=0;j<8;j++)
 174   3                 {   
 175   4                     if((y+j)<128)
 176   4                               {
 177   5                       write_left_injunction(x+i);     
 178   5                       write_left_injunction(y+j);
 179   5                               write_left_data(*da);}
C51 COMPILER V7.08   LCD_SCREEN_DRIVER                                                     06/13/2007 16:48:12 PAGE 4   

 180   4                                       
 181   4                                       if((y+j)>=128)
 182   4                                       {  
 183   5                                       write_right_injunction(x+i);
 184   5                                       write_right_injunction(q+64);
 185   5                                       write_right_data(*da);q++;}
 186   4                                       da++;
 187   4                                       }
 188   3                    }
 189   2                 }
 190   1         else
 191   1         {
 192   2         for(i=0;i<2;i++)
 193   2          {  
 194   3               write_right_injunction(x+i);
 195   3           write_right_injunction(y);
 196   3           for(j=0;j<8;j++)
 197   3             {  
 198   4               write_right_data(*da);
 199   4                   da++;
 200   4              }   
 201   3           }
 202   2          }  
 203   1       }
 204          /************** write a word    ***********************************************/
 205          void write_word(bit piece,unsigned char x,unsigned char y,unsigned char d[])
 206          {
 207   1        unsigned char *da;
 208   1        unsigned char i,j,p;
 209   1        unsigned char word[2][16];                                     
 210   1        da=d;  
 211   1       for(i=0;i<2;i++)
 212   1        { for(j=0;j<16;j++)
 213   2           {
 214   3                word[i][j]=*da;
 215   3                da++;
 216   3                }
 217   2               } 
 218   1       write_byte(piece,x,y,&word[0]);
 219   1          p=y+8;  if(p>=64)
 220   1                      {y=p-72;piece=1;p=0;}
 221   1       write_byte(piece,x,y+8,&word[1]);
 222   1       }
 223          
 224          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    556    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      45
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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