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

📄 lcdlin.c

📁 ucgui的3.98版本的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/*
*********************************************************************************************************
*                                             uC/GUI V3.98
*                        Universal graphic software for embedded applications
*
*                       (c) Copyright 2002, Micrium Inc., Weston, FL
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
*              礐/GUI is protected by international copyright laws. Knowledge of the
*              source code may not be used to write a similar product. This file may
*              only be used in accordance with a license and should not be redistributed
*              in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File        : LCDLin.C
Purpose     : Driver for LCDs using a single Seiko Epson SED13XX controllers
              This version supports a single LCD controller
              in (almost) any hardware configuration. The following
              derivatives are currently supported:
              SED1352
              SED1354
              SED1356     (With/Without BitBlt engine support)
              SED1374
              SED1375
              SED13806
              Other Epson LCD controllers are very similar and could
              be covered by this driver as well, but have not been
              tested.
----------------------------------------------------------------------
Version-Date---Author-Explanation
----------------------------------------------------------------------
3.97    050810 JE     a) LCD_L0_ReadRect() optimized for LCD_MIRROR_X = 1, LCD_MIRROR_Y = 1
3.95d   050704 JE     a) LCD_L0_ReadRect() added
3.92    041021 JE     a) Optimized version of for LCD_L0_DrawVLine 2bpp, 16bit bus, LCD_SWAP_XY
                         and LCD_MIRROR_X now works with and without LCD_SWAP_BYTE_ORDER
3.90a   040824 JE     a) Optimization added for 2bpp, 16bit bus, LCD_SWAP_XY and LCD_MIRROR_X:
                         LCD_L0_DrawVLine and DrawBitLine1BPP_Swap
3.81    040510 JE     a) Support for bitBLT engine of S1D13A03-S1D13A05 added
3.76    040128 JE     a) Use of macros LCD_COPY_MEM16_THRESHOLD and LCD_COPY_MEM16 added
3.72    031209 JE     a) LUT initialisation for S1D13704 changed
                      b) No call of SwapBytes if buswidth = 8
3.70e   031103 JE     a) _Swap renamed to SwapBytes and changed from static to a non static
                         function to avoid compiler warnings.
3.70b   031103 SR/RS  a) Support for PC hardware, mode X (320 * 200) added. Controller Id: 1302
                         Tested with Watcom compiler
3.70a   031030 JE     a) Optimization added: DrawBitLine1BPP for 16 bit bus and 1bpp mode
3.54a   030617 JE     a) Driver renamed LCD13XX.c -> LCDLin.c
3.48    030504 RS     a) BITBLT_SET_DESTINATION modified to always use U32 in computation.
                         This is necessary in cases where a 16 bit CPU is used with a
                         display with more than 64k pixels if LCD_USE_32BIT_OFF not used.
3.00w   030422 JE     a) Capricorn 2 support in LCD_L0_SetLUTEntry changed
3.00v   030401 JE     a) Support for Capricorn 2 added
3.00U   030311 JE     a) Optimization added for 8bpp, 16bit bus, LCD_MIRROR_X:
                         DrawBitLine1BPP, DrawBitLine8BPP
3.00t   030123 JE     a) Superfluous variable from DrawBitLine1BPP removed
3.00s   020724 JE     a) LCD_L0_Init changed
3.00r   020708 JE     a) Changed to work with 2bpp DDP bitmaps
3.00q   020705 JE     a) Changed to work with 4bpp DDP bitmaps
3.00p   020705 JE     a) Optimizations changed: LCD_L0_DrawVLine
3.00o   020703 JE     a) Optimizations changed: LCD_L0_DrawVLine
3.00n   020624 JE     a) Optimizations added for 4bpp, 16bit bus, LCD_SWAPXY:
                         LCD_L0_DrawVLine, DrawBitLine1BPP_Swap, DrawBitLine4BPP_Swap
3.00m   020506 JE     a) LCD_FillRectBB changed to work with large
                         rectangles (width > 1024, heigth > 1024)
3.00l   020327 JE     a) DrawBitLine1BPP for 16bit bus, 4bpp:
                         Compiler problem solved
3.00k   020319 JE     a) DrawBitLine1BPP for 16bit bus, 4bpp optimized
3.00j   020222 JE     a) Optimized version DrawBitLine16BPP added
                      b) Macro mapping LCD_SWAP_BYTE_ORDER changed
3.00i   020222 JE     a) DrawBitLine1BPP_Swap, 16bit bus, 4bpp changed
                      b) LCD_L0_DrawVLine, 16bit bus, 4bpp changed
3.00h   020221 JE     a) LCD_USE_32BIT_PNT added to support 32Bit offsets
                      b) XY2OFF changed to work with 32Bit offsets
                      c) BITBLT_SET_DESTINATION changed to work with 32Bit offsets
3.00g   020221 JE     a) LCD_MSB_SHIFT & LCD_LSB_SHIFT removed
3.00f   020221 JE     a) Remaining LCD_READ_MEM removed
                      b) WRITE_MEM changed for swapped mode
3.00e   020218 JE     a) Use of READ_MEM, WRITE_MEM instead of
                         LCD_READ_MEM, LCD_WRITE_MEM
3.00d9  020129 JE     a) DrawBitLine4BPP: Non optimized version used if
                         defined LCD_LUT_SEG
                      b) LCD_L0_DrawVLine, LCD_L0_FillRect:
                         BitBLT-versions not used if
                         defined LCD_LUT_SEG or LCD_LUT_COM
                      c) LCD_DrawBitmap1BPPBB: Not called if
                         defined LCD_LUT_SEG or LCD_LUT_COM
                      d) BitBLT support not used if
                         defined LCD_LUT_SEG or LCD_LUT_COM
3.00d8  020129 JE     a) Bugfix: LCD_LUT_COM with 'space' now works
3.00d7  020124 JE     a) DrawBitLine1BPP, 16bit bus, 1bpp optimized
3.00df  020123 JE     a) LCD_L0_DrawHLine, 16bit bus, 1bpp,
                         LCD_SWAP_BYTE_ORDER added
3.00de  020123 JE     a) LCD_L0_DrawHLine, 16bit bus, 1bpp optimized
3.00d4  020104 JE     a) DrawBitLine8BPP, 16Bit bus, 4bpp optimized
3.00d3  011204 JE     a) BitBLT support changed
3.00d2  011129 RS     a) 4bpp opt. enabled also with LCD_LUT_COM
3.00d1  011115 JE     a) Some casts inserted to avoid warnings
3.00d   011109 JE     a) BitBLT support changed
3.00c9  011107 JE     a) LCD_L0_DrawHLine 16bpp, 16bit changed
                      b) BPP mapping 15->16bpp removed to keep sure
                         LCD_NUMCOLORS works right
3.00c8  011016 JE     a) Optimized DrawBitLine4BPP for 16 bit bus, 4 bpp mode
                         now supports LCD_SWAP_BYTE_ORDER
3.00c7  011016 RS     a) DrawBitLine4BPP for 16 bit bus, 4 bpp mode changed
3.00c6  011016 JE     a) Optimized version DrawBitLine4BPP for
                         16 bit bus, 4 bpp mode added
3.00c5  010926 JE     a) Dummy read from BITBLT memory area inserted
                         to shutdown BITBLT-engine after operation
                         is finished
3.00c4  010925 JE     a) #define SETNEXTPIXEL(c) SETNEXTPIXEL(c) deleted
                      b) LCD_L0_DrawVLine for 8bit BYW mode changed
                      c) GetPixelIndex changed
3.00c3  010925 JE     a) Bugfixes: 8bit bus, LCD_MIRROR_Y, LCD_L0_Init
3.00c2  010925 JE     a) Bugfixes: 16bit bus, LCD_MIRROR_Y
3.00c1  010914 RS     a) LCDInt.h always included
3.00c   010905 RS     a) DrawBitLine16BPP taken out via preprocessor
                         for non 16 bpp modes
3.00b3  010824 JE     a) DrawBitLine16BPP ok
3.00b2  010824 JE     a) DrawBitLine16BPP (no opt) added, not tested
3.00b1  010820 JE     a) Bugfixes for LCD_MIRROR_Y, 16 bit bus, 4 bpp
3.00b   010820 RS     a) Changes for 16bpp mode and non-EPSON controllers
3.00a4  010723 JE     a) Optimization added for LCD_L0_DrawVLine for
                         16 bit bus, 4 bpp, SWAP_XY, MIRROR_Y
3.00a3  010718 JE     a) Bugfix in LCD_L0_GetPixelIndex, LCD_SWAP_XY,
                         LCD_MIRROR_X and LCD_MIRROR_Y was not
                         supported
                      b) Bugfix: DrawBitLine8BPP, DrawBitLine4BPP:
                         LCD_SWAP_XY was not supported
3.00a2  010718 JE     a) Bugfix in LCD_L0_GetPixelIndex, optimized
                         version for LCD_BUSWIDTH == 8
3.00a1  010515 RS     a) SUperfluos compiler warnings eliminated
3.00a   010509 RS     a) LUT init for 1374 fixed
3.00    010430 RS     a) Optimizaion for 4bpp bitmaps in regular 8bpp
                         mode
2.02    010402 RS     a) LCD_GetDevCaps removed from driver
                         (now LCD.c)
2.00f   001030 RS     a) Optimization for 8bpp bitmaps without palette
                         in 16bit bus mode now also used if
                         COM LUT is being used -> mayor acceleration
                         if this configuration is used (VDO/BMW)
2.00e   001019 RS     a) Optimization for 8bpp bitmaps without palette
                         in 16bit bus mode now also used if
                         COM LUT is being used -> mayor acceleration
                         if this configuration is used (VDO/BMW)
2.00d   001017 RS     a) Video memory init removed from this driver
                         (normally done by LCD_Init in LCD.c)
2.00c   001013 RS     a) 8bbp dd-bitmaps in 16bit bus, 4bpp configuration
                         accelerated (for use with memory devices)
2.00b   000925 RS     a) Source cleaned up (no effect on code)
2.00a   000911 RS     a) LCD_DATAADR introduced
2.00    000525 RS     a) New interface supported.
                      b) Support for LCD_LUT_COM added
1.40a   000524 RS/JE  a) 1 BPP bitmap draw fix: Misbehaved if
                         Backgroundcolor == Color
1.40    000516 RS     a) LCD_GetColorIndex implemented
                      b) Support for simulation added
1.30l   000505 RS/JE  a) 8 bit DDB fix
1.30k   000428 JE     a) Optimized version of DrawBitLine8BPP (16 bit)
                         now draws transparent bitmaps
1.30j   000426 RS     a) Support for V1.30 interface
						             1) LCD_SetColorIndex, LCD_SetBkColorIndex
						                added
                         2) LCD_InitLUT,LCD_SetColor, LCD_SetBkColor
                            removed (now in LCD_COLOR)
                      b) Cleanup
1.30i   000416 RS     a) Small cleanups
1.30h   000411 RS     a) Optimized DrawHLine 8bpp, 8 bit bus
1.30g   000411 JE     a) Now all textmodes supported in
                         DrawBitLine1BPP for 1bpp mode
1.30f   000411 JE     a) Support for 1bpp mode added to LCD_L0_GetPixelIndex
                      b) Clipping in DrawBitLine1BPP for 1bpp mode changed
1.30e   000408 RS     a) 1BPP mode, 8bit bus accelerated
1.30d   000408 RS     a) LCD_SetNormalDispMode, LCD_SetReverseDispMode
                         eliminated
1.30c   000406 JE     a) Code generation: 133x controller excluded
1.30b   000404 RS     a) LCD_DrawHLine accelerated for 1BPP/8bitbus
1.30a   000403 RS     a) Support for 1bpp mode added with 16 bit bus
1.30    000402 RS     a) Interface changed: LCD_GetDevCaps
1.14j   000401 RS     a) Offset type changed to unsigned
1.14i   000327 RS     a) LCD_SetPaletteEntry renamed LCD_L0_SetLUTEntry
                         LCD_InitPalette renamed LCD_InitLUT
1.14h   000324 JE     a) DrawBitLine8BPP_DDP & DrawBitLine8BPP merged
1.14g   000323 RS     a) offets types changed from int to
                         unsigned int in order for 16-bit CPUs
                         to cope with bigger vmem areas
                      b) COLOR2INDEX macro created (simplifying
                         driver source)
                      c) LCD_SetBkColorIndex, LCD_SetColorIndex
                         created
1.14f   000322 RS     a) 1BPP mde supported
1.14e   000321 RS     a) 4BPP mode, 8 bit bus accelerated
1.14d	  000320 RS     a) Support for 1375 palette init added
1.14c   000306 JE     a) Support for SED13806 added
1.14b   991213 JE     a) LCD_DrawBitMap changed: If LCD_MIRROR_X==1 the
                         standard routine DrawBitLine1BPP has to be used
1.14a   991211 RS     a) 8-bit mode Swapped, y-mirror accelerated
                         (using SETNEXTPIXEL)
1.14    991206 RS     a) SWAP_XY modes supported, 8-bit bus modes
                         accelerated
1.12b   991201 RS     a) XY2OFF macro clean up: parameterorder changed
1.12a   991129 RS     a) Additional defaults for config switches defined
                         in order to keep config files simple
1.12    991128 RS     a) PIXELCOLOR definition moved to top in order to
                         avoid compiler warnings
                      b) Optimizations for 8 bit modes added
1.10.25 991113 RS     a) Comments brushed up
                      b) Cleanup in LCD_DrawBitmap1BPPBB
                      c) LCD_DrawBitLine1BPPBB eliminated, as its
                         functionality has been completely replaced
                         by LCD_DrawBitmap1BPPBB
                      d) Default for LCD_OPTIMIZE set to (1) for all
                         configurations
                      e) LCD_DrawBitmap1BPPBB would not necessarily
                         work correctly if the drawing area had been
                         reduced because of clipping to less than one
                         line. Fixed.
1.10.24 991022 JE     a) Support for LCD_COMTRANS & LCD_SEGTRANS completed
                      b) LUT init for SED1356 changed, reverse mode supported
1.10.23 991021 RS     a) Illegal optimization were used with LCD_COMTRANS
                         Fixed.
1.10.22 991021 JE     a) BitBLT support for SED1356 accellerated,
                         drawing 1 bitmap instead of bitlines
                      b) LCD_TYPE_COMTRANS & LCD_TYPE_SEGTRANS (re)implemented
                      c) LCD_ENABLE_REG_ACCESS implemented to accellerate
                         BitBLT routines with register access
1.10.21 991020 JE     a) BitBLT support for SED1356 finished and cleand up
1.10.20 991019 JE/RS  a) LCD_SetPalette (re)implemented for 1354 controllers
1.10.19 991019 JE     a) SetBkColor/SetColor fix
                      b) LCD_DrawPixelAA added
1.10.18 991015 JE     a) BitBLT Support added for 8bpp and 15bpp color mode
1.10.17 991012 JE     a) LCD_DrawBitLine8BPP changed
1.10.16 991012 JE     a) LCD_DrawHLine changed
                      b) Color translation in 8bpp mode supported
1.10.15 991011 RS     a) LCD_DrawBitLine8BPP optimized for 16 bit bus, 8bpp
                      b) LCD_DrawHLine optimized for 16 bit bus, 8bpp
                      c) Color translation changed, PhysColors only used
                         when LCD_FIXEDPALETTE == 0
1.10.14 991011 JE     a) Optimizations in LCD_DrawHLine changed in 8 & 15b pp mode
1.10.13 991009 RS     a) LCD_DrawHLine cleaned up for easier readability
                      b) Support for 8 bit bus added
                      c) XY2OFF macro cleaned up, accelerated
                      d) Palettes reversed for all gray modes as default
                         (since most displays require current (or set bi ts)
                         in order to make a pixel dark
                      e) DrawBitLine2BPP: Bug with transparent bitmaps
                         fixed: The left 1-4 pixel were not drawn or not
                         drawn correctly
1.10.12 991008 JE     a) LCD_DrawHLine changed
                      b) renamed LCD_USE_OPT -> LCD_OPTIMIZE
                      c) LCD_LSB_SHIFT introduced in order to support
                         both big and little endian systems.
                      d) Result of XY2OFF changed from byte to word
1.10.11 991007 JE     a) Configuration switch LCD_USE_OPT included
                      b) X-clipping in DrawBitLine1BPP & DrawBitLine2BPP changed
                      c) LCD_DrawVLine changed, the last pixel of a line was not drawn
1.10.10 991007 JE     a) Support for clipping and XOR modes for 4bpp and 8bpp included
                      b) LCD_DrawVLine optimized
                      c) X-clipping in DrawBitLine8BPP changed
1.10.09 991005 JE     a) Support 4bpp and 8bpp included
                      b) Optimization for LCD_DrawHLine 8bpp and 4bpp
                      c) New LCD_SHIFT_DATA to shift data bits
                      d) Offset calculation in dependence of LCD_BUSWIDTH included
1.10.08 990928 RS     a) Optimization for LCD_DrawHLine
                      b) Various compile warnings eliminated
                      c) LCD_Color2Color15 renamed LCD_Color2Index15
1.10.07 990927 RS     a) Defaults for config switches added
                      b) LCD_SWAPXY --> LCD_SWAP_XY for compatibility
                      c) LCD_SetPalette eliminated
1.10.06 990924 JE/RS  a) BYTESPERLINE changed to work for a normal
                         system (BMW might require Config change)
1.10.05 990831 RS     a) Full support for transparent 16 color
                         bitmaps (bugfix)
1.10.04               Font support for true color
1.10.03
1.10.02 990713 RS     LCD_MEMSIZE calculation changed
1.10.01 990713 RS     Fix for Memsize in colormode
1.10    990711 RS     Support for Segment/Com Lookup tables added
1.00    990118 RS     First release.
---------------------------LIST OF CONFIG SWITCHES--------------------
The following is a list of additional configuration switches for this
driver. These switches might not be listed in the manual, because
the manual mainly covers the general config switches which are
supported by all drivers.
----------------------------------------------------------------------
define ----------------------Explanation------------------------------
LCD_SWAP_BYTE_ORDER          Activate if high low bytes are swapped
                             Default: 0
LCD_WRITE_MEM32(Off,Data32)  This macro accelerates display access
                             if defined by allowing the CPU to write
                             32 bits at a time to the controller.
                             (For 32 bits CPUs only and only if the
                             BUS interface unit can automatically
                             convert this to 2 16 bit accesses
LCD_OPTIMIZE                 Controls the use of optimized routines.
                             If 1, several (speed) optimizations are used.
                             Default: ON (1)
LCD_USE_BITBLT               This switch controls the use of optimized routines
                              with SED1356 bitblt engine.
                             If 1, the optimized routines with bitblt access are used.
                             The default value depends of LCD_BITSPERPIXEL: (4  ) -> 0, (8,15) -> 1
LCD_ENABLE_REG_ACCESS()
LCD_ENABLE_MEM_ACCESS()      In most systems (and with most LCD-controllers)
                             registers / memory can be accessed at
                             different addresses. However, in some
                             systems, it could be necessary to exec
                             code in order to be able to access the
                             registers or memory. This code should
                             then be placed in these macros (rather
                             than the actual access macros, which
                             would be slowed down)
LCD_DATAADR                  define adress if video memory can be treated
                             like regular memory
                             (will speed up driver)
LCD_USE_32BIT_OFF            required if a 16 bit CPU has to control more
                             video memory than can be handled with 16 bit offsets.
                             Forces 32 bit computations, which will make driver
                             bigger & slower.
LCD_COPY_MEM16(Dest, pSrc, NumItems) This macro defines a routine which is used
                             when displaying device dependend 8bpp bitmaps using a 16 bit bus.
                             It should copy 16 bit items and return 0 if successfull
                             and a value != 0 if it fails.
                             Parameter:
                             Dest     - Destination address
                             pSrc     - Void pointer to source data
                             NumItems - Number of 16 bit items to be copied
LCD_COPY_MEM16_THRESHOLD     Used to decide if the function defined by the macro
                             LCD_COPY_MEM16 should be used to copy the bitmap data.
                             It defines the minimum number of bytes to be copied

⌨️ 快捷键说明

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