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

📄 lcdlib.lst

📁 SED1335驱动程序(LCD320*240)含GUI
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.09   LCDLIB                                                                12/12/2007 14:46:40 PAGE 4   

 176                   WLCDCmd( CSR_RIGHT);        /*光标自动向右增一*/          
 177               WLCDCmd( CSRW);               /*设定光标位置命令*/
 178               WLCDData( 0 );                     /* 从0000位置开始*/         
 179               WLCDData( 0 );                              
 180               WLCDCmd( MWRITE);          /* 允许uPU连续地把显示数据写入显示区内命令*/  
 181               for(j=y1;j<y2;j++)
 182                  for(i=x1;i<x2;i++)
 183                          WLCDData(buffer[j][i]);  
 184          }
 185          /* 清除显示区域*/
 186          void LCDClear()
 187          {
 188                  
 189              U16  i=32768;
 190               WLCDCmd( CSR_RIGHT);        /*光标自动向右增一*/          
 191               WLCDCmd( CSRW);               /*设定光标位置命令*/
 192               WLCDData( 0 );                     /* 从0000位置开始*/         
 193               WLCDData( 0 );                              
 194               WLCDCmd( MWRITE);          /* 允许uPU连续地把显示数据写入显示区内命令*/            
 195               while(i--)  {                       /*将32K显缓全部清零,即LCD不显示任何东西*/
 196          
 197                     WLCDData( 0x0 );   
 198                  }
 199          }
 200          /* 液晶屏初始化*/
 201          void LCDinit()
 202          {
 203                  U16 i;
 204                  Delaycicle(600);//足够的时间让液晶准备好
 205                  WLCDCmd(SYSTEM_SET);
 206                  for(i=0;i<8;i++)
 207                          {
 208          
 209                                  WLCDData(SYSTAB[i]);
 210                          }
 211                  WLCDCmd(SCROLL);
 212                  for(i=0;i<10;i++)
 213                          {
 214          
 215                                  WLCDData(SCRTAB[i]);
 216                          }
 217                  WLCDCmd(HDOT_SCR);
 218                  WLCDData(0);
 219                  WLCDCmd(OVLAY);
 220                  WLCDData(0x1C);   //设置一三区属性为图形方式,或方式合成
 221                  WLCDCmd(DISP_ON);
 222                  WLCDData(0x54);   //关光标显示
 223                  LCDClear();
 224          }
 225          
 226          /* 液晶屏测试函数*/
 227          void Lcd_test(void)
 228          {
 229                  U8 i;
 230                  UINT8 data;
 231                  char s[]="welcom!";
 232                  uint32 dd[]={200,10,250,20,300,40,240,90,200,10};
 233                  WLCDCmd( CSR_DOWN);        /*光标自动向下增一*/        
 234                   WLCDCmd( CSRW);               /*设定光标位置命令*/
 235                 WLCDData( 0x0 );                     /* 从0000位置开始*/         
 236                 WLCDData( 0x0 );  
 237                   WLCDCmd( MWRITE);          /* 允许uPU连续地把显示数据写入显示区内命令*/     
C51 COMPILER V8.09   LCDLIB                                                                12/12/2007 14:46:40 PAGE 5   

 238                  for(i=0;i<16;i++)
 239                          {
 240                                  data=nanjing[0][i*2];
 241                                  WLCDData(data);
 242                                  Delay(10);
 243                                  //Uart_Printf("lcddata=%d;\n",RLCDData());
 244                          }
 245               WLCDCmd( CSRW);               /*设定光标位置命令*/
 246               WLCDData( 0x1 );                     /* 从0000位置开始*/         
 247               WLCDData( 0x0 );            
 248                    WLCDCmd( MWRITE);          /* 允许uPU连续地把显示数据写入显示区内命令*/     
 249                  for(i=0;i<16;i++)
 250                          {
 251                                  data=nanjing[0][i*2+1];
 252                                  WLCDData(data);
 253                                  Delay(10);
 254                                  //Uart_Printf("lcddata=%d;\n",RLCDData());
 255                          }
 256                          i=0;
 257                  while(s[i]!='\0')
 258                  {
 259                          Lcd_printfchar(20,i,s[i]);
 260                          i++;
 261                  }       
 262                  DrawSting16X16( 40,0, "我爱LCD!")       ;
 263                  GUI_HLine(2,100,100,1);
 264                  GUI_RLine(2,100,200,1);
 265                  GUI_RectFill(5, 110, 100,200, 1);
 266                  GUI_CircleFill(200,150, 50, 1);
 267                  GUI_LineS(dd, 5, 1);
 268          }
 269          
 270          /* 液晶屏汉字显示函数*/
 271          void Lcd_printfHZ(UINT16 row,UINT16 col, UINT16 data)
 272          {
 273                  U8 i;
 274                  UINT16 j;
 275                  j=row*40+col;
 276                  WLCDCmd( CSR_DOWN);        /*光标自动向下增一*/        
 277                  WLCDCmd( CSRW);               /*设定光标位置命令*/
 278              WLCDData( j%256 );                     /* 从0000位置开始*/         
 279              WLCDData( j/256 );  
 280                  WLCDCmd( MWRITE);          /* 允许uPU连续地把显示数据写入显示区内命令*/     
 281                  for(i=0;i<16;i++)
 282                          {
 283                           WLCDData((UINT8)hanzi[data][i*2]);
 284                           Delay(10);
 285                                  //Uart_Printf("lcddata=%d;\n",RLCDData());
 286                          }
 287              WLCDCmd( CSRW);               /*设定光标位置命令*/
 288              WLCDData( (j%256)+1 );                     /* 从0000位置开始*/         
 289              WLCDData( j/256 );          
 290                  WLCDCmd( MWRITE);          /* 允许uPU连续地把显示数据写入显示区内命令*/     
 291                  for(i=0;i<16;i++)
 292                          {
 293                                  WLCDData(hanzi[data][i*2+1]);
 294                                  Delay(10);
 295                                  //Uart_Printf("lcddata=%d;\n",RLCDData());
 296                          }
 297          }
 298          /* 液晶ASCII码显示函数*/
 299          
C51 COMPILER V8.09   LCDLIB                                                                12/12/2007 14:46:40 PAGE 6   

 300          void Lcd_printfchar(UINT16 row,UINT16 col, UINT8 data )
 301          {
 302                  UINT8 i;
 303                  UINT16 j;
 304                  j=row*40+col;
 305                  WLCDCmd( CSR_DOWN);        /*光标自动向下增一*/        
 306                  WLCDCmd( CSRW);               /*设定光标位置命令*/
 307              WLCDData( j%256 );                            
 308              WLCDData( j/256 );  
 309                  WLCDCmd( MWRITE);          /* 允许uPU连续地把显示数据写入显示区内命令*/     
 310                  for(i=0;i<16;i++)
 311                          {
 312                                  WLCDData(ASCII16x8[data-0x20][i]);
 313                                  Delay(10);
 314                          }
 315          }
 316          
 317          /*字符串显示输出*/
 318          void  DrawSting16X16( UINT16 rowfirst,UINT16  colfirst, char *p)
 319          {
 320                  UINT16 q,qq;
 321                   UINT16 row,col;        
 322                  int i; 
 323                      row=rowfirst;
 324                  col=colfirst;           
 325                  i=0;
 326                  while(p[i]!='\0')
 327                                  {                   
 328                             if(p[i]&0x80)
 329                                {
 330                                q=p[i];
 331                                  i++;
 332                                  qq=p[i];
 333                                q=(q-0xB0)*94+(qq-0xA1);                       //取出汉字内码  
 334                                Lcd_printfHZ(row,col,q);      
 335                                  col+=2;
 336                                  if(col==40)
 337                                          {
 338                                                  col=0;
 339                                                  row++;
 340                                          }
 341                                 }
 342                           else
 343                                  {
 344                   
 345                                    Lcd_printfchar(row,col,p[i]);               //输出单个字符  
 346                                   col++;
 347                                     if(col==40)
 348                                          {
 349                                                  col=0;
 350                                                  row++;
 351                                          }
 352                                  }                                                            
 353                             i++;
 354               }
 355          }
 356          
 357          
 358          

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

⌨️ 快捷键说明

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