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

📄 main.lst

📁 驱动15X20D液晶屏
💻 LST
📖 第 1 页 / 共 2 页
字号:
 211   1        return(reg_rddata);
 212   1        
 213   1      }
 214          //=============================================
 215          void LCD_Reset(void) 
 216          {               
 217   1        DelayL(10); // delay 120ms 等待上电复位
 218   1        LCD_COMMAND &=LCD_RST_ENABLE; // RST置低电平
 219   1        DelayL(10);
 220   1        LCD_COMMAND |=LCD_RST_DISABLE; // RST置高电平
 221   1        DelayL(10);
 222   1      
 223   1      }
 224          
 225          void lcd_regwrite(uchar regname,uchar regdata) 
 226          {                                   //写资料到缓存器
 227   1        lcd_regwr(regname);
 228   1        DelayS(1);
 229   1        lcd_regwr(regdata);
 230   1      }
 231          //.............................................
 232          void lcd_initial(void) 
 233          {                   //初始化
 234   1        lcd_regwrite(0x00,0xc9); // lcd control register(lcr)
 235   1        lcd_regwrite(0x01,0xe2); // misc.register(mir)
 236   1        lcd_regwrite(0x02,0x10); // advance power setup register(apsr)
 237   1        lcd_regwrite(0x03,0x80); // advance display setup regiser(adsr)
 238   1        lcd_regwrite(0x10,0x69); // cursor control register(ccr)
 239   1        lcd_regwrite(0x11,0x00); // distance of word or lines register(dwlr)
 240   1        lcd_regwrite(0x12,0x91); // memory access mode register(awrr)
 241   1        lcd_regwrite(0x21,0x27); // display window right register(dwrr)
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:48:30 PAGE 5   

 242   1        lcd_regwrite(0x31,0xef); // display window bottom register(dwbr)
 243   1        lcd_regwrite(0x41,0x00); // display window left register(dwlr)
 244   1        lcd_regwrite(0x51,0x00); // display window top register(dwtr)
 245   1        lcd_regwrite(0x20,0x27); // active window right register(awrr)
 246   1        lcd_regwrite(0x30,0xef); // active window bottom register(awbr)
 247   1        lcd_regwrite(0x40,0x00); // active window left register(awlr)
 248   1        lcd_regwrite(0x50,0x00); // active window top register(awtr)
 249   1        lcd_regwrite(0x60,0x00); // cursor position x register(cpxr)
 250   1        lcd_regwrite(0x61,0x00); // begin segment position register(bgsg)
 251   1        lcd_regwrite(0x70,0x00); // cursor position y register(cpyr)
 252   1        lcd_regwrite(0x71,0x00); // shift action range,begin commom register(bgcm)
 253   1        lcd_regwrite(0x72,0xef); // shift action range,end commom register(edcm)
 254   1        lcd_regwrite(0x80,0xaa); // blink time register(btr)
 255   1        lcd_regwrite(0x81,0x00); // frame rate polarity change at common_fa register(fdca)
 256   1        lcd_regwrite(0x91,0x00); // frame rate polarity change at common_fb register(fdcb)
 257   1        lcd_regwrite(0x90,0x06); // shift clock control register(sccr)
 258   1        lcd_regwrite(0xa0,0x11); // interrupt setup & status register(frcb)
 259   1        lcd_regwrite(0xa1,0x00); // key scan control register(kscr)
 260   1        lcd_regwrite(0xa2,0x00); // key scan data register(ksdr)
 261   1        lcd_regwrite(0xa3,0x00); // key scan data expand register(kser)
 262   1        lcd_regwrite(0xb0,0x27); // interrupt column setup register(intx)
 263   1        lcd_regwrite(0xb1,0xef); // interrupt row setup register(inty)
 264   1        lcd_regwrite(0xc0,0x00); // touch panel control register(tpcr)
 265   1        lcd_regwrite(0xc1,0x24); // adc status register(adcs)
 266   1        lcd_regwrite(0xc8,0x80); // touch panel segment high byte data register(tpxr)
 267   1        lcd_regwrite(0xc9,0x80); // touch panel common high byte data register(tpyr)
 268   1        lcd_regwrite(0xca,0x00); // touch panel segment/common low byte data register(tpzr)
 269   1        lcd_regwrite(0xd0,0x80); // lcd contrast control register (lccr)
 270   1        lcd_regwrite(0xe0,0x00); // pattern data register(pdr)
 271   1        lcd_regwrite(0xf0,0xa0); // font control register(fcr)
 272   1        lcd_regwrite(0xf1,0x0f); // font size control register
 273   1      }
 274          //.............................................
 275          void lcd_clear(void) 
 276          {                   //清屏
 277   1        uchar reg_rddata;
 278   1        lcd_regwrite(0xe0,0x00);
 279   1        reg_rddata =lcd_regread(0xf0);
 280   1        reg_rddata |= 0x08;
 281   1        lcd_regwrite(0xf0,reg_rddata);
 282   1      }
 283          
 284          
 285          void SetXY(uchar x,uchar y)
 286          {                                
 287   1              lcd_regwrite(0x60,x); // active window top register(awtr)
 288   1              lcd_regwrite(0x70,y); // active window top register(awtr)
 289   1              
 290   1      }
 291          
 292          /*void lcd_photo(uchar code *pho) 
 293          {                          //显示图形
 294            uchar i,j,k;
 295            uchar code *pp;
 296            SetXY(0,0);
 297            for(k=0;k<4;k++)
 298            {
 299              pp=pho;
 300              for(j=0;j<60;j++)
 301              {
 302                for(i=0;i<40;i++)
 303                {
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:48:30 PAGE 6   

 304                  lcd_datawrite(*pp);
 305                  ++pp;
 306                }
 307              }
 308            }
 309          }*/
 310          void XY_Position_change()
 311          {
 312   1              long tempx,tempy;//注意类型和Tx,Ty保持一致
 313   1              int i,r,x[6],y[6],xmin,xmax,ymin,ymax;
 314   1              int SETX=0,SETY=0,X_temp[2],Y_temp[2];  
 315   1              CS=0;
 316   1              for(i=0;i<2;i++)
 317   1              {
 318   2                      for(r=0;r<6;r++)//X,Y的坐标读取六次
 319   2                              {
 320   3                              WriteCharTo7843(CODE_INT_X);
 321   3                    //Step2. Receive X-dir locating information
 322   3                      x[r] = ReadFromCharFrom7843();
 323   3                    //Step3. Send out Y-dir locating command
 324   3                              WriteCharTo7843(CODE_INT_Y);
 325   3                    //Step4. Receive Y-dir locating information
 326   3                    y[r] = ReadFromCharFrom7843();//读Y轴坐标
 327   3                      }
 328   2                      xmin=x[0];xmax=x[0];ymin=y[0];ymax=y[0];
 329   2                      for(r=1;r<6;r++)
 330   2                      {  
 331   3                              if(x[r]<xmin)
 332   3                                      xmin=x[r];
 333   3                              if(x[r]>xmax)
 334   3                                      xmax=x[r];
 335   3                              if(y[r]<ymin)
 336   3                                      ymin=y[r];
 337   3                              if(y[r]>ymax)
 338   3                                      ymax=y[r];
 339   3                      }
 340   2          //坐标中去掉最大的和最小的
 341   2              X_temp[i]=(x[0]+x[1]+x[2]+x[3]+x[4]+x[5]-xmin-xmax)/4;
 342   2              Y_temp[i]=(y[0]+y[1]+y[2]+y[3]+y[4]+y[5]-ymin-ymax)/4;
 343   2      
 344   2              }
 345   1              //将处理后的触摸屏坐标取平均,得到较准确的触摸屏坐标X,Y
 346   1              SETX=(X_temp[0]+X_temp[1])/2;
 347   1              SETY=(Y_temp[0]+Y_temp[1])/2;   
 348   1      //  tempx=SETX-375;//这里X,Y是经过处理的触摸屏的坐标            
 349   1              if(tempx<0)
 350   1                      tempx=0;
 351   1              else
 352   1                      Tx=(tempx*320)/(1800-375);
 353   1              tempy=SETY-500;
 354   1              if(tempy<0)
 355   1                      tempy=0;
 356   1              else
 357   1                      Ty=tempy*240/(1800-590);
 358   1      }
 359          void MouseDown(unsigned long X, unsigned long Y)
 360          {
 361   1              if(Y<30)
 362   1                      {
 363   2                      SetXY(8,24);
 364   2                      lcd_datawrite(0xE8);
 365   2                      lcd_datawrite(0xAF);
C51 COMPILER V7.20   MAIN                                                                  04/03/2008 10:48:30 PAGE 7   

 366   2                      }
 367   1              else if(Y>30&&Y<72)
 368   1                      {
 369   2                      SetXY(8,56);
 370   2                      lcd_datawrite(0xC0);
 371   2                      lcd_datawrite(0xDA);
 372   2                      }
 373   1              else if(Y>72)
 374   1                      {
 375   2                      SetXY(8,88);
 376   2                      lcd_datawrite(0xBE);
 377   2                      lcd_datawrite(0xFD);
 378   2                      }
 379   1              else
 380   1                      ; 
 381   1      
 382   1      
 383   1      }
*** WARNING C280 IN LINE 359 OF MAIN.C: 'X': unreferenced local variable
 384          
 385          void WriteCharTo7843(unsigned char num) 
 386          {
 387   1      unsigned char count;
 388   1      DCLK=0;
 389   1      for(count=0;count<8;count++)
 390   1      {
 391   2      if((num&0x80)==0x80)
 392   2      DIN=1;
 393   2      else if((num&0x80)==0x00)
 394   2      DIN=0;
 395   2      DCLK=0; _nop_();_nop_();_nop_(); 
 396   2      DCLK=1; _nop_();_nop_();_nop_();
 397   2      num<<=1;
 398   2      }
 399   1      }
 400          unsigned int ReadFromCharFrom7843()
 401          {
 402   1      unsigned char count=0;
 403   1      unsigned int Num=0;
 404   1      for(count=0;count<12;count++)
 405   1      {
 406   2      Num<<=1;
 407   2      DCLK=1; _nop_();_nop_();_nop_(); 
 408   2      DCLK=0; _nop_();_nop_();_nop_();
 409   2      if(DOUT==1) Num++;
 410   2      }
 411   1      return(Num);
 412   1      }
 413          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1935    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      9      64
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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