📄 sed1335.lst
字号:
261 1 xdata unsigned char rev[1000];
262 1 LCD_WriteCommand(LCD_MEM_RD);
263 1 for(i=0;i<LEN;i++)
264 1 LCD_ReadData(rev[i]);
265 1 LCD_ReadState(status);
266 1 return (rev);
267 1 }
268 /******************************************************************************************
269 * 名称:LCD_PutPix(unsigned int X,unsigned int Y)
270 * 功能:在指定的位置上显示点
271 * 入口参数:
272 * 出口参数:
273 *******************************************************************************************/
274 void LCD_PutPix(unsigned int X,unsigned int Y) //X,Y都是从0开始
275 {
276 1 unsigned int addr;
277 1 unsigned char temp;
278 1 addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + (X>>3);
279 1 SED1335_CsRw(addr);
280 1 LCD_WriteCommand(LCD_MEM_RD);
281 1 LCD_ReadData(temp);
282 1 temp = temp|(unsigned char)(1<<(7-(X%8))); //
283 1 SED1335_CsRw(addr);
284 1 LCD_WriteCommand(LCD_MEM_WR);
285 1 LCD_WriteData(temp);
286 1
287 1 }
288 /******************************************************************************************
289 * 名称:LCD_PutChar(unsigned int X,unsigned int Y,unsigned char pchar)
290 * 功能:在指定的位置上显示字符
291 * 入口参数:
292 * 出口参数:
293 *******************************************************************************************/
294 void LCD_PutChar(unsigned int X,unsigned int Y,unsigned char pchar)
295 {
296 1 unsigned int addr;
297 1 addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + (X>>3);
298 1 SED1335_CsRw(addr);
299 1 LCD_WriteData(pchar);
300 1
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 6
301 1 }
302 /*****************************************************************************************
303 * 名称:LCD_PutHZ(unsigned int X,unsigned int Y,unsigned int p_code)
304 * 功能:在指定的位置上显示汉字
305 * 入口参数:
306 * 出口参数:
307 ******************************************************************************************/
308 void LCD_PutHZ(unsigned int X,unsigned int Y,unsigned int p_code)
309 {
310 1 unsigned int addr;
311 1 addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + (X>>3);
312 1 SED1335_CsRw(addr);
313 1
314 1 }
*** WARNING C280 IN LINE 308 OF SED1335.C: 'p_code': unreferenced local variable
315 /******************************************************************************************
316 * 名称:void LCD_CLS(unsigned int addr_begin,unsigned int len)
317 * 功能:清除指定位置的指定长度的区域的空间
318 * 入口参数:
319 * 出口参数:
320 ******************************************************************************************/
321 void LCD_CLS(unsigned int addr_begin,unsigned int len)
322 {
323 1 unsigned int i;
324 1 LCD_WriteCommand(LCD_CSR_DIR);
325 1 LCD_WriteCommand(LCD_CSR_WR);
326 1 LCD_WriteData(GET_LOW_BYTE(addr_begin));
327 1 LCD_WriteData(GET_HIG_BYTE(addr_begin));
328 1 LCD_WriteCommand(LCD_MEM_WR);
329 1
330 1 for(i=0;i<len;i++)
331 1 {
332 2 LCD_WriteData(0x00);
333 2
334 2 }
335 1
336 1 }
337 /******************************************************************************
338 * 名称:LCD_Wr_Area(unsigned char X,unsigned char Y,unsigned char Height,unsigned char Length,unsigned cha
-r *ptr,unsigned char form)
339 * 功能:在指定的空间写入新的数据块 其中 X<40;Y<240 Length<40, Height<240
340 * 入口参数:
341 * 出口参数:
342 *******************************************************************************/
343 void LCD_Wr_Area(unsigned char X,unsigned char Y,unsigned char Height,unsigned char Length,unsigned char *
-ptr,unsigned char form)
344 {
345 1 unsigned int addr;
346 1 int k=0;
347 1 unsigned char temp;
348 1 switch (form&0x01)
349 1 {
350 2 case 0: //点的排列顺序为从上到下 从左到右的方式
351 2 {
352 3 for( k=0;k<Length;k++)
353 3 {
354 4
355 4 addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + X;
356 4 SED1335_CsRw(addr);
357 4 SED1335_CspDir(down);
358 4 SED1335_WMrite(&ptr[k*Height],Height);
359 4 X=X+1;
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 7
360 4 if(X==((GUI_LCD_XMAX>>3)+1))
361 4 {X=0;Y=Y+Height;} //如果超出屏幕的右边界,会另起一行
362 4 }
363 3 break;
364 3 }
365 2 case 1: //点的排列顺序为从左到右 从上到下的方式
366 2 {
367 3 if((X+Length)>(GUI_LCD_XMAX>>3))
368 3 {
369 4 for( k=0;k<Height;k++)
370 4 {
371 5 temp = (GUI_LCD_XMAX>>3)-X;
372 5 addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + X;
373 5 SED1335_CsRw(addr);
374 5 SED1335_CspDir(right);
375 5 SED1335_WMrite(&ptr[k*Length],temp);
376 5 addr = Disp_Base_Addr + (Y+Height)*(GUI_LCD_XMAX>>3);
377 5 SED1335_CsRw(addr);
378 5 SED1335_CspDir(right);
379 5 SED1335_WMrite(&ptr[k*Length+temp],X-temp);
380 5 Y=Y+1;
381 5
382 5 }
383 4 }
384 3 else
385 3 {
386 4
387 4 for( k=0;k<Height;k++)
388 4 {
389 5 addr = Disp_Base_Addr + Y*(GUI_LCD_XMAX>>3) + X;
390 5 SED1335_CsRw(addr);
391 5 SED1335_CspDir(right);
392 5 SED1335_WMrite(&ptr[k*Length],Length);
393 5 Y=Y+1;
394 5
395 5 }
396 4
397 4
398 4
399 4 }
400 3
401 3
402 3 }
403 2 }
404 1 }
405 /******************************************************************************
406 * 名称:DelayMs(unsigned int Time)
407 * 功能:延时程序
408 * 入口参数:
409 * 出口参数:
410 *******************************************************************************/
411 void DelayMs(unsigned int Time)
412 {
413 1 unsigned int i;
414 1 while(Time--)
415 1 for(i=1000*SYS_TIME;i>0;i--);
416 1
417 1
418 1
419 1 }
420 /********************************************************************************
421 滚动演示程序段
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 8
422 使用SED1335 等的屏幕滚动功能, 可以实现逐点滚动的显示效果. 这个效果的实现, 在
423 水平方向是依赖于指令HDOT SET的支持. 我们可以在下面的演示程序中看到HDOT SET指
424 令的使用方法.
425 *********************************************************************************/
426 // 第一显示区向左滚动
427 void RollLeft( void ) {
428 1
429 1 unsigned char tempI,jj=25;
430 1 unsigned int iTemp=0;
431 1
432 1 while(jj--) {
433 2
434 2 for(tempI=0;tempI<8;tempI++) {
435 3 LCD_WriteCommand(LCD_DOT_DIR); // 写入HDOT SET 指令
436 3 LCD_WriteData( tempI ); // 写入参数
437 3 DelayMs(4); // 调延时子程序
438 3 }
439 2
440 2 iTemp ++;
441 2 LCD_WriteCommand( LCD_SCR_OLL ); // 设定显示区域起始地址
442 2 LCD_WriteData( (unsigned char)(iTemp & 0xff) ); // 写入参数
443 2 LCD_WriteData( (unsigned char)(iTemp /256) ); // 写入参数
444 2 }
445 1 }
446
447
448 // 第一显示区向右滚动
449 void Rollright( void ) {
450 1
451 1 unsigned char tempI,jj=25;
452 1 unsigned int iTemp=24;
453 1 // return;
454 1 // WriteCommand( DispOn ); // 写入指令DISP ON/OFF代码,后续参数:
455 1 // WriteData( 0x44 ); // 00 00 01 00显示1区开显示,其余层关闭
456 1
457 1 while(jj--) {
458 2 tempI = 8;
459 2 LCD_WriteCommand( LCD_SCR_OLL ); // 显示区域(起点)设置
460 2 LCD_WriteData( (unsigned char)(iTemp & 0xff) ); // 写入参数
461 2 LCD_WriteData( (unsigned char)(iTemp /256) ); // 写入参数
462 2 while( tempI-- ) {
463 3 LCD_WriteCommand( LCD_DOT_DIR ); // 写入HDOT SET 指令
464 3 LCD_WriteData( tempI ); // 写入参数
465 3 DelayMs(4); // 调延时子程序
466 3 }
467 2
468 2 iTemp--;
469 2 }
470 1 }
471
472 // 第一显示区向下滚动
473 void RollDown( void ) {
474 1
475 1 unsigned char jj = 50; // 演示32次
476 1 unsigned int iTemp=paraP9*50;
477 1
478 1 // WriteCommand( DispOn ); // 写入指令DISP ON/OFF代码,后续参数:
479 1 // WriteData( 0x44 ); // 00 00 01 00显示1区开显示,其余层关闭
480 1
481 1 while(jj--) {
482 2 iTemp -= paraP9;
483 2 LCD_WriteCommand( LCD_SCR_OLL ); // 设定显示区域起始地址
C51 COMPILER V8.06 SED1335 03/28/2007 10:18:02 PAGE 9
484 2 LCD_WriteData( (unsigned char)(iTemp & 0xff) ); // 写入参数
485 2 LCD_WriteData( (unsigned char)(iTemp /256) ); // 写入参数
486 2 DelayMs(4); // 调延时子程序
487 2 }
488 1 LCD_WriteCommand( LCD_SCR_OLL ); // 设定显示区域起始地址
489 1 LCD_WriteData( 0 ); // 写入参数
490 1 LCD_WriteData( 0 ); // 写入参数
491 1 DelayMs(30);
492 1 }
493
494 // 第一显示区向上滚动
495 void RollUp( void ) {
496 1
497 1 unsigned int iTemp=0;
498 1 unsigned char jj = 50; // 演示30次
499 1
500 1 // WriteCommand( DispOn ); // 写入指令DISP ON/OFF代码,后续参数:
501 1 // WriteData( 0x44 ); // 00 00 01 00显示1区开显示,其余层关闭
502 1
503 1 while(jj--) {
504 2
505 2 iTemp += paraP9;
506 2
507 2 LCD_WriteCommand( LCD_SCR_OLL ); // 设定显示区域起始地址
508 2 LCD_WriteData( (unsigned char)(iTemp & 0xff) ); // 写入参数
509 2 LCD_WriteData( (unsigned char)(iTemp /256) ); // 写入参数
510 2
511 2 DelayMs(3); // 调延时子程序
512 2 }
513 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2325 ----
CONSTANT SIZE = 26 ----
XDATA SIZE = ---- 1000
PDATA SIZE = ---- ----
DATA SIZE = 2 44
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 + -