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

📄 lcdlin.c

📁 ucgui的3.98版本的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                             for using the routine.

----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
none
----------------------------------------------------------------------
Open issues
----------------------------------------------------------------------
None
---------------------------END-OF-HEADER------------------------------
*/

#include <stddef.h>           /* needed for definition of NULL */
#include "LCD_Private.h"      /* private modul definitions & config */
#include "GUI_Private.h"
#include "GUIDebug.h"


#if (LCD_CONTROLLER / 100 == 13) \
      && (!defined(WIN32) | defined(LCD_SIMCONTROLLER))

#if defined(WIN32) && (LCD_CONTROLLER == 1301)
  #include "LCDSIM.h"
#endif

#if defined (__WATCOMC__) && (LCD_CONTROLLER == 1302)
  #include <conio.h>
  #include <i86.h>
#endif

/*
        *********************************************************
        *                                                       *
        *           Compiler specific settings                  *
        *                                                       *
        *********************************************************

*/
#ifdef WIN32   /* Avoid warnings in MS-compiler */
  #pragma warning(disable : 4244)  /* warning C4244: '=' : conversion from 'long ' to 'unsigned char ', possible loss of data */
  #pragma warning(disable : 4761)  /* warning C4761: integral size mismatch in argument; conversion supplied */
#endif

/*
*********************************************************
*
*           Controller renumbering
*
*********************************************************

  EPSON decided to rename all of their controllers. In order to
  be able to work with old and new numbers, we simply map the old ones
  to the new ones.
*/
#if LCD_CONTROLLER == 1386
  #undef LCD_CONTROLLER
  #define LCD_CONTROLLER 13806
#endif


/*
        *********************************************************
        *                                                       *
        *           Defaults for configuration                  *
        *                                                       *
        *********************************************************

*/

/* Switch for support of multiple pages.
 Only available with certain LCD-controllers */
#ifndef   LCD_SUPPORT_PAGING
  #define LCD_SUPPORT_PAGING            (0)
#endif

#ifndef   LCD_NUM_CONTROLLERS
  #define LCD_NUM_CONTROLLERS           (1)
#endif

#ifndef   LCD_BUSWIDTH
  #define LCD_BUSWIDTH                  (16)
#endif

#ifndef   LCD_OPTIMIZE
  #define LCD_OPTIMIZE                (1)
#endif

#if (LCD_CONTROLLER == 1356) || (LCD_CONTROLLER == 13806) || (LCD_CONTROLLER == 1304)
  #ifndef LCD_USE_BITBLT
    #if ((LCD_BITSPERPIXEL == 16) || (LCD_BITSPERPIXEL == 8 )) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY  == 0)
      #define LCD_USE_BITBLT            (1)
    #else
      #define LCD_USE_BITBLT            (0)
    #endif
  #else
    #if (LCD_MIRROR_Y)
      #error BITBLT engine does not support LCD_MIRROR_Y = 1!
    #endif
    #if (LCD_SWAP_XY)
      #error BITBLT engine does not support LCD_SWAP_XY = 1!
    #endif
  #endif
#else
  #define LCD_USE_BITBLT                (0)
#endif

#ifndef   LCD_ENABLE_REG_ACCESS
  #define LCD_ENABLE_REG_ACCESS()
#endif

#ifndef   LCD_ENABLE_MEM_ACCESS
  #define LCD_ENABLE_MEM_ACCESS()
#endif

#ifndef   STATIC
  #define STATIC static
#endif

#ifndef   LCD_DISPLAY_INDEX
  #define LCD_DISPLAY_INDEX 0
#endif

#ifndef   LCD_COPY_MEM16_THRESHOLD
  #define LCD_COPY_MEM16_THRESHOLD 50
#endif

#ifndef   LCD_CNF4
  #define LCD_CNF4 0
#endif

#ifndef   LCD_SET_ORG
  #define LCD_SET_ORG(x, y) GUI_USE_PARA(x); GUI_USE_PARA(y)
#endif


/*********************************************************************
*
*       Rename SwapBytes
*
* SwapBytes has been changed from static to a non static function,
* because it can not be evaluated easily if the routine will be used
* or not. To avoid compiler warnings it has been changed to a
* non static function. (JE)
*/
#if   (LCD_DISPLAY_INDEX == 0)
  #define SwapBytes SwapBytes_0
#elif (LCD_DISPLAY_INDEX == 1)
  #define SwapBytes SwapBytes_1
#elif (LCD_DISPLAY_INDEX == 2)
  #define SwapBytes SwapBytes_2
#elif (LCD_DISPLAY_INDEX == 3)
  #define SwapBytes SwapBytes_3
#elif (LCD_DISPLAY_INDEX == 4)
  #define SwapBytes SwapBytes_4
#else
  LCD_DISPLAY_INDEX > 4 not supported!
#endif

/*
        *********************************************************
        *                                                       *
        *           Defines for configuration simulation        *
        *                                                       *
        *********************************************************

*/
#if defined(WIN32)
#if !defined(USE_PC_HARDWARE)

#if   LCD_DISPLAY_INDEX == 1
  #define SIM_WriteMem8  SIM_WriteMem8_1
  #define SIM_WriteReg8  SIM_WriteReg8_1
  #define SIM_ReadMem8   SIM_ReadMem8_1
  #define SIM_ReadReg8   SIM_ReadReg8_1
  #define SIM_WriteMem16 SIM_WriteMem16_1
  #define SIM_WriteReg16 SIM_WriteReg16_1
  #define SIM_ReadMem16  SIM_ReadMem16_1
  #define SIM_ReadReg16  SIM_ReadReg16_1
#elif LCD_DISPLAY_INDEX == 2
  #define SIM_WriteMem8  SIM_WriteMem8_2
  #define SIM_WriteReg8  SIM_WriteReg8_2
  #define SIM_ReadMem8   SIM_ReadMem8_2
  #define SIM_ReadReg8   SIM_ReadReg8_2
  #define SIM_WriteMem16 SIM_WriteMem16_2
  #define SIM_WriteReg16 SIM_WriteReg16_2
  #define SIM_ReadMem16  SIM_ReadMem16_2
  #define SIM_ReadReg16  SIM_ReadReg16_2
#elif LCD_DISPLAY_INDEX == 3
  #define SIM_WriteMem8  SIM_WriteMem8_3
  #define SIM_WriteReg8  SIM_WriteReg8_3
  #define SIM_ReadMem8   SIM_ReadMem8_3
  #define SIM_ReadReg8   SIM_ReadReg8_3
  #define SIM_WriteMem16 SIM_WriteMem16_3
  #define SIM_WriteReg16 SIM_WriteReg16_3
  #define SIM_ReadMem16  SIM_ReadMem16_3
  #define SIM_ReadReg16  SIM_ReadReg16_3
#elif LCD_DISPLAY_INDEX == 4
  #define SIM_WriteMem8  SIM_WriteMem8_4
  #define SIM_WriteReg8  SIM_WriteReg8_4
  #define SIM_ReadMem8   SIM_ReadMem8_4
  #define SIM_ReadReg8   SIM_ReadReg8_4
  #define SIM_WriteMem16 SIM_WriteMem16_4
  #define SIM_WriteReg16 SIM_WriteReg16_4
  #define SIM_ReadMem16  SIM_ReadMem16_4
  #define SIM_ReadReg16  SIM_ReadReg16_4
#endif

  void SIM_WriteMem8(unsigned int Off, int Data);
  void SIM_WriteReg8(unsigned int Off, int Data);
  int  SIM_ReadMem8(unsigned int Off);
  int  SIM_ReadReg8(unsigned int Off);
  void SIM_WriteMem16(unsigned int Off, int Data);
  void SIM_WriteReg16(unsigned int Off, int Data);
  int  SIM_ReadMem16(unsigned int Off);
  int  SIM_ReadReg16(unsigned int Off);

  #undef  LCD_READ_MEM
  #undef  LCD_READ_REG
  #undef  LCD_WRITE_MEM
  #undef  LCD_WRITE_REG
  #undef  LCD_OFF
  #undef  LCD_ON
  #undef  LCD_ENABLE_REG_ACCESS
  #undef  LCD_ENABLE_MEM_ACCESS
  #undef  LCD_SET_ORG
  #define LCD_ENABLE_REG_ACCESS()
  #define LCD_ENABLE_MEM_ACCESS()
  #define LCD_OFF()
  #define LCD_ON()
  #define LCD_SET_ORG(x, y) GUI_USE_PARA(x); GUI_USE_PARA(y)

  #if LCD_BUSWIDTH==8
    #define LCD_READ_MEM(Off)       SIM_ReadMem8(Off)
    #define LCD_WRITE_MEM(Off,Data) SIM_WriteMem8(Off, Data)
    #define LCD_READ_REG(Off)       SIM_ReadReg8(Off)
    #define LCD_WRITE_REG(Off,Data) SIM_WriteReg8(Off, Data)
  #elif LCD_BUSWIDTH==16
    #define LCD_READ_MEM(Off)       SIM_ReadMem16(Off)
    #define LCD_WRITE_MEM(Off,Data) SIM_WriteMem16(Off, Data)
    #define LCD_READ_REG(Off)       SIM_ReadReg16(Off)
    #define LCD_WRITE_REG(Off,Data) SIM_WriteReg16(Off, Data)
  #endif
#elif defined(USE_PC_HARDWARE)
  void PC_WriteMem8(unsigned int Off, int Data);
  void PC_WriteReg8(unsigned int Off, int Data);
  int  PC_ReadMem8(unsigned int Off);
  int  PC_ReadReg8(unsigned int Off);
  void PC_WriteMem16(unsigned int Off, int Data);
  void PC_WriteReg16(unsigned int Off, int Data);
  int  PC_ReadMem16(unsigned int Off);
  int  PC_ReadReg16(unsigned int Off);

  #undef  LCD_READ_MEM
  #undef  LCD_READ_REG
  #undef  LCD_WRITE_MEM
  #undef  LCD_WRITE_REG
  #if LCD_BUSWIDTH==8
    #define LCD_READ_MEM(Off)       PC_ReadMem8(Off)
    #define LCD_WRITE_MEM(Off,Data) PC_WriteMem8(Off, Data)
    #define LCD_READ_REG(Off)       PC_ReadReg8(Off)
    #define LCD_WRITE_REG(Off,Data) PC_WriteReg8(Off, Data)
  #else
    #define LCD_READ_MEM(Off)       PC_ReadMem16(Off)
    #define LCD_WRITE_MEM(Off,Data) PC_WriteMem16(Off, Data)
    #define LCD_READ_REG(Off)       PC_ReadReg16(Off)
    #define LCD_WRITE_REG(Off,Data) PC_WriteReg16(Off, Data)
  #endif
#else
  #error Should not happen ...
#endif
#endif

/********************************************************
*
*           Remap Hardware macros
*
*********************************************************
*/

#ifndef WIN32
  #if GUI_NUM_LAYERS > 1 /* Use single display macros */
    #if LCD_DISPLAY_INDEX == 0       /* 1. display in a multi-display configuration */
      #define LCD_READ_MEM(Off)       LCD_READ_MEM_0(Off)
      #define LCD_WRITE_MEM(Off,Data) LCD_WRITE_MEM_0(Off,Data)
      #define LCD_READ_REG(Off)       LCD_READ_REG_0(Off)
      #define LCD_WRITE_REG(Off,Data) LCD_WRITE_REG_0(Off,Data)
    #elif LCD_DISPLAY_INDEX == 1     /* 2. display in a multi-display configuration */
      #define LCD_READ_MEM(Off)       LCD_READ_MEM_1(Off)
      #define LCD_WRITE_MEM(Off,Data) LCD_WRITE_MEM_1(Off,Data)
      #define LCD_READ_REG(Off)       LCD_READ_REG_1(Off)
      #define LCD_WRITE_REG(Off,Data) LCD_WRITE_REG_1(Off,Data)
    #elif LCD_DISPLAY_INDEX == 2     /* 3. display in a multi-display configuration */
      #define LCD_READ_MEM(Off)       LCD_READ_MEM_2(Off)
      #define LCD_WRITE_MEM(Off,Data) LCD_WRITE_MEM_2(Off,Data)
      #define LCD_READ_REG(Off)       LCD_READ_REG_2(Off)
      #define LCD_WRITE_REG(Off,Data) LCD_WRITE_REG_2(Off,Data)
    #elif LCD_DISPLAY_INDEX == 3     /* 4. display in a multi-display configuration */
      #define LCD_READ_MEM(Off)       LCD_READ_MEM_3(Off)
      #define LCD_WRITE_MEM(Off,Data) LCD_WRITE_MEM_3(Off,Data)
      #define LCD_READ_REG(Off)       LCD_READ_REG_3(Off)
      #define LCD_WRITE_REG(Off,Data) LCD_WRITE_REG_3(Off,Data)
    #elif LCD_DISPLAY_INDEX == 4     /* 5. display in a multi-display configuration */
      #define LCD_READ_MEM(Off)       LCD_READ_MEM_4(Off)
      #define LCD_WRITE_MEM(Off,Data) LCD_WRITE_MEM_4(Off,Data)
      #define LCD_READ_REG(Off)       LCD_READ_REG_4(Off)
      #define LCD_WRITE_REG(Off,Data) LCD_WRITE_REG_4(Off,Data)
    #else
      #error Not supported yet!
    #endif
  #endif
#endif

/*
        *********************************************************
        *                                                       *
        *           Macro calculations                          *
        *                                                       *
        *********************************************************
*/

/* To make life easier, assign physical x/y size */

#if !LCD_SWAP_XY
  #define LCD_XSIZE_P LCD_XSIZE
  #define LCD_YSIZE_P LCD_YSIZE
  #define LCD_VXSIZE_P LCD_VXSIZE
  #define LCD_VYSIZE_P LCD_VYSIZE

⌨️ 快捷键说明

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