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

📄 main.lst

📁 驱动15X20D液晶屏
💻 LST
📖 第 1 页 / 共 2 页
字号:
 198   1          P3MDOUT = 0xFF; // Output configuration for P3 
 199   1          P74OUT = 0xF3;  // Output configuration for P4-7
 200   1      
 201   1          P1MDIN = 0xFF;  // Input configuration for P1
 202   1      }
 203          /*-------------------------------------------------------------------
 204          * 功能: 液晶屏的相关程序
 205          * 调用: NULL
 206          * 输入: NULL
 207          * 返回: NULL
 208          * 说明: 对LCD的寄存器和DDRAM
 209          -------------------------------------------------------------------*/
 210          void lcd_regwr(uchar regnada) 
 211          {
 212   1        LCD_DB = regnada;
 213   1        LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
 214   1        LCD_COMMAND |=LCD_CS2_ENABLE;
 215   1        LCD_COMMAND |=LCD_RD_DISABLE;
 216   1        LCD_COMMAND &=LCD_RS_REG; 
 217   1        LCD_COMMAND &=LCD_WR_ENABLE;
 218   1        ;
 219   1        LCD_COMMAND |=LCD_WR_DISABLE;
 220   1        LCD_COMMAND |=LCD_RS_DDRAM;
 221   1        LCD_COMMAND |=LCD_CS1_DISABLE;
 222   1        
 223   1      }
 224          //.............................................
 225          void lcd_datawrite(uchar wrdata) 
 226          {                       //写资料到DDRAM
 227   1        //while(LCD_BUSY == 1);
 228   1        LCD_DB = wrdata;
 229   1        LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
 230   1        LCD_COMMAND |=LCD_CS2_ENABLE;
 231   1        LCD_COMMAND |=LCD_RD_DISABLE;
 232   1        LCD_COMMAND |=LCD_RS_DDRAM; 
 233   1        LCD_COMMAND &=LCD_WR_ENABLE;
 234   1        ;
 235   1        LCD_COMMAND |=LCD_WR_DISABLE;
 236   1        LCD_COMMAND |=LCD_RS_REG;
 237   1        LCD_COMMAND |=LCD_CS1_DISABLE;
 238   1      }
 239          
 240          uchar lcd_regread(uchar regname) 
 241          {                           //读缓存器
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:40:57 PAGE 5   

 242   1        uchar reg_rddata;
 243   1        lcd_regwr(regname);
 244   1        LCD_DB= 0xff;
 245   1        P74OUT = 0x03;  // Output configuration for P4-7
 246   1        DelayS(10);
 247   1        LCD_COMMAND &=LCD_CS1_ENABLE; // chip enable.
 248   1        LCD_COMMAND |=LCD_CS2_ENABLE;
 249   1        LCD_COMMAND |=LCD_WR_DISABLE;
 250   1        LCD_COMMAND &=LCD_RS_REG; 
 251   1        LCD_COMMAND &=LCD_RD_ENABLE;
 252   1        ;
 253   1        reg_rddata=LCD_DB;
 254   1        LCD_COMMAND |=LCD_RD_DISABLE;
 255   1        LCD_COMMAND |=LCD_RS_DDRAM;
 256   1        LCD_COMMAND |=LCD_CS1_DISABLE;
 257   1        ;
 258   1        P74OUT = 0xF3;
 259   1        DelayS(10);
 260   1        return(reg_rddata);
 261   1        
 262   1      }
 263          //=============================================
 264          void LCD_Reset(void) 
 265          {               
 266   1        DelayL(10); // delay 120ms 等待上电复位
 267   1        LCD_COMMAND &=LCD_RST_ENABLE; // RST置低电平
 268   1        DelayL(10);
 269   1        LCD_COMMAND |=LCD_RST_DISABLE; // RST置高电平
 270   1        DelayL(10);
 271   1      
 272   1      }
 273          
 274          void lcd_regwrite(uchar regname,uchar regdata) 
 275          {                                   //写资料到缓存器
 276   1        lcd_regwr(regname);
 277   1        DelayS(1);
 278   1        lcd_regwr(regdata);
 279   1      }
 280          //.............................................
 281          void lcd_initial(void) 
 282          {                   //初始化
 283   1        lcd_regwrite(0x00,0xc9); // lcd control register(lcr)
 284   1        lcd_regwrite(0x01,0xe2); // misc.register(mir)
 285   1        lcd_regwrite(0x02,0x10); // advance power setup register(apsr)
 286   1        lcd_regwrite(0x03,0x80); // advance display setup regiser(adsr)
 287   1        lcd_regwrite(0x10,0x69); // cursor control register(ccr)
 288   1        lcd_regwrite(0x11,0x00); // distance of word or lines register(dwlr)
 289   1        lcd_regwrite(0x12,0x91); // memory access mode register(awrr)
 290   1        lcd_regwrite(0x21,0x27); // display window right register(dwrr)
 291   1        lcd_regwrite(0x31,0xef); // display window bottom register(dwbr)
 292   1        lcd_regwrite(0x41,0x00); // display window left register(dwlr)
 293   1        lcd_regwrite(0x51,0x00); // display window top register(dwtr)
 294   1        lcd_regwrite(0x20,0x27); // active window right register(awrr)
 295   1        lcd_regwrite(0x30,0xef); // active window bottom register(awbr)
 296   1        lcd_regwrite(0x40,0x00); // active window left register(awlr)
 297   1        lcd_regwrite(0x50,0x00); // active window top register(awtr)
 298   1        lcd_regwrite(0x60,0x00); // cursor position x register(cpxr)
 299   1        lcd_regwrite(0x61,0x00); // begin segment position register(bgsg)
 300   1        lcd_regwrite(0x70,0x00); // cursor position y register(cpyr)
 301   1        lcd_regwrite(0x71,0x00); // shift action range,begin commom register(bgcm)
 302   1        lcd_regwrite(0x72,0xef); // shift action range,end commom register(edcm)
 303   1        lcd_regwrite(0x80,0xaa); // blink time register(btr)
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:40:57 PAGE 6   

 304   1        lcd_regwrite(0x81,0x00); // frame rate polarity change at common_fa register(fdca)
 305   1        lcd_regwrite(0x91,0x00); // frame rate polarity change at common_fb register(fdcb)
 306   1        lcd_regwrite(0x90,0x06); // shift clock control register(sccr)
 307   1        lcd_regwrite(0xa0,0x11); // interrupt setup & status register(frcb)
 308   1        lcd_regwrite(0xa1,0x00); // key scan control register(kscr)
 309   1        lcd_regwrite(0xa2,0x00); // key scan data register(ksdr)
 310   1        lcd_regwrite(0xa3,0x00); // key scan data expand register(kser)
 311   1        lcd_regwrite(0xb0,0x27); // interrupt column setup register(intx)
 312   1        lcd_regwrite(0xb1,0xef); // interrupt row setup register(inty)
 313   1        lcd_regwrite(0xc0,0x00); // touch panel control register(tpcr)
 314   1        lcd_regwrite(0xc1,0x24); // adc status register(adcs)
 315   1        lcd_regwrite(0xc8,0x80); // touch panel segment high byte data register(tpxr)
 316   1        lcd_regwrite(0xc9,0x80); // touch panel common high byte data register(tpyr)
 317   1        lcd_regwrite(0xca,0x00); // touch panel segment/common low byte data register(tpzr)
 318   1        lcd_regwrite(0xd0,0x80); // lcd contrast control register (lccr)
 319   1        lcd_regwrite(0xe0,0x00); // pattern data register(pdr)
 320   1        lcd_regwrite(0xf0,0xa0); // font control register(fcr)
 321   1        lcd_regwrite(0xf1,0x0f); // font size control register
 322   1      }
 323          //.............................................
 324          void lcd_clear(void) 
 325          {                   //清屏
 326   1        uchar reg_rddata;
 327   1        lcd_regwrite(0xe0,0x00);
 328   1        reg_rddata =lcd_regread(0xf0);
 329   1        reg_rddata |= 0x08;
 330   1        lcd_regwrite(0xf0,reg_rddata);
 331   1      }
 332          
 333          
 334          void SetXY(uchar x,uchar y)
 335          {                                
 336   1              lcd_regwrite(0x60,x); // active window top register(awtr)
 337   1              lcd_regwrite(0x70,y); // active window top register(awtr)
 338   1              
 339   1      }
 340          
 341          /*void lcd_photo(uchar code *pho) 
 342          {                          //显示图形
 343            uchar i,j,k;
 344            uchar code *pp;
 345            SetXY(0,0);
 346            for(k=0;k<4;k++)
 347            {
 348              pp=pho;
 349              for(j=0;j<60;j++)
 350              {
 351                for(i=0;i<40;i++)
 352                {
 353                  lcd_datawrite(*pp);
 354                  ++pp;
 355                }
 356              }
 357            }
 358          }*/
 359          void WriteCharTo7843(unsigned char num) 
 360          {
 361   1      unsigned char count;
 362   1      DCLK=0;
 363   1      for(count=0;count<8;count++)
 364   1      {
 365   2      if((num&0x80)==0x80)
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:40:57 PAGE 7   

 366   2      DIN=1;
 367   2      else if((num&0x80)==0x00)
 368   2      DIN=0;
 369   2      DCLK=0; _nop_();_nop_();_nop_(); 
 370   2      DCLK=1; _nop_();_nop_();_nop_();
 371   2      num<<=1;
 372   2      }
 373   1      }
 374          unsigned int ReadFromCharFrom7843()
 375          {
 376   1      unsigned char count=0;
 377   1      unsigned int Num=0;
 378   1      for(count=0;count<12;count++)
 379   1      {
 380   2      Num<<=1;
 381   2      DCLK=1; _nop_();_nop_();_nop_(); 
 382   2      DCLK=0; _nop_();_nop_();_nop_();
 383   2      if(DOUT==1) Num++;
 384   2      }
 385   1      return(Num);
 386   1      }
 387          


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