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

📄 lcd_osd.lst

📁 液晶显示器程序代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 450          
 451          void OSD_Slider(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned 
             -char range,
 452                          unsigned char color, unsigned char color_slider)
 453          {
 454   1              unsigned int idata usStart_Addr;
 455   1              unsigned char idata ucTemp;
 456   1              unsigned int bound;
 457   1      
 458   1              usStart_Addr = FONT_SELECT_ADDRESS;
 459   1      
 460   1              for(ucTemp = 1; ucTemp < row+1; ucTemp ++)
 461   1                      usStart_Addr += Row_Info[0][ucTemp];
 462   1      
 463   1              length = length -5;
 464   1              bound   = ((length-2)*6 + 2*3) * value;
 465   1      
 466   1              // Set color
 467   1              Data[0] = 6;
 468   1              Data[1] = Y_INC;
 469   1              Data[2] = OSD_ADDR_MSB_90;
 470   1              Data[3] = (unsigned char)((((usStart_Addr + col) >>8 ) & 0x0f ) | 0x90);
 471   1              Data[4] = (unsigned char)( (usStart_Addr + col) & 0x00ff);
 472   1              Data[5] = (color << 4) & 0xf0;          
 473   1              Data[6] = 0;
 474   1              RTDWrite(Data);
C51 COMPILER V7.06   LCD_OSD                                                               11/21/2005 13:47:29 PAGE 9   

 475   1      
 476   1              Data[0] = 5;
 477   1              Data[1] = N_INC;
 478   1              Data[2] = OSD_DATA_92;
 479   1              Data[3] = (color << 4) & 0xf0;          
 480   1              Data[4] = (color << 4) & 0xf0;          
 481   1              Data[5] = 0;
 482   1              RTDWrite(Data);
 483   1      
 484   1              OSD_Line(row,col+5,12,((color_slider<<4) & 0xf0),2);
 485   1              Data[0] = 6;
 486   1              Data[1] = Y_INC;
 487   1              Data[2] = OSD_ADDR_MSB_90;
 488   1      
 489   1              Data[6] = 0;
 490   1      
 491   1              for (row = 0; row < length; row++)
 492   1              {
 493   2                      Data[3] = (unsigned char)((((usStart_Addr + col + row + 5) >> 8 ) & 0x0f ) | 0x50);
 494   2                      Data[4] = (unsigned char)( (usStart_Addr + col + row + 5) & 0x00ff);
 495   2      
 496   2                      if( row == 0 || row == (length-1) )
 497   2                      {
 498   3                              if( bound )
 499   3                              {
 500   4                                      if( bound >= (range*3) )
 501   4                                      {
 502   5                                              Data[5] = (row==0) ? 0x13 : 0x1e;
 503   5                                              bound = bound - range*3;
 504   5                                      }
 505   4                                      else
 506   4                                      {
 507   5                                      color   = (bound << 4) / (range*3);
 508   5                                              bound = 0;
 509   5              
 510   5                                              if (4 > color)
 511   5                                                      Data[5] = (row==0) ? 0x10 : 0x1b;       
 512   5                                              else if (8 > color)
 513   5                                                      Data[5] = (row==0) ? 0x11 : 0x1c;
 514   5                                              else if (12 > color)
 515   5                                                      Data[5] = (row==0) ? 0x12 : 0x1d;
 516   5                                              else
 517   5                                                      Data[5] = (row==0) ? 0x13 : 0x1e;
 518   5                                      }
 519   4                              }
 520   3                              else
 521   3                              {
 522   4                                      Data[5] = (row==0) ? 0x10 : 0x1b;       
 523   4                              }
 524   3                      }
 525   2                      else
 526   2                      {
 527   3                              if( bound )
 528   3                              {
 529   4                                      if( bound >= (range*6) )
 530   4                                      {
 531   5                                              Data[5] = 0x1a;
 532   5                                              bound = bound - range*6;
 533   5                                      }
 534   4                                      else
 535   4                                      {
 536   5                                              color   = (bound << 4) / (range*6);
C51 COMPILER V7.06   LCD_OSD                                                               11/21/2005 13:47:29 PAGE 10  

 537   5                                              bound = 0;
 538   5              
 539   5                                              if (1 > color)
 540   5                                                      Data[5] = 0x14;
 541   5                                              else if (4 > color)
 542   5                                                      Data[5] = 0x15;
 543   5                                              else if (6 > color)
 544   5                                                      Data[5] = 0x16;
 545   5                                              else if (9 > color)
 546   5                                                      Data[5] = 0x17;
 547   5                                              else if (11 > color)
 548   5                                                      Data[5] = 0x18;
 549   5                                              else if (14 > color)
 550   5                                                      Data[5] = 0x19;
 551   5                                              else
 552   5                                                      Data[5] = 0x1a;
 553   5                                      }
 554   4                              }
 555   3                              else
 556   3                              {
 557   4                                      Data[5] = 0x14;
 558   4                              }
 559   3                      
 560   3                      }
 561   2      
 562   2                      RTDWrite(Data);
 563   2                      
 564   2              }
 565   1      
 566   1              range   = value / 10;
 567   1              row             = value - (range * 10); // x1
 568   1              color   = range / 10;                   // x100
 569   1              range   = range - (color * 10); // x10
 570   1      
 571   1              row             = row + 0x01;
 572   1              range   = (range || color) ? range + 0x01 : 0x00;
 573   1              color   = color ? color + 0x01 : 0x00;
 574   1      
 575   1              Data[0] = 5;
 576   1              Data[1] = Y_INC;
 577   1              Data[2] = OSD_ADDR_MSB_90;
 578   1              Data[3] = (unsigned char)((((usStart_Addr + col) >>8 ) & 0x0f ) | 0x50);
 579   1              Data[4] = (unsigned char)( (usStart_Addr + col ) & 0x00ff);
 580   1              Data[5] = 0;
 581   1              RTDWrite(Data);
 582   1      
 583   1              Data[0] = 6;
 584   1              Data[1] = N_INC;
 585   1              Data[2] = OSD_DATA_92;
 586   1              Data[3] = color;                // Number x100
 587   1              Data[4] = range;                // Number x10
 588   1              Data[5] = row;          // Number x1
 589   1              Data[6] = 0;
 590   1              RTDWrite(Data);
 591   1      
 592   1      }
 593          
 594          
 595          void Init_Page(unsigned char index)
 596          {
 597   1              index = index;
 598   1              OSD_Position(OSD_ENABLE);
C51 COMPILER V7.06   LCD_OSD                                                               11/21/2005 13:47:29 PAGE 11  

 599   1              OSD_Clear(5, 11, 15, 1);        //Need to be modified case by case.
 600   1              if( ucOSD_Page_Index == 1)
 601   1                      RTDOSDW(OSD_Window_Setting);
 602   1      }
 603          
 604          void Show_Osd_Page(unsigned char Page_Num,unsigned char* Page_Attr,unsigned char OSD_Table_Num)
 605          {
 606   1              Init_Page(Page_Num);
 607   1              RTDOSDW(Page_All_Atb);
 608   1              RTDOSDW(OSD_PAGE_All_TABLE[0][stGUD1.FUNCTION & 0x07]);
*** WARNING C214 IN LINE 608 OF CODE\LCD_OSD.C: 'Argument': conversion: non-pointer to pointer
 609   1              RTDOSDW(Page_Attr);
 610   1              RTDOSDW(OSD_PAGE_TABLE[OSD_Table_Num][stGUD1.FUNCTION & 0x07]);
*** WARNING C214 IN LINE 610 OF CODE\LCD_OSD.C: 'Argument': conversion: non-pointer to pointer
 611   1              Show_Mode();
 612   1      }
 613          
 614          void OSD_Clear(unsigned char row_start, unsigned char height, unsigned char col_start, unsigned char width
             -)
 615          {
 616   1              width = width;
 617   1              if (height)
 618   1              {
 619   2                      do
 620   2                      {
 621   3                              OSD_Line(row_start, col_start, Row_Info[0][row_start+1], 0x00, 3);
 622   3                              //OSD_Line(row_start, col_start, width, 0x00, 3);
 623   3                              row_start++;
 624   3                      }
 625   2                      while (--height);
 626   2              }
 627   1      }
 628          
 629          void Bright_Contrast_Adjust(unsigned char* variable,unsigned char Key)
 630          {
 631   1      //      if (NOTIFY_RIGHT_KEY == Key)
 632   1          if (NOTIFY_LEFT_KEY == Key)
 633   1              {
 634   2                      if (100 <= *variable)
 635   2                              return;
 636   2       
 637   2                      if (KEY_TURBO_ENABLE > ucKey_Issued)
 638   2                              *variable   = 100 > *variable ? *variable + 1 : 100;
 639   2                      else
 640   2                              *variable   = 99 > *variable ? *variable + 2 : 100;
 641   2              }
 642   1              else
 643   1              {
 644   2                      if (0 == *variable)
 645   2                              return;
 646   2      
 647   2                      if (KEY_TURBO_ENABLE > ucKey_Issued)
 648   2                              *variable   = 0 < *variable ? *variable - 1 : 0;
 649   2                      else
 650   2                              *variable   = 1 < *variable ? *variable - 2 : 0;
 651   2              }
 652   1      }
 653          
 654          void Osd_Change_Item(unsigned char Pess_Key,unsigned char Item_Num)
 655          {
 656   1              if (ucOSD_Item_Index0)
 657   1              {
C51 COMPILER V7.06   LCD_OSD                                                               11/21/2005 13:47:29 PAGE 12  

 658   2                      // Select and highlight the next/previous item
 659   2                      //OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
 660   2                      //      , 0, 0, 14, 251, 0, 1, 0);
 661   2                      if (NOTIFY_RIGHT_KEY == Pess_Key)
 662   2                              ucOSD_Item_Index0   = (Item_Num == ucOSD_Item_Index0) ? 1 : (ucOSD_Item_Index0 + 1);
 663   2                      else
 664   2                              ucOSD_Item_Index0   = (1 == ucOSD_Item_Index0) ? Item_Num : (ucOSD_Item_Index0 - 1);
 665   2      
 666   2                      // Move window 6
 667   2                      OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
 668   2                              , 1, 1, 14, 251, 0, 1, 25);
 669   2              }
 670   1              else
 671   1              {
 672   2                      // Change to next/previous main page
 673   2                      //OSD_Window( 5, 150, 282, (54 + (ucOSD_Page_Index-1)*(29+4)), (84 + (ucOSD_Page_Index-1)*(29+4))
 674   2                      //      , 0, 0, 14, 251, 0, 1, 0);
 675   2                      if (NOTIFY_RIGHT_KEY == Pess_Key)
 676   2                              ucOSD_Page_Index    = GetNextPageIdx(ucOSD_Page_Index);
 677   2                      else
 678   2                              ucOSD_Page_Index    = GetPrevPageIdx(ucOSD_Page_Index);
 679   2              } 
 680   1      }

⌨️ 快捷键说明

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