8 changed files with 6503 additions and 0 deletions
@ -0,0 +1,715 @@ |
|||||
|
/**
|
||||
|
****************************************************************************** |
||||
|
* @file stm32h7xx_hal_dma2d.h |
||||
|
* @author MCD Application Team |
||||
|
* @brief Header file of DMA2D HAL module. |
||||
|
****************************************************************************** |
||||
|
* @attention |
||||
|
* |
||||
|
* Copyright (c) 2017 STMicroelectronics. |
||||
|
* All rights reserved. |
||||
|
* |
||||
|
* This software is licensed under terms that can be found in the LICENSE file |
||||
|
* in the root directory of this software component. |
||||
|
* If no LICENSE file comes with this software, it is provided AS-IS. |
||||
|
* |
||||
|
****************************************************************************** |
||||
|
*/ |
||||
|
|
||||
|
/* Define to prevent recursive inclusion -------------------------------------*/ |
||||
|
#ifndef STM32H7xx_HAL_DMA2D_H |
||||
|
#define STM32H7xx_HAL_DMA2D_H |
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
extern "C" { |
||||
|
#endif |
||||
|
|
||||
|
/* Includes ------------------------------------------------------------------*/ |
||||
|
#include "stm32h7xx_hal_def.h" |
||||
|
|
||||
|
/** @addtogroup STM32H7xx_HAL_Driver
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
#if defined (DMA2D) |
||||
|
|
||||
|
/** @addtogroup DMA2D DMA2D
|
||||
|
* @brief DMA2D HAL module driver |
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/* Exported types ------------------------------------------------------------*/ |
||||
|
/** @defgroup DMA2D_Exported_Types DMA2D Exported Types
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define MAX_DMA2D_LAYER 2U /*!< DMA2D maximum number of layers */ |
||||
|
|
||||
|
/**
|
||||
|
* @brief DMA2D CLUT Structure definition |
||||
|
*/ |
||||
|
typedef struct |
||||
|
{ |
||||
|
uint32_t *pCLUT; /*!< Configures the DMA2D CLUT memory address.*/ |
||||
|
|
||||
|
uint32_t CLUTColorMode; /*!< Configures the DMA2D CLUT color mode.
|
||||
|
This parameter can be one value of @ref DMA2D_CLUT_CM. */ |
||||
|
|
||||
|
uint32_t Size; /*!< Configures the DMA2D CLUT size.
|
||||
|
This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.*/ |
||||
|
} DMA2D_CLUTCfgTypeDef; |
||||
|
|
||||
|
/**
|
||||
|
* @brief DMA2D Init structure definition |
||||
|
*/ |
||||
|
typedef struct |
||||
|
{ |
||||
|
uint32_t Mode; /*!< Configures the DMA2D transfer mode.
|
||||
|
This parameter can be one value of @ref DMA2D_Mode. */ |
||||
|
|
||||
|
uint32_t ColorMode; /*!< Configures the color format of the output image.
|
||||
|
This parameter can be one value of @ref DMA2D_Output_Color_Mode. */ |
||||
|
|
||||
|
uint32_t OutputOffset; /*!< Specifies the Offset value.
|
||||
|
This parameter must be a number between |
||||
|
Min_Data = 0x0000 and Max_Data = 0x3FFF. */ |
||||
|
uint32_t AlphaInverted; /*!< Select regular or inverted alpha value for the output pixel format converter.
|
||||
|
This parameter can be one value of @ref DMA2D_Alpha_Inverted. */ |
||||
|
|
||||
|
uint32_t RedBlueSwap; /*!< Select regular mode (RGB or ARGB) or swap mode (BGR or ABGR)
|
||||
|
for the output pixel format converter. |
||||
|
This parameter can be one value of @ref DMA2D_RB_Swap. */ |
||||
|
|
||||
|
|
||||
|
uint32_t BytesSwap; /*!< Select byte regular mode or bytes swap mode (two by two).
|
||||
|
This parameter can be one value of @ref DMA2D_Bytes_Swap. */ |
||||
|
|
||||
|
uint32_t LineOffsetMode; /*!< Configures how is expressed the line offset for the foreground, background and output.
|
||||
|
This parameter can be one value of @ref DMA2D_Line_Offset_Mode. */ |
||||
|
|
||||
|
} DMA2D_InitTypeDef; |
||||
|
|
||||
|
|
||||
|
/**
|
||||
|
* @brief DMA2D Layer structure definition |
||||
|
*/ |
||||
|
typedef struct |
||||
|
{ |
||||
|
uint32_t InputOffset; /*!< Configures the DMA2D foreground or background offset.
|
||||
|
This parameter must be a number between |
||||
|
Min_Data = 0x0000 and Max_Data = 0x3FFF. */ |
||||
|
|
||||
|
uint32_t InputColorMode; /*!< Configures the DMA2D foreground or background color mode.
|
||||
|
This parameter can be one value of @ref DMA2D_Input_Color_Mode. */ |
||||
|
|
||||
|
uint32_t AlphaMode; /*!< Configures the DMA2D foreground or background alpha mode.
|
||||
|
This parameter can be one value of @ref DMA2D_Alpha_Mode. */ |
||||
|
|
||||
|
uint32_t InputAlpha; /*!< Specifies the DMA2D foreground or background alpha value and color value
|
||||
|
in case of A8 or A4 color mode. |
||||
|
This parameter must be a number between Min_Data = 0x00 |
||||
|
and Max_Data = 0xFF except for the color modes detailed below. |
||||
|
@note In case of A8 or A4 color mode (ARGB), |
||||
|
this parameter must be a number between |
||||
|
Min_Data = 0x00000000 and Max_Data = 0xFFFFFFFF where |
||||
|
- InputAlpha[24:31] is the alpha value ALPHA[0:7] |
||||
|
- InputAlpha[16:23] is the red value RED[0:7] |
||||
|
- InputAlpha[8:15] is the green value GREEN[0:7] |
||||
|
- InputAlpha[0:7] is the blue value BLUE[0:7]. */ |
||||
|
uint32_t AlphaInverted; /*!< Select regular or inverted alpha value.
|
||||
|
This parameter can be one value of @ref DMA2D_Alpha_Inverted. */ |
||||
|
|
||||
|
uint32_t RedBlueSwap; /*!< Select regular mode (RGB or ARGB) or swap mode (BGR or ABGR).
|
||||
|
This parameter can be one value of @ref DMA2D_RB_Swap. */ |
||||
|
|
||||
|
uint32_t ChromaSubSampling; /*!< Configure the chroma sub-sampling mode for the YCbCr color mode
|
||||
|
This parameter can be one value of @ref DMA2D_Chroma_Sub_Sampling */ |
||||
|
|
||||
|
} DMA2D_LayerCfgTypeDef; |
||||
|
|
||||
|
/**
|
||||
|
* @brief HAL DMA2D State structures definition |
||||
|
*/ |
||||
|
typedef enum |
||||
|
{ |
||||
|
HAL_DMA2D_STATE_RESET = 0x00U, /*!< DMA2D not yet initialized or disabled */ |
||||
|
HAL_DMA2D_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */ |
||||
|
HAL_DMA2D_STATE_BUSY = 0x02U, /*!< An internal process is ongoing */ |
||||
|
HAL_DMA2D_STATE_TIMEOUT = 0x03U, /*!< Timeout state */ |
||||
|
HAL_DMA2D_STATE_ERROR = 0x04U, /*!< DMA2D state error */ |
||||
|
HAL_DMA2D_STATE_SUSPEND = 0x05U /*!< DMA2D process is suspended */ |
||||
|
} HAL_DMA2D_StateTypeDef; |
||||
|
|
||||
|
/**
|
||||
|
* @brief DMA2D handle Structure definition |
||||
|
*/ |
||||
|
typedef struct __DMA2D_HandleTypeDef |
||||
|
{ |
||||
|
DMA2D_TypeDef *Instance; /*!< DMA2D register base address. */ |
||||
|
|
||||
|
DMA2D_InitTypeDef Init; /*!< DMA2D communication parameters. */ |
||||
|
|
||||
|
void (* XferCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d); /*!< DMA2D transfer complete callback. */ |
||||
|
|
||||
|
void (* XferErrorCallback)(struct __DMA2D_HandleTypeDef *hdma2d); /*!< DMA2D transfer error callback. */ |
||||
|
|
||||
|
#if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) |
||||
|
void (* LineEventCallback)(struct __DMA2D_HandleTypeDef *hdma2d); /*!< DMA2D line event callback. */ |
||||
|
|
||||
|
void (* CLUTLoadingCpltCallback)(struct __DMA2D_HandleTypeDef *hdma2d); /*!< DMA2D CLUT loading completion callback */ |
||||
|
|
||||
|
void (* MspInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d); /*!< DMA2D Msp Init callback. */ |
||||
|
|
||||
|
void (* MspDeInitCallback)(struct __DMA2D_HandleTypeDef *hdma2d); /*!< DMA2D Msp DeInit callback. */ |
||||
|
|
||||
|
#endif /* (USE_HAL_DMA2D_REGISTER_CALLBACKS) */ |
||||
|
|
||||
|
DMA2D_LayerCfgTypeDef LayerCfg[MAX_DMA2D_LAYER]; /*!< DMA2D Layers parameters */ |
||||
|
|
||||
|
HAL_LockTypeDef Lock; /*!< DMA2D lock. */ |
||||
|
|
||||
|
__IO HAL_DMA2D_StateTypeDef State; /*!< DMA2D transfer state. */ |
||||
|
|
||||
|
__IO uint32_t ErrorCode; /*!< DMA2D error code. */ |
||||
|
} DMA2D_HandleTypeDef; |
||||
|
|
||||
|
#if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) |
||||
|
/**
|
||||
|
* @brief HAL DMA2D Callback pointer definition |
||||
|
*/ |
||||
|
typedef void (*pDMA2D_CallbackTypeDef)(DMA2D_HandleTypeDef *hdma2d); /*!< Pointer to a DMA2D common callback function */ |
||||
|
#endif /* USE_HAL_DMA2D_REGISTER_CALLBACKS */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/* Exported constants --------------------------------------------------------*/ |
||||
|
/** @defgroup DMA2D_Exported_Constants DMA2D Exported Constants
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Error_Code DMA2D Error Code
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define HAL_DMA2D_ERROR_NONE 0x00000000U /*!< No error */ |
||||
|
#define HAL_DMA2D_ERROR_TE 0x00000001U /*!< Transfer error */ |
||||
|
#define HAL_DMA2D_ERROR_CE 0x00000002U /*!< Configuration error */ |
||||
|
#define HAL_DMA2D_ERROR_CAE 0x00000004U /*!< CLUT access error */ |
||||
|
#define HAL_DMA2D_ERROR_TIMEOUT 0x00000020U /*!< Timeout error */ |
||||
|
#if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) |
||||
|
#define HAL_DMA2D_ERROR_INVALID_CALLBACK 0x00000040U /*!< Invalid callback error */ |
||||
|
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Mode DMA2D Mode
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_M2M 0x00000000U /*!< DMA2D memory to memory transfer mode */ |
||||
|
#define DMA2D_M2M_PFC DMA2D_CR_MODE_0 /*!< DMA2D memory to memory with pixel format conversion transfer mode */ |
||||
|
#define DMA2D_M2M_BLEND DMA2D_CR_MODE_1 /*!< DMA2D memory to memory with blending transfer mode */ |
||||
|
#define DMA2D_R2M (DMA2D_CR_MODE_1 | DMA2D_CR_MODE_0) /*!< DMA2D register to memory transfer mode */ |
||||
|
#define DMA2D_M2M_BLEND_FG DMA2D_CR_MODE_2 /*!< DMA2D memory to memory with blending transfer mode and fixed color FG */ |
||||
|
#define DMA2D_M2M_BLEND_BG (DMA2D_CR_MODE_2 | DMA2D_CR_MODE_0) /*!< DMA2D memory to memory with blending transfer mode and fixed color BG */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Output_Color_Mode DMA2D Output Color Mode
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_OUTPUT_ARGB8888 0x00000000U /*!< ARGB8888 DMA2D color mode */ |
||||
|
#define DMA2D_OUTPUT_RGB888 DMA2D_OPFCCR_CM_0 /*!< RGB888 DMA2D color mode */ |
||||
|
#define DMA2D_OUTPUT_RGB565 DMA2D_OPFCCR_CM_1 /*!< RGB565 DMA2D color mode */ |
||||
|
#define DMA2D_OUTPUT_ARGB1555 (DMA2D_OPFCCR_CM_0|DMA2D_OPFCCR_CM_1) /*!< ARGB1555 DMA2D color mode */ |
||||
|
#define DMA2D_OUTPUT_ARGB4444 DMA2D_OPFCCR_CM_2 /*!< ARGB4444 DMA2D color mode */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Input_Color_Mode DMA2D Input Color Mode
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_INPUT_ARGB8888 0x00000000U /*!< ARGB8888 color mode */ |
||||
|
#define DMA2D_INPUT_RGB888 0x00000001U /*!< RGB888 color mode */ |
||||
|
#define DMA2D_INPUT_RGB565 0x00000002U /*!< RGB565 color mode */ |
||||
|
#define DMA2D_INPUT_ARGB1555 0x00000003U /*!< ARGB1555 color mode */ |
||||
|
#define DMA2D_INPUT_ARGB4444 0x00000004U /*!< ARGB4444 color mode */ |
||||
|
#define DMA2D_INPUT_L8 0x00000005U /*!< L8 color mode */ |
||||
|
#define DMA2D_INPUT_AL44 0x00000006U /*!< AL44 color mode */ |
||||
|
#define DMA2D_INPUT_AL88 0x00000007U /*!< AL88 color mode */ |
||||
|
#define DMA2D_INPUT_L4 0x00000008U /*!< L4 color mode */ |
||||
|
#define DMA2D_INPUT_A8 0x00000009U /*!< A8 color mode */ |
||||
|
#define DMA2D_INPUT_A4 0x0000000AU /*!< A4 color mode */ |
||||
|
#define DMA2D_INPUT_YCBCR 0x0000000BU /*!< YCbCr color mode */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Alpha_Mode DMA2D Alpha Mode
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_NO_MODIF_ALPHA 0x00000000U /*!< No modification of the alpha channel value */ |
||||
|
#define DMA2D_REPLACE_ALPHA 0x00000001U /*!< Replace original alpha channel value by programmed alpha value */ |
||||
|
#define DMA2D_COMBINE_ALPHA 0x00000002U /*!< Replace original alpha channel value by programmed alpha value |
||||
|
with original alpha channel value */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Alpha_Inverted DMA2D Alpha Inversion
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_REGULAR_ALPHA 0x00000000U /*!< No modification of the alpha channel value */ |
||||
|
#define DMA2D_INVERTED_ALPHA 0x00000001U /*!< Invert the alpha channel value */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_RB_Swap DMA2D Red and Blue Swap
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_RB_REGULAR 0x00000000U /*!< Select regular mode (RGB or ARGB) */ |
||||
|
#define DMA2D_RB_SWAP 0x00000001U /*!< Select swap mode (BGR or ABGR) */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** @defgroup DMA2D_Line_Offset_Mode DMA2D Line Offset Mode
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_LOM_PIXELS 0x00000000U /*!< Line offsets expressed in pixels */ |
||||
|
#define DMA2D_LOM_BYTES DMA2D_CR_LOM /*!< Line offsets expressed in bytes */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Bytes_Swap DMA2D Bytes Swap
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_BYTES_REGULAR 0x00000000U /*!< Bytes in regular order in output FIFO */ |
||||
|
#define DMA2D_BYTES_SWAP DMA2D_OPFCCR_SB /*!< Bytes are swapped two by two in output FIFO */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Chroma_Sub_Sampling DMA2D Chroma Sub Sampling
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_NO_CSS 0x00000000U /*!< No chroma sub-sampling 4:4:4 */ |
||||
|
#define DMA2D_CSS_422 0x00000001U /*!< chroma sub-sampling 4:2:2 */ |
||||
|
#define DMA2D_CSS_420 0x00000002U /*!< chroma sub-sampling 4:2:0 */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_CLUT_CM DMA2D CLUT Color Mode
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_CCM_ARGB8888 0x00000000U /*!< ARGB8888 DMA2D CLUT color mode */ |
||||
|
#define DMA2D_CCM_RGB888 0x00000001U /*!< RGB888 DMA2D CLUT color mode */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Interrupts DMA2D Interrupts
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_IT_CE DMA2D_CR_CEIE /*!< Configuration Error Interrupt */ |
||||
|
#define DMA2D_IT_CTC DMA2D_CR_CTCIE /*!< CLUT Transfer Complete Interrupt */ |
||||
|
#define DMA2D_IT_CAE DMA2D_CR_CAEIE /*!< CLUT Access Error Interrupt */ |
||||
|
#define DMA2D_IT_TW DMA2D_CR_TWIE /*!< Transfer Watermark Interrupt */ |
||||
|
#define DMA2D_IT_TC DMA2D_CR_TCIE /*!< Transfer Complete Interrupt */ |
||||
|
#define DMA2D_IT_TE DMA2D_CR_TEIE /*!< Transfer Error Interrupt */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Flags DMA2D Flags
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_FLAG_CE DMA2D_ISR_CEIF /*!< Configuration Error Interrupt Flag */ |
||||
|
#define DMA2D_FLAG_CTC DMA2D_ISR_CTCIF /*!< CLUT Transfer Complete Interrupt Flag */ |
||||
|
#define DMA2D_FLAG_CAE DMA2D_ISR_CAEIF /*!< CLUT Access Error Interrupt Flag */ |
||||
|
#define DMA2D_FLAG_TW DMA2D_ISR_TWIF /*!< Transfer Watermark Interrupt Flag */ |
||||
|
#define DMA2D_FLAG_TC DMA2D_ISR_TCIF /*!< Transfer Complete Interrupt Flag */ |
||||
|
#define DMA2D_FLAG_TE DMA2D_ISR_TEIF /*!< Transfer Error Interrupt Flag */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
#if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) |
||||
|
/**
|
||||
|
* @brief HAL DMA2D common Callback ID enumeration definition |
||||
|
*/ |
||||
|
typedef enum |
||||
|
{ |
||||
|
HAL_DMA2D_MSPINIT_CB_ID = 0x00U, /*!< DMA2D MspInit callback ID */ |
||||
|
HAL_DMA2D_MSPDEINIT_CB_ID = 0x01U, /*!< DMA2D MspDeInit callback ID */ |
||||
|
HAL_DMA2D_TRANSFERCOMPLETE_CB_ID = 0x02U, /*!< DMA2D transfer complete callback ID */ |
||||
|
HAL_DMA2D_TRANSFERERROR_CB_ID = 0x03U, /*!< DMA2D transfer error callback ID */ |
||||
|
HAL_DMA2D_LINEEVENT_CB_ID = 0x04U, /*!< DMA2D line event callback ID */ |
||||
|
HAL_DMA2D_CLUTLOADINGCPLT_CB_ID = 0x05U, /*!< DMA2D CLUT loading completion callback ID */ |
||||
|
} HAL_DMA2D_CallbackIDTypeDef; |
||||
|
#endif /* USE_HAL_DMA2D_REGISTER_CALLBACKS */ |
||||
|
|
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
/* Exported macros ------------------------------------------------------------*/ |
||||
|
/** @defgroup DMA2D_Exported_Macros DMA2D Exported Macros
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/** @brief Reset DMA2D handle state
|
||||
|
* @param __HANDLE__ specifies the DMA2D handle. |
||||
|
* @retval None |
||||
|
*/ |
||||
|
#if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) |
||||
|
#define __HAL_DMA2D_RESET_HANDLE_STATE(__HANDLE__) do{ \ |
||||
|
(__HANDLE__)->State = HAL_DMA2D_STATE_RESET;\ |
||||
|
(__HANDLE__)->MspInitCallback = NULL; \ |
||||
|
(__HANDLE__)->MspDeInitCallback = NULL; \ |
||||
|
}while(0) |
||||
|
#else |
||||
|
#define __HAL_DMA2D_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA2D_STATE_RESET) |
||||
|
#endif /* USE_HAL_DMA2D_REGISTER_CALLBACKS */ |
||||
|
|
||||
|
|
||||
|
/**
|
||||
|
* @brief Enable the DMA2D. |
||||
|
* @param __HANDLE__ DMA2D handle |
||||
|
* @retval None. |
||||
|
*/ |
||||
|
#define __HAL_DMA2D_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= DMA2D_CR_START) |
||||
|
|
||||
|
|
||||
|
/* Interrupt & Flag management */ |
||||
|
/**
|
||||
|
* @brief Get the DMA2D pending flags. |
||||
|
* @param __HANDLE__ DMA2D handle |
||||
|
* @param __FLAG__ flag to check. |
||||
|
* This parameter can be any combination of the following values: |
||||
|
* @arg DMA2D_FLAG_CE: Configuration error flag |
||||
|
* @arg DMA2D_FLAG_CTC: CLUT transfer complete flag |
||||
|
* @arg DMA2D_FLAG_CAE: CLUT access error flag |
||||
|
* @arg DMA2D_FLAG_TW: Transfer Watermark flag |
||||
|
* @arg DMA2D_FLAG_TC: Transfer complete flag |
||||
|
* @arg DMA2D_FLAG_TE: Transfer error flag |
||||
|
* @retval The state of FLAG. |
||||
|
*/ |
||||
|
#define __HAL_DMA2D_GET_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR & (__FLAG__)) |
||||
|
|
||||
|
/**
|
||||
|
* @brief Clear the DMA2D pending flags. |
||||
|
* @param __HANDLE__ DMA2D handle |
||||
|
* @param __FLAG__ specifies the flag to clear. |
||||
|
* This parameter can be any combination of the following values: |
||||
|
* @arg DMA2D_FLAG_CE: Configuration error flag |
||||
|
* @arg DMA2D_FLAG_CTC: CLUT transfer complete flag |
||||
|
* @arg DMA2D_FLAG_CAE: CLUT access error flag |
||||
|
* @arg DMA2D_FLAG_TW: Transfer Watermark flag |
||||
|
* @arg DMA2D_FLAG_TC: Transfer complete flag |
||||
|
* @arg DMA2D_FLAG_TE: Transfer error flag |
||||
|
* @retval None |
||||
|
*/ |
||||
|
#define __HAL_DMA2D_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->IFCR = (__FLAG__)) |
||||
|
|
||||
|
/**
|
||||
|
* @brief Enable the specified DMA2D interrupts. |
||||
|
* @param __HANDLE__ DMA2D handle |
||||
|
* @param __INTERRUPT__ specifies the DMA2D interrupt sources to be enabled. |
||||
|
* This parameter can be any combination of the following values: |
||||
|
* @arg DMA2D_IT_CE: Configuration error interrupt mask |
||||
|
* @arg DMA2D_IT_CTC: CLUT transfer complete interrupt mask |
||||
|
* @arg DMA2D_IT_CAE: CLUT access error interrupt mask |
||||
|
* @arg DMA2D_IT_TW: Transfer Watermark interrupt mask |
||||
|
* @arg DMA2D_IT_TC: Transfer complete interrupt mask |
||||
|
* @arg DMA2D_IT_TE: Transfer error interrupt mask |
||||
|
* @retval None |
||||
|
*/ |
||||
|
#define __HAL_DMA2D_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__)) |
||||
|
|
||||
|
/**
|
||||
|
* @brief Disable the specified DMA2D interrupts. |
||||
|
* @param __HANDLE__ DMA2D handle |
||||
|
* @param __INTERRUPT__ specifies the DMA2D interrupt sources to be disabled. |
||||
|
* This parameter can be any combination of the following values: |
||||
|
* @arg DMA2D_IT_CE: Configuration error interrupt mask |
||||
|
* @arg DMA2D_IT_CTC: CLUT transfer complete interrupt mask |
||||
|
* @arg DMA2D_IT_CAE: CLUT access error interrupt mask |
||||
|
* @arg DMA2D_IT_TW: Transfer Watermark interrupt mask |
||||
|
* @arg DMA2D_IT_TC: Transfer complete interrupt mask |
||||
|
* @arg DMA2D_IT_TE: Transfer error interrupt mask |
||||
|
* @retval None |
||||
|
*/ |
||||
|
#define __HAL_DMA2D_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__)) |
||||
|
|
||||
|
/**
|
||||
|
* @brief Check whether the specified DMA2D interrupt source is enabled or not. |
||||
|
* @param __HANDLE__ DMA2D handle |
||||
|
* @param __INTERRUPT__ specifies the DMA2D interrupt source to check. |
||||
|
* This parameter can be one of the following values: |
||||
|
* @arg DMA2D_IT_CE: Configuration error interrupt mask |
||||
|
* @arg DMA2D_IT_CTC: CLUT transfer complete interrupt mask |
||||
|
* @arg DMA2D_IT_CAE: CLUT access error interrupt mask |
||||
|
* @arg DMA2D_IT_TW: Transfer Watermark interrupt mask |
||||
|
* @arg DMA2D_IT_TC: Transfer complete interrupt mask |
||||
|
* @arg DMA2D_IT_TE: Transfer error interrupt mask |
||||
|
* @retval The state of INTERRUPT source. |
||||
|
*/ |
||||
|
#define __HAL_DMA2D_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR & (__INTERRUPT__)) |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/* Exported functions --------------------------------------------------------*/ |
||||
|
/** @addtogroup DMA2D_Exported_Functions DMA2D Exported Functions
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/** @addtogroup DMA2D_Exported_Functions_Group1 Initialization and de-initialization functions
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/* Initialization and de-initialization functions *******************************/ |
||||
|
HAL_StatusTypeDef HAL_DMA2D_Init(DMA2D_HandleTypeDef *hdma2d); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_DeInit(DMA2D_HandleTypeDef *hdma2d); |
||||
|
void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef *hdma2d); |
||||
|
void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef *hdma2d); |
||||
|
/* Callbacks Register/UnRegister functions ***********************************/ |
||||
|
#if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) |
||||
|
HAL_StatusTypeDef HAL_DMA2D_RegisterCallback(DMA2D_HandleTypeDef *hdma2d, HAL_DMA2D_CallbackIDTypeDef CallbackID, |
||||
|
pDMA2D_CallbackTypeDef pCallback); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_UnRegisterCallback(DMA2D_HandleTypeDef *hdma2d, HAL_DMA2D_CallbackIDTypeDef CallbackID); |
||||
|
#endif /* USE_HAL_DMA2D_REGISTER_CALLBACKS */ |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
/** @addtogroup DMA2D_Exported_Functions_Group2 IO operation functions
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/* IO operation functions *******************************************************/ |
||||
|
HAL_StatusTypeDef HAL_DMA2D_Start(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width, |
||||
|
uint32_t Height); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_BlendingStart(DMA2D_HandleTypeDef *hdma2d, uint32_t SrcAddress1, uint32_t SrcAddress2, |
||||
|
uint32_t DstAddress, uint32_t Width, uint32_t Height); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_Start_IT(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width, |
||||
|
uint32_t Height); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_BlendingStart_IT(DMA2D_HandleTypeDef *hdma2d, uint32_t SrcAddress1, uint32_t SrcAddress2, |
||||
|
uint32_t DstAddress, uint32_t Width, uint32_t Height); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_Suspend(DMA2D_HandleTypeDef *hdma2d); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_Resume(DMA2D_HandleTypeDef *hdma2d); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_Abort(DMA2D_HandleTypeDef *hdma2d); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_EnableCLUT(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_CLUTStartLoad(DMA2D_HandleTypeDef *hdma2d, const DMA2D_CLUTCfgTypeDef *CLUTCfg, |
||||
|
uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_CLUTStartLoad_IT(DMA2D_HandleTypeDef *hdma2d, const DMA2D_CLUTCfgTypeDef *CLUTCfg, |
||||
|
uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_CLUTLoad(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef CLUTCfg, uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_CLUTLoad_IT(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef CLUTCfg, uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_CLUTLoading_Abort(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_CLUTLoading_Suspend(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_CLUTLoading_Resume(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_PollForTransfer(DMA2D_HandleTypeDef *hdma2d, uint32_t Timeout); |
||||
|
void HAL_DMA2D_IRQHandler(DMA2D_HandleTypeDef *hdma2d); |
||||
|
void HAL_DMA2D_LineEventCallback(DMA2D_HandleTypeDef *hdma2d); |
||||
|
void HAL_DMA2D_CLUTLoadingCpltCallback(DMA2D_HandleTypeDef *hdma2d); |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @addtogroup DMA2D_Exported_Functions_Group3 Peripheral Control functions
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/* Peripheral Control functions *************************************************/ |
||||
|
HAL_StatusTypeDef HAL_DMA2D_ConfigLayer(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_ConfigCLUT(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef CLUTCfg, uint32_t LayerIdx); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_ProgramLineEvent(DMA2D_HandleTypeDef *hdma2d, uint32_t Line); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_EnableDeadTime(DMA2D_HandleTypeDef *hdma2d); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_DisableDeadTime(DMA2D_HandleTypeDef *hdma2d); |
||||
|
HAL_StatusTypeDef HAL_DMA2D_ConfigDeadTime(DMA2D_HandleTypeDef *hdma2d, uint8_t DeadTime); |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @addtogroup DMA2D_Exported_Functions_Group4 Peripheral State and Error functions
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/* Peripheral State functions ***************************************************/ |
||||
|
HAL_DMA2D_StateTypeDef HAL_DMA2D_GetState(const DMA2D_HandleTypeDef *hdma2d); |
||||
|
uint32_t HAL_DMA2D_GetError(const DMA2D_HandleTypeDef *hdma2d); |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/* Private constants ---------------------------------------------------------*/ |
||||
|
|
||||
|
/** @addtogroup DMA2D_Private_Constants DMA2D Private Constants
|
||||
|
* @{ |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Maximum_Line_WaterMark DMA2D Maximum Line Watermark
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_LINE_WATERMARK_MAX DMA2D_LWR_LW /*!< DMA2D maximum line watermark */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Color_Value DMA2D Color Value
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_COLOR_VALUE 0x000000FFU /*!< Color value mask */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Max_Layer DMA2D Maximum Number of Layers
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_MAX_LAYER 2U /*!< DMA2D maximum number of layers */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Layers DMA2D Layers
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_BACKGROUND_LAYER 0x00000000U /*!< DMA2D Background Layer (layer 0) */ |
||||
|
#define DMA2D_FOREGROUND_LAYER 0x00000001U /*!< DMA2D Foreground Layer (layer 1) */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Offset DMA2D Offset
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_OFFSET DMA2D_FGOR_LO /*!< maximum Line Offset */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_Size DMA2D Size
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_PIXEL (DMA2D_NLR_PL >> 16U) /*!< DMA2D maximum number of pixels per line */ |
||||
|
#define DMA2D_LINE DMA2D_NLR_NL /*!< DMA2D maximum number of lines */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/** @defgroup DMA2D_CLUT_Size DMA2D CLUT Size
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define DMA2D_CLUT_SIZE (DMA2D_FGPFCCR_CS >> 8U) /*!< DMA2D maximum CLUT size */ |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
/* Private macros ------------------------------------------------------------*/ |
||||
|
/** @defgroup DMA2D_Private_Macros DMA2D Private Macros
|
||||
|
* @{ |
||||
|
*/ |
||||
|
#define IS_DMA2D_LAYER(LAYER) (((LAYER) == DMA2D_BACKGROUND_LAYER)\ |
||||
|
|| ((LAYER) == DMA2D_FOREGROUND_LAYER)) |
||||
|
|
||||
|
#define IS_DMA2D_MODE(MODE) (((MODE) == DMA2D_M2M) || ((MODE) == DMA2D_M2M_PFC) || \ |
||||
|
((MODE) == DMA2D_M2M_BLEND) || ((MODE) == DMA2D_R2M) || \ |
||||
|
((MODE) == DMA2D_M2M_BLEND_FG) || ((MODE) == DMA2D_M2M_BLEND_BG)) |
||||
|
|
||||
|
#define IS_DMA2D_CMODE(MODE_ARGB) (((MODE_ARGB) == DMA2D_OUTPUT_ARGB8888) || \ |
||||
|
((MODE_ARGB) == DMA2D_OUTPUT_RGB888) || \ |
||||
|
((MODE_ARGB) == DMA2D_OUTPUT_RGB565) || \ |
||||
|
((MODE_ARGB) == DMA2D_OUTPUT_ARGB1555) || \ |
||||
|
((MODE_ARGB) == DMA2D_OUTPUT_ARGB4444)) |
||||
|
|
||||
|
#define IS_DMA2D_COLOR(COLOR) ((COLOR) <= DMA2D_COLOR_VALUE) |
||||
|
#define IS_DMA2D_LINE(LINE) ((LINE) <= DMA2D_LINE) |
||||
|
#define IS_DMA2D_PIXEL(PIXEL) ((PIXEL) <= DMA2D_PIXEL) |
||||
|
#define IS_DMA2D_OFFSET(OOFFSET) ((OOFFSET) <= DMA2D_OFFSET) |
||||
|
|
||||
|
#define IS_DMA2D_INPUT_COLOR_MODE(INPUT_CM) (((INPUT_CM) == DMA2D_INPUT_ARGB8888) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_RGB888) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_RGB565) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_ARGB1555) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_ARGB4444) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_L8) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_AL44) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_AL88) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_L4) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_A8) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_A4) || \ |
||||
|
((INPUT_CM) == DMA2D_INPUT_YCBCR)) |
||||
|
|
||||
|
#define IS_DMA2D_ALPHA_MODE(AlphaMode) (((AlphaMode) == DMA2D_NO_MODIF_ALPHA) || \ |
||||
|
((AlphaMode) == DMA2D_REPLACE_ALPHA) || \ |
||||
|
((AlphaMode) == DMA2D_COMBINE_ALPHA)) |
||||
|
|
||||
|
#define IS_DMA2D_ALPHA_INVERTED(Alpha_Inverted) (((Alpha_Inverted) == DMA2D_REGULAR_ALPHA) || \ |
||||
|
((Alpha_Inverted) == DMA2D_INVERTED_ALPHA)) |
||||
|
|
||||
|
#define IS_DMA2D_RB_SWAP(RB_Swap) (((RB_Swap) == DMA2D_RB_REGULAR) || \ |
||||
|
((RB_Swap) == DMA2D_RB_SWAP)) |
||||
|
|
||||
|
#define IS_DMA2D_LOM_MODE(LOM) (((LOM) == DMA2D_LOM_PIXELS) || \ |
||||
|
((LOM) == DMA2D_LOM_BYTES)) |
||||
|
|
||||
|
#define IS_DMA2D_BYTES_SWAP(BYTES_SWAP) (((BYTES_SWAP) == DMA2D_BYTES_REGULAR) || \ |
||||
|
((BYTES_SWAP) == DMA2D_BYTES_SWAP)) |
||||
|
|
||||
|
#define IS_DMA2D_CHROMA_SUB_SAMPLING(CSS) (((CSS) == DMA2D_NO_CSS) || \ |
||||
|
((CSS) == DMA2D_CSS_422) || \ |
||||
|
((CSS) == DMA2D_CSS_420)) |
||||
|
|
||||
|
#define IS_DMA2D_CLUT_CM(CLUT_CM) (((CLUT_CM) == DMA2D_CCM_ARGB8888) || ((CLUT_CM) == DMA2D_CCM_RGB888)) |
||||
|
#define IS_DMA2D_CLUT_SIZE(CLUT_SIZE) ((CLUT_SIZE) <= DMA2D_CLUT_SIZE) |
||||
|
#define IS_DMA2D_LINEWATERMARK(LineWatermark) ((LineWatermark) <= DMA2D_LINE_WATERMARK_MAX) |
||||
|
#define IS_DMA2D_IT(IT) (((IT) == DMA2D_IT_CTC) || ((IT) == DMA2D_IT_CAE) || \ |
||||
|
((IT) == DMA2D_IT_TW) || ((IT) == DMA2D_IT_TC) || \ |
||||
|
((IT) == DMA2D_IT_TE) || ((IT) == DMA2D_IT_CE)) |
||||
|
#define IS_DMA2D_GET_FLAG(FLAG) (((FLAG) == DMA2D_FLAG_CTC) || ((FLAG) == DMA2D_FLAG_CAE) || \ |
||||
|
((FLAG) == DMA2D_FLAG_TW) || ((FLAG) == DMA2D_FLAG_TC) || \ |
||||
|
((FLAG) == DMA2D_FLAG_TE) || ((FLAG) == DMA2D_FLAG_CE)) |
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
#endif /* defined (DMA2D) */ |
||||
|
|
||||
|
/**
|
||||
|
* @} |
||||
|
*/ |
||||
|
|
||||
|
#ifdef __cplusplus |
||||
|
} |
||||
|
#endif |
||||
|
|
||||
|
#endif /* STM32H7xx_HAL_DMA2D_H */ |
||||
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,56 @@ |
|||||
|
/*
|
||||
|
* Copyright (c) 2006-2021, RT-Thread Development Team |
||||
|
* |
||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||
|
* |
||||
|
* Change Logs: |
||||
|
* Date Author Notes |
||||
|
* 2025-12-06 Administrator the first version |
||||
|
*/ |
||||
|
#ifndef DRIVERS_INCLUDE_LCD_H_ |
||||
|
#define DRIVERS_INCLUDE_LCD_H_ |
||||
|
|
||||
|
#include "ltdc.h" |
||||
|
|
||||
|
/* 颜色定义(RGB565) */ |
||||
|
#define WHITE 0xFFFF |
||||
|
#define BLACK 0x0000 |
||||
|
#define RED 0xF800 |
||||
|
#define GREEN 0x07E0 |
||||
|
#define BLUE 0x001F |
||||
|
#define YELLOW 0xFFE0 |
||||
|
#define CYAN 0x07FF |
||||
|
#define MAGENTA 0xF81F |
||||
|
|
||||
|
/* 注意:_lcd_dev 必须在 extern 之前定义! */ |
||||
|
typedef struct { |
||||
|
uint16_t width; |
||||
|
uint16_t height; |
||||
|
uint16_t id; |
||||
|
uint8_t dir; |
||||
|
} _lcd_dev; |
||||
|
|
||||
|
extern uint32_t g_point_color; |
||||
|
extern uint32_t g_back_color; |
||||
|
extern _lcd_dev lcddev; |
||||
|
|
||||
|
/* 函数声明 */ |
||||
|
void lcd_init(void); |
||||
|
void lcd_clear(uint32_t color); |
||||
|
void lcd_draw_point(uint16_t x, uint16_t y, uint32_t color); |
||||
|
void lcd_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint32_t color); |
||||
|
void lcd_draw_line(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint32_t color); |
||||
|
void lcd_draw_rectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint32_t color); |
||||
|
void lcd_draw_circle(uint16_t x0, uint16_t y0, uint8_t r, uint32_t color); |
||||
|
void lcd_fill_circle(uint16_t x, uint16_t y, uint16_t r, uint32_t color); |
||||
|
void lcd_show_char(uint16_t x, uint16_t y, char chr, uint8_t size, uint8_t mode, uint32_t color); |
||||
|
void lcd_show_num(uint16_t x, uint16_t y, uint32_t num, uint8_t len, uint8_t size, uint32_t color); |
||||
|
void lcd_show_xnum(uint16_t x, uint16_t y, uint32_t num, uint8_t len, uint8_t size, uint8_t mode, uint32_t color); |
||||
|
void lcd_show_string(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t size, char *p, uint32_t color); |
||||
|
|
||||
|
/* 新增:声明 lcd_display_dir */ |
||||
|
void lcd_display_dir(uint8_t dir); |
||||
|
|
||||
|
void lcd_rgb_test(); |
||||
|
|
||||
|
#endif /* DRIVERS_INCLUDE_LCD_H_ */ |
||||
@ -0,0 +1,419 @@ |
|||||
|
/*
|
||||
|
* Copyright (c) 2006-2021, RT-Thread Development Team |
||||
|
* |
||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||
|
* |
||||
|
* Change Logs: |
||||
|
* Date Author Notes |
||||
|
* 2025-12-05 Administrator the first version |
||||
|
*/ |
||||
|
#ifndef DRIVERS_INCLUDE_LCDFONT_H_ |
||||
|
#define DRIVERS_INCLUDE_LCDFONT_H_H_ |
||||
|
|
||||
|
|
||||
|
/* 常用ASCII表
|
||||
|
* 偏移量32 |
||||
|
* ASCII字符集: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ |
||||
|
* PC2LCD2002取模方式设置:阴码+逐列式+顺向+C51格式 |
||||
|
* 总共:3个字符集(12*12、16*16、24*24和32*32),用户可以自行新增其他分辨率的字符集。 |
||||
|
* 每个字符所占用的字节数为:(size/8+((size%8)?1:0))*(size/2),其中size:是字库生成时的点阵大小(12/16/24/32...) |
||||
|
*/ |
||||
|
|
||||
|
/* 12*12 ASCII字符集点阵 */ |
||||
|
const unsigned char asc2_1206[95][12]={ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ |
||||
|
{0x00,0x00,0x00,0x00,0x3F,0x40,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/ |
||||
|
{0x00,0x00,0x30,0x00,0x40,0x00,0x30,0x00,0x40,0x00,0x00,0x00},/*""",2*/ |
||||
|
{0x09,0x00,0x0B,0xC0,0x3D,0x00,0x0B,0xC0,0x3D,0x00,0x09,0x00},/*"#",3*/ |
||||
|
{0x18,0xC0,0x24,0x40,0x7F,0xE0,0x22,0x40,0x31,0x80,0x00,0x00},/*"$",4*/ |
||||
|
{0x18,0x00,0x24,0xC0,0x1B,0x00,0x0D,0x80,0x32,0x40,0x01,0x80},/*"%",5*/ |
||||
|
{0x03,0x80,0x1C,0x40,0x27,0x40,0x1C,0x80,0x07,0x40,0x00,0x40},/*"&",6*/ |
||||
|
{0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x20,0x40,0x40,0x20},/*"(",8*/ |
||||
|
{0x00,0x00,0x40,0x20,0x20,0x40,0x1F,0x80,0x00,0x00,0x00,0x00},/*")",9*/ |
||||
|
{0x09,0x00,0x06,0x00,0x1F,0x80,0x06,0x00,0x09,0x00,0x00,0x00},/*"*",10*/ |
||||
|
{0x04,0x00,0x04,0x00,0x3F,0x80,0x04,0x00,0x04,0x00,0x00,0x00},/*"+",11*/ |
||||
|
{0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/ |
||||
|
{0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00},/*"-",13*/ |
||||
|
{0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/ |
||||
|
{0x00,0x20,0x01,0xC0,0x06,0x00,0x38,0x00,0x40,0x00,0x00,0x00},/*"/",15*/ |
||||
|
{0x1F,0x80,0x20,0x40,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00},/*"0",16*/ |
||||
|
{0x00,0x00,0x10,0x40,0x3F,0xC0,0x00,0x40,0x00,0x00,0x00,0x00},/*"1",17*/ |
||||
|
{0x18,0xC0,0x21,0x40,0x22,0x40,0x24,0x40,0x18,0x40,0x00,0x00},/*"2",18*/ |
||||
|
{0x10,0x80,0x20,0x40,0x24,0x40,0x24,0x40,0x1B,0x80,0x00,0x00},/*"3",19*/ |
||||
|
{0x02,0x00,0x0D,0x00,0x11,0x00,0x3F,0xC0,0x01,0x40,0x00,0x00},/*"4",20*/ |
||||
|
{0x3C,0x80,0x24,0x40,0x24,0x40,0x24,0x40,0x23,0x80,0x00,0x00},/*"5",21*/ |
||||
|
{0x1F,0x80,0x24,0x40,0x24,0x40,0x34,0x40,0x03,0x80,0x00,0x00},/*"6",22*/ |
||||
|
{0x30,0x00,0x20,0x00,0x27,0xC0,0x38,0x00,0x20,0x00,0x00,0x00},/*"7",23*/ |
||||
|
{0x1B,0x80,0x24,0x40,0x24,0x40,0x24,0x40,0x1B,0x80,0x00,0x00},/*"8",24*/ |
||||
|
{0x1C,0x00,0x22,0xC0,0x22,0x40,0x22,0x40,0x1F,0x80,0x00,0x00},/*"9",25*/ |
||||
|
{0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/ |
||||
|
{0x00,0x00,0x00,0x00,0x04,0x60,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/ |
||||
|
{0x00,0x00,0x04,0x00,0x0A,0x00,0x11,0x00,0x20,0x80,0x40,0x40},/*"<",28*/ |
||||
|
{0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x00,0x00},/*"=",29*/ |
||||
|
{0x00,0x00,0x40,0x40,0x20,0x80,0x11,0x00,0x0A,0x00,0x04,0x00},/*">",30*/ |
||||
|
{0x18,0x00,0x20,0x00,0x23,0x40,0x24,0x00,0x18,0x00,0x00,0x00},/*"?",31*/ |
||||
|
{0x1F,0x80,0x20,0x40,0x27,0x40,0x29,0x40,0x1F,0x40,0x00,0x00},/*"@",32*/ |
||||
|
{0x00,0x40,0x07,0xC0,0x39,0x00,0x0F,0x00,0x01,0xC0,0x00,0x40},/*"A",33*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x24,0x40,0x24,0x40,0x1B,0x80,0x00,0x00},/*"B",34*/ |
||||
|
{0x1F,0x80,0x20,0x40,0x20,0x40,0x20,0x40,0x30,0x80,0x00,0x00},/*"C",35*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00},/*"D",36*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x24,0x40,0x2E,0x40,0x30,0xC0,0x00,0x00},/*"E",37*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x24,0x40,0x2E,0x00,0x30,0x00,0x00,0x00},/*"F",38*/ |
||||
|
{0x0F,0x00,0x10,0x80,0x20,0x40,0x22,0x40,0x33,0x80,0x02,0x00},/*"G",39*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x04,0x00,0x04,0x00,0x3F,0xC0,0x20,0x40},/*"H",40*/ |
||||
|
{0x20,0x40,0x20,0x40,0x3F,0xC0,0x20,0x40,0x20,0x40,0x00,0x00},/*"I",41*/ |
||||
|
{0x00,0x60,0x20,0x20,0x20,0x20,0x3F,0xC0,0x20,0x00,0x20,0x00},/*"J",42*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x24,0x40,0x0B,0x00,0x30,0xC0,0x20,0x40},/*"K",43*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x20,0x40,0x00,0x40,0x00,0x40,0x00,0xC0},/*"L",44*/ |
||||
|
{0x3F,0xC0,0x3C,0x00,0x03,0xC0,0x3C,0x00,0x3F,0xC0,0x00,0x00},/*"M",45*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x0C,0x40,0x23,0x00,0x3F,0xC0,0x20,0x00},/*"N",46*/ |
||||
|
{0x1F,0x80,0x20,0x40,0x20,0x40,0x20,0x40,0x1F,0x80,0x00,0x00},/*"O",47*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x24,0x40,0x24,0x00,0x18,0x00,0x00,0x00},/*"P",48*/ |
||||
|
{0x1F,0x80,0x21,0x40,0x21,0x40,0x20,0xE0,0x1F,0xA0,0x00,0x00},/*"Q",49*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x24,0x40,0x26,0x00,0x19,0xC0,0x00,0x40},/*"R",50*/ |
||||
|
{0x18,0xC0,0x24,0x40,0x24,0x40,0x22,0x40,0x31,0x80,0x00,0x00},/*"S",51*/ |
||||
|
{0x30,0x00,0x20,0x40,0x3F,0xC0,0x20,0x40,0x30,0x00,0x00,0x00},/*"T",52*/ |
||||
|
{0x20,0x00,0x3F,0x80,0x00,0x40,0x00,0x40,0x3F,0x80,0x20,0x00},/*"U",53*/ |
||||
|
{0x20,0x00,0x3E,0x00,0x01,0xC0,0x07,0x00,0x38,0x00,0x20,0x00},/*"V",54*/ |
||||
|
{0x38,0x00,0x07,0xC0,0x3C,0x00,0x07,0xC0,0x38,0x00,0x00,0x00},/*"W",55*/ |
||||
|
{0x20,0x40,0x39,0xC0,0x06,0x00,0x39,0xC0,0x20,0x40,0x00,0x00},/*"X",56*/ |
||||
|
{0x20,0x00,0x38,0x40,0x07,0xC0,0x38,0x40,0x20,0x00,0x00,0x00},/*"Y",57*/ |
||||
|
{0x30,0x40,0x21,0xC0,0x26,0x40,0x38,0x40,0x20,0xC0,0x00,0x00},/*"Z",58*/ |
||||
|
{0x00,0x00,0x00,0x00,0x7F,0xE0,0x40,0x20,0x40,0x20,0x00,0x00},/*"[",59*/ |
||||
|
{0x00,0x00,0x70,0x00,0x0C,0x00,0x03,0x80,0x00,0x40,0x00,0x00},/*"\",60*/ |
||||
|
{0x00,0x00,0x40,0x20,0x40,0x20,0x7F,0xE0,0x00,0x00,0x00,0x00},/*"]",61*/ |
||||
|
{0x00,0x00,0x20,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00},/*"^",62*/ |
||||
|
{0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10},/*"_",63*/ |
||||
|
{0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/ |
||||
|
{0x00,0x00,0x02,0x80,0x05,0x40,0x05,0x40,0x03,0xC0,0x00,0x40},/*"a",65*/ |
||||
|
{0x20,0x00,0x3F,0xC0,0x04,0x40,0x04,0x40,0x03,0x80,0x00,0x00},/*"b",66*/ |
||||
|
{0x00,0x00,0x03,0x80,0x04,0x40,0x04,0x40,0x06,0x40,0x00,0x00},/*"c",67*/ |
||||
|
{0x00,0x00,0x03,0x80,0x04,0x40,0x24,0x40,0x3F,0xC0,0x00,0x40},/*"d",68*/ |
||||
|
{0x00,0x00,0x03,0x80,0x05,0x40,0x05,0x40,0x03,0x40,0x00,0x00},/*"e",69*/ |
||||
|
{0x00,0x00,0x04,0x40,0x1F,0xC0,0x24,0x40,0x24,0x40,0x20,0x00},/*"f",70*/ |
||||
|
{0x00,0x00,0x02,0xE0,0x05,0x50,0x05,0x50,0x06,0x50,0x04,0x20},/*"g",71*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x04,0x40,0x04,0x00,0x03,0xC0,0x00,0x40},/*"h",72*/ |
||||
|
{0x00,0x00,0x04,0x40,0x27,0xC0,0x00,0x40,0x00,0x00,0x00,0x00},/*"i",73*/ |
||||
|
{0x00,0x10,0x00,0x10,0x04,0x10,0x27,0xE0,0x00,0x00,0x00,0x00},/*"j",74*/ |
||||
|
{0x20,0x40,0x3F,0xC0,0x01,0x40,0x07,0x00,0x04,0xC0,0x04,0x40},/*"k",75*/ |
||||
|
{0x20,0x40,0x20,0x40,0x3F,0xC0,0x00,0x40,0x00,0x40,0x00,0x00},/*"l",76*/ |
||||
|
{0x07,0xC0,0x04,0x00,0x07,0xC0,0x04,0x00,0x03,0xC0,0x00,0x00},/*"m",77*/ |
||||
|
{0x04,0x40,0x07,0xC0,0x04,0x40,0x04,0x00,0x03,0xC0,0x00,0x40},/*"n",78*/ |
||||
|
{0x00,0x00,0x03,0x80,0x04,0x40,0x04,0x40,0x03,0x80,0x00,0x00},/*"o",79*/ |
||||
|
{0x04,0x10,0x07,0xF0,0x04,0x50,0x04,0x40,0x03,0x80,0x00,0x00},/*"p",80*/ |
||||
|
{0x00,0x00,0x03,0x80,0x04,0x40,0x04,0x50,0x07,0xF0,0x00,0x10},/*"q",81*/ |
||||
|
{0x04,0x40,0x07,0xC0,0x02,0x40,0x04,0x00,0x04,0x00,0x00,0x00},/*"r",82*/ |
||||
|
{0x00,0x00,0x06,0x40,0x05,0x40,0x05,0x40,0x04,0xC0,0x00,0x00},/*"s",83*/ |
||||
|
{0x00,0x00,0x04,0x00,0x1F,0x80,0x04,0x40,0x00,0x40,0x00,0x00},/*"t",84*/ |
||||
|
{0x04,0x00,0x07,0x80,0x00,0x40,0x04,0x40,0x07,0xC0,0x00,0x40},/*"u",85*/ |
||||
|
{0x04,0x00,0x07,0x00,0x04,0xC0,0x01,0x80,0x06,0x00,0x04,0x00},/*"v",86*/ |
||||
|
{0x06,0x00,0x01,0xC0,0x07,0x00,0x01,0xC0,0x06,0x00,0x00,0x00},/*"w",87*/ |
||||
|
{0x04,0x40,0x06,0xC0,0x01,0x00,0x06,0xC0,0x04,0x40,0x00,0x00},/*"x",88*/ |
||||
|
{0x04,0x10,0x07,0x10,0x04,0xE0,0x01,0x80,0x06,0x00,0x04,0x00},/*"y",89*/ |
||||
|
{0x00,0x00,0x04,0x40,0x05,0xC0,0x06,0x40,0x04,0x40,0x00,0x00},/*"z",90*/ |
||||
|
{0x00,0x00,0x00,0x00,0x04,0x00,0x7B,0xE0,0x40,0x20,0x00,0x00},/*"{",91*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00},/*"|",92*/ |
||||
|
{0x00,0x00,0x40,0x20,0x7B,0xE0,0x04,0x00,0x00,0x00,0x00,0x00},/*"}",93*/ |
||||
|
{0x40,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x40,0x00},/*"~",94*/ |
||||
|
}; |
||||
|
|
||||
|
/* 16*16 ASCII字符集点阵 */ |
||||
|
const unsigned char asc2_1608[95][16]={ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/ |
||||
|
{0x00,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x00,0x00},/*""",2*/ |
||||
|
{0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x03,0xFC,0x1E,0x20,0x02,0x20,0x00,0x00},/*"#",3*/ |
||||
|
{0x00,0x00,0x0E,0x18,0x11,0x04,0x3F,0xFF,0x10,0x84,0x0C,0x78,0x00,0x00,0x00,0x00},/*"$",4*/ |
||||
|
{0x0F,0x00,0x10,0x84,0x0F,0x38,0x00,0xC0,0x07,0x78,0x18,0x84,0x00,0x78,0x00,0x00},/*"%",5*/ |
||||
|
{0x00,0x78,0x0F,0x84,0x10,0xC4,0x11,0x24,0x0E,0x98,0x00,0xE4,0x00,0x84,0x00,0x08},/*"&",6*/ |
||||
|
{0x08,0x00,0x68,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x18,0x18,0x20,0x04,0x40,0x02,0x00,0x00},/*"(",8*/ |
||||
|
{0x00,0x00,0x40,0x02,0x20,0x04,0x18,0x18,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/ |
||||
|
{0x02,0x40,0x02,0x40,0x01,0x80,0x0F,0xF0,0x01,0x80,0x02,0x40,0x02,0x40,0x00,0x00},/*"*",10*/ |
||||
|
{0x00,0x80,0x00,0x80,0x00,0x80,0x0F,0xF8,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00},/*"+",11*/ |
||||
|
{0x00,0x01,0x00,0x0D,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/ |
||||
|
{0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80},/*"-",13*/ |
||||
|
{0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/ |
||||
|
{0x00,0x00,0x00,0x06,0x00,0x18,0x00,0x60,0x01,0x80,0x06,0x00,0x18,0x00,0x20,0x00},/*"/",15*/ |
||||
|
{0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"0",16*/ |
||||
|
{0x00,0x00,0x08,0x04,0x08,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"1",17*/ |
||||
|
{0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x11,0x84,0x0E,0x0C,0x00,0x00},/*"2",18*/ |
||||
|
{0x00,0x00,0x0C,0x18,0x10,0x04,0x11,0x04,0x11,0x04,0x12,0x88,0x0C,0x70,0x00,0x00},/*"3",19*/ |
||||
|
{0x00,0x00,0x00,0xE0,0x03,0x20,0x04,0x24,0x08,0x24,0x1F,0xFC,0x00,0x24,0x00,0x00},/*"4",20*/ |
||||
|
{0x00,0x00,0x1F,0x98,0x10,0x84,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00},/*"5",21*/ |
||||
|
{0x00,0x00,0x07,0xF0,0x08,0x88,0x11,0x04,0x11,0x04,0x18,0x88,0x00,0x70,0x00,0x00},/*"6",22*/ |
||||
|
{0x00,0x00,0x1C,0x00,0x10,0x00,0x10,0xFC,0x13,0x00,0x1C,0x00,0x10,0x00,0x00,0x00},/*"7",23*/ |
||||
|
{0x00,0x00,0x0E,0x38,0x11,0x44,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00},/*"8",24*/ |
||||
|
{0x00,0x00,0x07,0x00,0x08,0x8C,0x10,0x44,0x10,0x44,0x08,0x88,0x07,0xF0,0x00,0x00},/*"9",25*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x03,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/ |
||||
|
{0x00,0x00,0x00,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x08,0x08,0x10,0x04,0x00,0x00},/*"<",28*/ |
||||
|
{0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x00,0x00},/*"=",29*/ |
||||
|
{0x00,0x00,0x10,0x04,0x08,0x08,0x04,0x10,0x02,0x20,0x01,0x40,0x00,0x80,0x00,0x00},/*">",30*/ |
||||
|
{0x00,0x00,0x0E,0x00,0x12,0x00,0x10,0x0C,0x10,0x6C,0x10,0x80,0x0F,0x00,0x00,0x00},/*"?",31*/ |
||||
|
{0x03,0xE0,0x0C,0x18,0x13,0xE4,0x14,0x24,0x17,0xC4,0x08,0x28,0x07,0xD0,0x00,0x00},/*"@",32*/ |
||||
|
{0x00,0x04,0x00,0x3C,0x03,0xC4,0x1C,0x40,0x07,0x40,0x00,0xE4,0x00,0x1C,0x00,0x04},/*"A",33*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x11,0x04,0x0E,0x88,0x00,0x70,0x00,0x00},/*"B",34*/ |
||||
|
{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x08,0x1C,0x10,0x00,0x00},/*"C",35*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"D",36*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x04,0x17,0xC4,0x10,0x04,0x08,0x18,0x00,0x00},/*"E",37*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x17,0xC0,0x10,0x00,0x08,0x00,0x00,0x00},/*"F",38*/ |
||||
|
{0x03,0xE0,0x0C,0x18,0x10,0x04,0x10,0x04,0x10,0x44,0x1C,0x78,0x00,0x40,0x00,0x00},/*"G",39*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x10,0x84,0x00,0x80,0x00,0x80,0x10,0x84,0x1F,0xFC,0x10,0x04},/*"H",40*/ |
||||
|
{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x00,0x00,0x00,0x00},/*"I",41*/ |
||||
|
{0x00,0x03,0x00,0x01,0x10,0x01,0x10,0x01,0x1F,0xFE,0x10,0x00,0x10,0x00,0x00,0x00},/*"J",42*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x03,0x80,0x14,0x64,0x18,0x1C,0x10,0x04,0x00,0x00},/*"K",43*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x10,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0C,0x00,0x00},/*"L",44*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x1F,0xFC,0x10,0x04,0x00,0x00},/*"M",45*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x0C,0x04,0x03,0x00,0x00,0xE0,0x10,0x18,0x1F,0xFC,0x10,0x00},/*"N",46*/ |
||||
|
{0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00},/*"O",47*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x10,0x84,0x10,0x80,0x10,0x80,0x10,0x80,0x0F,0x00,0x00,0x00},/*"P",48*/ |
||||
|
{0x07,0xF0,0x08,0x18,0x10,0x24,0x10,0x24,0x10,0x1C,0x08,0x0A,0x07,0xF2,0x00,0x00},/*"Q",49*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x11,0x04,0x11,0x00,0x11,0xC0,0x11,0x30,0x0E,0x0C,0x00,0x04},/*"R",50*/ |
||||
|
{0x00,0x00,0x0E,0x1C,0x11,0x04,0x10,0x84,0x10,0x84,0x10,0x44,0x1C,0x38,0x00,0x00},/*"S",51*/ |
||||
|
{0x18,0x00,0x10,0x00,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x00,0x18,0x00,0x00,0x00},/*"T",52*/ |
||||
|
{0x10,0x00,0x1F,0xF8,0x10,0x04,0x00,0x04,0x00,0x04,0x10,0x04,0x1F,0xF8,0x10,0x00},/*"U",53*/ |
||||
|
{0x10,0x00,0x1E,0x00,0x11,0xE0,0x00,0x1C,0x00,0x70,0x13,0x80,0x1C,0x00,0x10,0x00},/*"V",54*/ |
||||
|
{0x1F,0xC0,0x10,0x3C,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x10,0x3C,0x1F,0xC0,0x00,0x00},/*"W",55*/ |
||||
|
{0x10,0x04,0x18,0x0C,0x16,0x34,0x01,0xC0,0x01,0xC0,0x16,0x34,0x18,0x0C,0x10,0x04},/*"X",56*/ |
||||
|
{0x10,0x00,0x1C,0x00,0x13,0x04,0x00,0xFC,0x13,0x04,0x1C,0x00,0x10,0x00,0x00,0x00},/*"Y",57*/ |
||||
|
{0x08,0x04,0x10,0x1C,0x10,0x64,0x10,0x84,0x13,0x04,0x1C,0x04,0x10,0x18,0x00,0x00},/*"Z",58*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x40,0x02,0x40,0x02,0x40,0x02,0x00,0x00},/*"[",59*/ |
||||
|
{0x00,0x00,0x30,0x00,0x0C,0x00,0x03,0x80,0x00,0x60,0x00,0x1C,0x00,0x03,0x00,0x00},/*"\",60*/ |
||||
|
{0x00,0x00,0x40,0x02,0x40,0x02,0x40,0x02,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00},/*"^",62*/ |
||||
|
{0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01},/*"_",63*/ |
||||
|
{0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/ |
||||
|
{0x00,0x00,0x00,0x98,0x01,0x24,0x01,0x44,0x01,0x44,0x01,0x44,0x00,0xFC,0x00,0x04},/*"a",65*/ |
||||
|
{0x10,0x00,0x1F,0xFC,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"b",66*/ |
||||
|
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00},/*"c",67*/ |
||||
|
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x11,0x08,0x1F,0xFC,0x00,0x04},/*"d",68*/ |
||||
|
{0x00,0x00,0x00,0xF8,0x01,0x44,0x01,0x44,0x01,0x44,0x01,0x44,0x00,0xC8,0x00,0x00},/*"e",69*/ |
||||
|
{0x00,0x00,0x01,0x04,0x01,0x04,0x0F,0xFC,0x11,0x04,0x11,0x04,0x11,0x00,0x18,0x00},/*"f",70*/ |
||||
|
{0x00,0x00,0x00,0xD6,0x01,0x29,0x01,0x29,0x01,0x29,0x01,0xC9,0x01,0x06,0x00,0x00},/*"g",71*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"h",72*/ |
||||
|
{0x00,0x00,0x01,0x04,0x19,0x04,0x19,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"i",73*/ |
||||
|
{0x00,0x00,0x00,0x03,0x00,0x01,0x01,0x01,0x19,0x01,0x19,0xFE,0x00,0x00,0x00,0x00},/*"j",74*/ |
||||
|
{0x10,0x04,0x1F,0xFC,0x00,0x24,0x00,0x40,0x01,0xB4,0x01,0x0C,0x01,0x04,0x00,0x00},/*"k",75*/ |
||||
|
{0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00},/*"l",76*/ |
||||
|
{0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC},/*"m",77*/ |
||||
|
{0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04},/*"n",78*/ |
||||
|
{0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00},/*"o",79*/ |
||||
|
{0x01,0x01,0x01,0xFF,0x00,0x85,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00},/*"p",80*/ |
||||
|
{0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x05,0x01,0xFF,0x00,0x01},/*"q",81*/ |
||||
|
{0x01,0x04,0x01,0x04,0x01,0xFC,0x00,0x84,0x01,0x04,0x01,0x00,0x01,0x80,0x00,0x00},/*"r",82*/ |
||||
|
{0x00,0x00,0x00,0xCC,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x24,0x01,0x98,0x00,0x00},/*"s",83*/ |
||||
|
{0x00,0x00,0x01,0x00,0x01,0x00,0x07,0xF8,0x01,0x04,0x01,0x04,0x00,0x00,0x00,0x00},/*"t",84*/ |
||||
|
{0x01,0x00,0x01,0xF8,0x00,0x04,0x00,0x04,0x00,0x04,0x01,0x08,0x01,0xFC,0x00,0x04},/*"u",85*/ |
||||
|
{0x01,0x00,0x01,0x80,0x01,0x70,0x00,0x0C,0x00,0x10,0x01,0x60,0x01,0x80,0x01,0x00},/*"v",86*/ |
||||
|
{0x01,0xF0,0x01,0x0C,0x00,0x30,0x01,0xC0,0x00,0x30,0x01,0x0C,0x01,0xF0,0x01,0x00},/*"w",87*/ |
||||
|
{0x00,0x00,0x01,0x04,0x01,0x8C,0x00,0x74,0x01,0x70,0x01,0x8C,0x01,0x04,0x00,0x00},/*"x",88*/ |
||||
|
{0x01,0x01,0x01,0x81,0x01,0x71,0x00,0x0E,0x00,0x18,0x01,0x60,0x01,0x80,0x01,0x00},/*"y",89*/ |
||||
|
{0x00,0x00,0x01,0x84,0x01,0x0C,0x01,0x34,0x01,0x44,0x01,0x84,0x01,0x0C,0x00,0x00},/*"z",90*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x3E,0xFC,0x40,0x02,0x40,0x02},/*"{",91*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/ |
||||
|
{0x00,0x00,0x40,0x02,0x40,0x02,0x3E,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/ |
||||
|
{0x00,0x00,0x60,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00},/*"~",94*/ |
||||
|
}; |
||||
|
|
||||
|
/* 24*24 ASICII字符集点阵 */ |
||||
|
const unsigned char asc2_2412[95][36]={ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x38,0x0F,0xFE,0x38,0x0F,0x80,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x06,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x31,0x00,0x00,0x06,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*""",2*/ |
||||
|
{0x00,0x00,0x00,0x00,0x61,0x80,0x00,0x67,0xF8,0x07,0xF9,0x80,0x00,0x61,0x80,0x00,0x61,0x80,0x00,0x61,0x80,0x00,0x61,0x80,0x00,0x67,0xF8,0x07,0xF9,0x80,0x00,0x61,0x80,0x00,0x00,0x00},/*"#",3*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0xE0,0x03,0xE0,0xF0,0x06,0x30,0x08,0x04,0x18,0x08,0x1F,0xFF,0xFE,0x04,0x0E,0x08,0x07,0x87,0xF0,0x03,0x81,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*"$",4*/ |
||||
|
{0x01,0xF0,0x00,0x06,0x0C,0x00,0x04,0x04,0x08,0x06,0x0C,0x70,0x01,0xF9,0xC0,0x00,0x0E,0x00,0x00,0x3B,0xE0,0x00,0xEC,0x18,0x07,0x08,0x08,0x04,0x0C,0x18,0x00,0x03,0xE0,0x00,0x00,0x00},/*"%",5*/ |
||||
|
{0x00,0x01,0xE0,0x00,0x07,0xF0,0x03,0xF8,0x18,0x04,0x1C,0x08,0x04,0x17,0x08,0x07,0xE1,0xD0,0x03,0xC0,0xE0,0x00,0x23,0xB0,0x00,0x3C,0x08,0x00,0x20,0x08,0x00,0x00,0x10,0x00,0x00,0x00},/*"&",6*/ |
||||
|
{0x00,0x00,0x00,0x01,0x00,0x00,0x31,0x00,0x00,0x32,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x07,0x80,0xF0,0x0C,0x00,0x18,0x10,0x00,0x04,0x20,0x00,0x02,0x00,0x00,0x00},/*"(",8*/ |
||||
|
{0x00,0x00,0x00,0x20,0x00,0x02,0x10,0x00,0x04,0x0C,0x00,0x18,0x07,0x80,0xF0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/ |
||||
|
{0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x66,0x00,0x00,0x66,0x00,0x00,0x3C,0x00,0x00,0x18,0x00,0x03,0xFF,0xC0,0x00,0x18,0x00,0x00,0x3C,0x00,0x00,0x66,0x00,0x00,0x66,0x00,0x00,0x42,0x00},/*"*",10*/ |
||||
|
{0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x01,0xFF,0xC0,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00},/*"+",11*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x31,0x00,0x00,0x32,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/ |
||||
|
{0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00},/*"-",13*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x1C,0x00,0x00,0x70,0x00,0x01,0x80,0x00,0x0E,0x00,0x00,0x38,0x00,0x00,0xC0,0x00,0x07,0x00,0x00,0x1C,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*"/",15*/ |
||||
|
{0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,0x04,0x00,0x08,0x06,0x00,0x18,0x03,0x80,0x70,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00},/*"0",16*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x08,0x01,0x00,0x08,0x01,0x00,0x08,0x03,0xFF,0xF8,0x07,0xFF,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",17*/ |
||||
|
{0x00,0x00,0x00,0x01,0xC0,0x38,0x02,0xC0,0x58,0x04,0x00,0x98,0x04,0x01,0x18,0x04,0x02,0x18,0x04,0x04,0x18,0x06,0x1C,0x18,0x03,0xF8,0x18,0x01,0xE0,0xF8,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",18*/ |
||||
|
{0x00,0x00,0x00,0x01,0xC0,0xE0,0x03,0xC0,0xF0,0x04,0x00,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x06,0x18,0x08,0x03,0xF4,0x18,0x01,0xE7,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",19*/ |
||||
|
{0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x0D,0x00,0x00,0x11,0x00,0x00,0x61,0x00,0x00,0x81,0x08,0x03,0x01,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x01,0x08,0x00,0x01,0x08,0x00,0x00,0x00},/*"4",20*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xFC,0xD0,0x06,0x08,0x08,0x06,0x10,0x08,0x06,0x10,0x08,0x06,0x10,0x08,0x06,0x18,0x38,0x06,0x0F,0xF0,0x06,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",21*/ |
||||
|
{0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x84,0x30,0x02,0x08,0x18,0x04,0x10,0x08,0x04,0x10,0x08,0x04,0x10,0x08,0x07,0x18,0x10,0x03,0x0F,0xF0,0x00,0x07,0xC0,0x00,0x00,0x00},/*"6",22*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x07,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0xF8,0x06,0x07,0xF8,0x06,0x18,0x00,0x06,0xE0,0x00,0x07,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00},/*"7",23*/ |
||||
|
{0x00,0x00,0x00,0x01,0xE1,0xE0,0x03,0xF7,0xF0,0x06,0x34,0x10,0x04,0x18,0x08,0x04,0x18,0x08,0x04,0x0C,0x08,0x04,0x0C,0x08,0x06,0x16,0x18,0x03,0xF3,0xF0,0x01,0xC1,0xE0,0x00,0x00,0x00},/*"8",24*/ |
||||
|
{0x00,0x00,0x00,0x00,0xF8,0x00,0x03,0xFC,0x30,0x03,0x06,0x38,0x04,0x02,0x08,0x04,0x02,0x08,0x04,0x02,0x08,0x04,0x04,0x10,0x03,0x08,0xF0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00},/*"9",25*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x38,0x00,0x70,0x38,0x00,0x70,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x1A,0x00,0x30,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x14,0x00,0x00,0x22,0x00,0x00,0x41,0x00,0x00,0x80,0x80,0x01,0x00,0x40,0x02,0x00,0x20,0x04,0x00,0x10,0x08,0x00,0x08,0x00,0x00,0x00},/*"<",28*/ |
||||
|
{0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x21,0x00,0x00,0x00,0x00},/*"=",29*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x04,0x00,0x10,0x02,0x00,0x20,0x01,0x00,0x40,0x00,0x80,0x80,0x00,0x41,0x00,0x00,0x22,0x00,0x00,0x14,0x00,0x00,0x08,0x00,0x00,0x00,0x00},/*">",30*/ |
||||
|
{0x00,0x00,0x00,0x03,0xC0,0x00,0x04,0xC0,0x00,0x04,0x00,0x00,0x08,0x00,0x38,0x08,0x0F,0x38,0x08,0x08,0x38,0x08,0x10,0x00,0x0C,0x30,0x00,0x07,0xE0,0x00,0x03,0xC0,0x00,0x00,0x00,0x00},/*"?",31*/ |
||||
|
{0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0xFF,0xE0,0x03,0x80,0x70,0x02,0x0F,0x10,0x06,0x70,0x88,0x04,0xC0,0x88,0x04,0x83,0x08,0x04,0x7F,0x88,0x02,0xC0,0x90,0x03,0x01,0x20,0x00,0xFE,0x40},/*"@",32*/ |
||||
|
{0x00,0x00,0x08,0x00,0x00,0x18,0x00,0x01,0xF8,0x00,0x3E,0x08,0x01,0xC2,0x00,0x07,0x02,0x00,0x07,0xE2,0x00,0x00,0xFE,0x00,0x00,0x1F,0xC8,0x00,0x01,0xF8,0x00,0x00,0x38,0x00,0x00,0x08},/*"A",33*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x06,0x18,0x08,0x03,0xF4,0x18,0x01,0xE7,0xF0,0x00,0x01,0xE0,0x00,0x00,0x00},/*"B",34*/ |
||||
|
{0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x02,0x00,0x18,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x10,0x06,0x00,0x20,0x07,0x80,0xC0,0x00,0x00,0x00},/*"C",35*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x18,0x02,0x00,0x10,0x03,0x80,0x70,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00},/*"D",36*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x08,0x08,0x04,0x3E,0x08,0x04,0x00,0x08,0x06,0x00,0x18,0x01,0x00,0x60,0x00,0x00,0x00},/*"E",37*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x00,0x04,0x08,0x00,0x04,0x08,0x00,0x04,0x3E,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00},/*"F",38*/ |
||||
|
{0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,0x04,0x02,0x08,0x04,0x02,0x08,0x02,0x03,0xF0,0x07,0x83,0xF0,0x00,0x02,0x00,0x00,0x02,0x00},/*"G",39*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x04,0x08,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08},/*"H",40*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"I",41*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x07,0x00,0x00,0x01,0x04,0x00,0x01,0x04,0x00,0x01,0x04,0x00,0x03,0x07,0xFF,0xFE,0x07,0xFF,0xFC,0x04,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00},/*"J",42*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x0C,0x08,0x00,0x18,0x00,0x00,0x3E,0x00,0x04,0xC7,0x80,0x05,0x03,0xC8,0x06,0x00,0xF8,0x04,0x00,0x38,0x04,0x00,0x18,0x00,0x00,0x08},/*"K",43*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x18,0x00,0x00,0x60,0x00,0x00,0x00},/*"L",44*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0x80,0x08,0x07,0xFC,0x00,0x00,0x7F,0xC0,0x00,0x03,0xF8,0x00,0x07,0xC0,0x00,0x78,0x00,0x07,0x80,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08},/*"M",45*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0x00,0x08,0x03,0xC0,0x00,0x00,0xE0,0x00,0x00,0x38,0x00,0x00,0x1E,0x00,0x00,0x07,0x00,0x00,0x01,0xC0,0x04,0x00,0xF0,0x07,0xFF,0xF8,0x04,0x00,0x00},/*"N",46*/ |
||||
|
{0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04,0x00,0x08,0x04,0x00,0x08,0x06,0x00,0x18,0x03,0x00,0x30,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00},/*"O",47*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x04,0x08,0x04,0x04,0x00,0x04,0x04,0x00,0x04,0x04,0x00,0x04,0x04,0x00,0x06,0x0C,0x00,0x03,0xF8,0x00,0x01,0xF0,0x00,0x00,0x00,0x00},/*"P",48*/ |
||||
|
{0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x88,0x04,0x00,0x88,0x04,0x00,0xC8,0x06,0x00,0x3C,0x03,0x00,0x3E,0x01,0xFF,0xE6,0x00,0x7F,0x84,0x00,0x00,0x00},/*"Q",49*/ |
||||
|
{0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x08,0x08,0x04,0x08,0x00,0x04,0x0C,0x00,0x04,0x0F,0x00,0x04,0x0B,0xC0,0x06,0x10,0xF0,0x03,0xF0,0x38,0x01,0xE0,0x08,0x00,0x00,0x08},/*"R",50*/ |
||||
|
{0x00,0x00,0x00,0x01,0xE0,0xF8,0x03,0xF0,0x30,0x06,0x30,0x10,0x04,0x18,0x08,0x04,0x18,0x08,0x04,0x0C,0x08,0x04,0x0C,0x08,0x02,0x06,0x18,0x02,0x07,0xF0,0x07,0x81,0xE0,0x00,0x00,0x00},/*"S",51*/ |
||||
|
{0x01,0x80,0x00,0x06,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x04,0x00,0x08,0x04,0x00,0x00,0x04,0x00,0x00,0x06,0x00,0x00,0x01,0x80,0x00},/*"T",52*/ |
||||
|
{0x04,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xF0,0x04,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x04,0x00,0x10,0x07,0xFF,0xE0,0x04,0x00,0x00},/*"U",53*/ |
||||
|
{0x04,0x00,0x00,0x06,0x00,0x00,0x07,0xE0,0x00,0x07,0xFE,0x00,0x04,0x1F,0xE0,0x00,0x01,0xF8,0x00,0x00,0x38,0x00,0x01,0xE0,0x04,0x3E,0x00,0x07,0xC0,0x00,0x06,0x00,0x00,0x04,0x00,0x00},/*"V",54*/ |
||||
|
{0x04,0x00,0x00,0x07,0xE0,0x00,0x07,0xFF,0xC0,0x04,0x1F,0xF8,0x00,0x07,0xC0,0x07,0xF8,0x00,0x07,0xFF,0x80,0x04,0x3F,0xF8,0x00,0x07,0xC0,0x04,0xF8,0x00,0x07,0x00,0x00,0x04,0x00,0x00},/*"W",55*/ |
||||
|
{0x00,0x00,0x00,0x04,0x00,0x08,0x06,0x00,0x18,0x07,0xC0,0x78,0x05,0xF1,0xC8,0x00,0x3E,0x00,0x00,0x1F,0x80,0x04,0x63,0xE8,0x07,0x80,0xF8,0x06,0x00,0x18,0x04,0x00,0x08,0x00,0x00,0x00},/*"X",56*/ |
||||
|
{0x04,0x00,0x00,0x06,0x00,0x00,0x07,0x80,0x00,0x07,0xE0,0x08,0x04,0x7C,0x08,0x00,0x1F,0xF8,0x00,0x07,0xF8,0x00,0x18,0x08,0x04,0xE0,0x08,0x07,0x00,0x00,0x06,0x00,0x00,0x04,0x00,0x00},/*"Y",57*/ |
||||
|
{0x00,0x00,0x00,0x01,0x00,0x08,0x06,0x00,0x38,0x04,0x00,0xF8,0x04,0x03,0xE8,0x04,0x0F,0x08,0x04,0x7C,0x08,0x05,0xF0,0x08,0x07,0xC0,0x08,0x07,0x00,0x18,0x04,0x00,0x60,0x00,0x00,0x00},/*"Z",58*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFE,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x00,0x00,0x00},/*"[",59*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x07,0x00,0x00,0x00,0xC0,0x00,0x00,0x38,0x00,0x00,0x06,0x00,0x00,0x01,0xC0,0x00,0x00,0x30,0x00,0x00,0x0E,0x00,0x00,0x01,0x00,0x00,0x00},/*"\",60*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x20,0x00,0x02,0x3F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x10,0x00,0x00,0x30,0x00,0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/ |
||||
|
{0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01},/*"_",63*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x19,0xF8,0x00,0x1B,0x18,0x00,0x22,0x08,0x00,0x26,0x08,0x00,0x24,0x08,0x00,0x24,0x10,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x18},/*"a",65*/ |
||||
|
{0x00,0x00,0x00,0x04,0x00,0x00,0x07,0xFF,0xF8,0x0F,0xFF,0xF0,0x00,0x18,0x18,0x00,0x10,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x18,0x00,0x1F,0xF0,0x00,0x0F,0xC0,0x00,0x00,0x00},/*"b",66*/ |
||||
|
{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x18,0x30,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x3C,0x08,0x00,0x1C,0x10,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00},/*"c",67*/ |
||||
|
{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x38,0x18,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x04,0x10,0x10,0x07,0xFF,0xF8,0x0F,0xFF,0xF0,0x00,0x00,0x10,0x00,0x00,0x00},/*"d",68*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x12,0x30,0x00,0x22,0x18,0x00,0x22,0x08,0x00,0x22,0x08,0x00,0x32,0x08,0x00,0x1E,0x10,0x00,0x0E,0x20,0x00,0x00,0x00},/*"e",69*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x01,0xFF,0xF8,0x03,0xFF,0xF8,0x06,0x20,0x08,0x04,0x20,0x08,0x04,0x20,0x08,0x07,0x20,0x00,0x03,0x00,0x00,0x00,0x00,0x00},/*"f",70*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x0E,0x6E,0x00,0x1F,0xF3,0x00,0x31,0xB1,0x00,0x20,0xB1,0x00,0x20,0xB1,0x00,0x31,0x91,0x00,0x1F,0x13,0x00,0x2E,0x1E,0x00,0x20,0x0E,0x00,0x30,0x00},/*"g",71*/ |
||||
|
{0x00,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x00},/*"h",72*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x06,0x3F,0xF8,0x06,0x3F,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"i",73*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x20,0x01,0x00,0x20,0x01,0x00,0x20,0x03,0x06,0x3F,0xFE,0x06,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"j",74*/ |
||||
|
{0x00,0x00,0x00,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x01,0x88,0x00,0x03,0x00,0x00,0x2F,0xC0,0x00,0x38,0xF8,0x00,0x20,0x38,0x00,0x20,0x08,0x00,0x00,0x08,0x00,0x00,0x00},/*"k",75*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x04,0x00,0x08,0x04,0x00,0x08,0x07,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00},/*"l",76*/ |
||||
|
{0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x00,0x08},/*"m",77*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x10,0x08,0x00,0x10,0x00,0x00,0x20,0x00,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0x08,0x00,0x00,0x00},/*"n",78*/ |
||||
|
{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x0F,0xF0,0x00,0x18,0x30,0x00,0x30,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x08,0x00,0x18,0x30,0x00,0x0F,0xF0,0x00,0x07,0xC0,0x00,0x00,0x00},/*"o",79*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x3F,0xFF,0x00,0x3F,0xFF,0x00,0x10,0x11,0x00,0x20,0x09,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x30,0x38,0x00,0x1F,0xF0,0x00,0x0F,0xC0,0x00,0x00,0x00},/*"p",80*/ |
||||
|
{0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xF0,0x00,0x38,0x18,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x09,0x00,0x10,0x11,0x00,0x1F,0xFF,0x00,0x3F,0xFF,0x00,0x00,0x01,0x00,0x00,0x00},/*"q",81*/ |
||||
|
{0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x08,0x08,0x00,0x10,0x08,0x00,0x20,0x08,0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x30,0x00,0x00,0x00,0x00},/*"r",82*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x78,0x00,0x1E,0x18,0x00,0x33,0x08,0x00,0x23,0x08,0x00,0x21,0x08,0x00,0x21,0x88,0x00,0x21,0x98,0x00,0x30,0xF0,0x00,0x38,0x60,0x00,0x00,0x00},/*"s",83*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0xFF,0xF0,0x03,0xFF,0xF8,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00},/*"t",84*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x3F,0xF0,0x00,0x7F,0xF8,0x00,0x00,0x18,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x20,0x10,0x00,0x3F,0xF8,0x00,0x7F,0xF0,0x00,0x00,0x10,0x00,0x00,0x00},/*"u",85*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x3C,0x00,0x00,0x3F,0x80,0x00,0x23,0xF0,0x00,0x00,0x78,0x00,0x00,0x70,0x00,0x23,0x80,0x00,0x3C,0x00,0x00,0x30,0x00,0x00,0x20,0x00},/*"v",86*/ |
||||
|
{0x00,0x20,0x00,0x00,0x3C,0x00,0x00,0x3F,0xE0,0x00,0x23,0xF8,0x00,0x00,0xE0,0x00,0x27,0x00,0x00,0x3E,0x00,0x00,0x3F,0xE0,0x00,0x21,0xF8,0x00,0x01,0xE0,0x00,0x3E,0x00,0x00,0x20,0x00},/*"w",87*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x20,0x08,0x00,0x38,0x38,0x00,0x3E,0x68,0x00,0x27,0x80,0x00,0x03,0xC8,0x00,0x2C,0xF8,0x00,0x38,0x38,0x00,0x20,0x18,0x00,0x20,0x08,0x00,0x00,0x00},/*"x",88*/ |
||||
|
{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x30,0x03,0x00,0x3C,0x01,0x00,0x3F,0x83,0x00,0x23,0xEC,0x00,0x00,0x70,0x00,0x23,0x80,0x00,0x3C,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"y",89*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x08,0x00,0x20,0x38,0x00,0x20,0xF8,0x00,0x23,0xE8,0x00,0x2F,0x88,0x00,0x3E,0x08,0x00,0x38,0x08,0x00,0x20,0x18,0x00,0x00,0x70,0x00,0x00,0x00},/*"z",90*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x14,0x00,0x1F,0xF7,0xFC,0x30,0x00,0x06,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00},/*"{",91*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x30,0x00,0x06,0x1F,0xF7,0xFC,0x00,0x14,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/ |
||||
|
{0x00,0x00,0x00,0x18,0x00,0x00,0x60,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x0C,0x00,0x00,0x10,0x00,0x00},/*"~",94*/ |
||||
|
}; |
||||
|
|
||||
|
/* 32*32 ASCII字符集点阵 */ |
||||
|
const unsigned char asc2_3216[95][64]={ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0xC0,0x07,0xFF,0xE1,0xE0,0x07,0xF0,0x01,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x01,0xC0,0x00,0x00,0x07,0x80,0x00,0x00,0x1F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1C,0x20,0x00,0x00,0x01,0xC0,0x00,0x00,0x07,0x80,0x00,0x00,0x1F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x18,0x0C,0x00,0x00,0x18,0x0C,0x00,0x00,0x18,0x0F,0xE0,0x00,0x1F,0xFC,0x00,0x03,0xF8,0x0C,0x00,0x00,0x18,0x0C,0x00,0x00,0x18,0x0C,0x00,0x00,0x18,0x0C,0x00,0x00,0x18,0x0C,0x00,0x00,0x18,0x0F,0xE0,0x00,0x1F,0xFC,0x00,0x03,0xF8,0x0C,0x00,0x00,0x18,0x0C,0x00,0x00,0x18,0x0C,0x00,0x00,0x00,0x00,0x00},/*"#",3*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x78,0x07,0xC0,0x00,0xFC,0x06,0x40,0x01,0x0E,0x00,0x20,0x03,0x07,0x00,0x20,0x02,0x03,0x80,0x20,0x0F,0xFF,0xFF,0xFC,0x02,0x01,0xC0,0x20,0x02,0x00,0xE0,0x60,0x01,0x30,0x70,0x40,0x01,0xF0,0x3F,0x80,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"$",4*/ |
||||
|
{0x00,0xFE,0x00,0x00,0x01,0xFF,0x00,0x00,0x03,0x01,0x80,0x00,0x02,0x00,0x80,0x60,0x03,0x01,0x81,0xC0,0x01,0xFF,0x07,0x00,0x00,0xFE,0x18,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0xBF,0x00,0x00,0x0C,0xFF,0xC0,0x00,0x71,0x80,0x60,0x01,0xC1,0x00,0x20,0x03,0x01,0x80,0x60,0x00,0x00,0xFF,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00},/*"%",5*/ |
||||
|
{0x00,0x00,0x1F,0x00,0x00,0x00,0x7F,0xC0,0x00,0xFC,0xC0,0xC0,0x01,0xFF,0x80,0x60,0x03,0x03,0xE0,0x20,0x02,0x02,0x78,0x20,0x02,0x06,0x1E,0x20,0x03,0xFC,0x07,0x40,0x01,0xF0,0x03,0x80,0x00,0x01,0x03,0xC0,0x00,0x01,0x1C,0x60,0x00,0x01,0xE0,0x20,0x00,0x01,0x00,0x20,0x00,0x01,0x00,0x40,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00},/*"&",6*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x1C,0x60,0x00,0x00,0x1C,0x40,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x3F,0xFF,0x00,0x00,0x78,0x07,0xC0,0x01,0xC0,0x00,0xE0,0x03,0x00,0x00,0x30,0x04,0x00,0x00,0x08,0x08,0x00,0x00,0x04,0x10,0x00,0x00,0x02,0x00,0x00,0x00,0x00},/*"(",8*/ |
||||
|
{0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x02,0x08,0x00,0x00,0x04,0x04,0x00,0x00,0x08,0x03,0x00,0x00,0x30,0x01,0xC0,0x00,0xE0,0x00,0x78,0x07,0xC0,0x00,0x3F,0xFF,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*")",9*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,0x00,0x00,0x0E,0x38,0x00,0x00,0x0E,0x38,0x00,0x00,0x06,0x30,0x00,0x00,0x03,0x60,0x00,0x00,0x61,0x43,0x80,0x00,0xFF,0xFF,0x80,0x00,0x61,0x43,0x00,0x00,0x03,0x60,0x00,0x00,0x06,0x30,0x00,0x00,0x0E,0x38,0x00,0x00,0x0E,0x38,0x00,0x00,0x0C,0x18,0x00,0x00,0x00,0x00,0x00},/*"*",10*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x7F,0xFF,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00},/*"+",11*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE2,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*",",12*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00},/*"-",13*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",14*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"/",15*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x00,0x00,0x7F,0xFF,0x00,0x00,0xF0,0x07,0x80,0x01,0x80,0x00,0xC0,0x03,0x00,0x00,0x60,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0x00,0x00,0x60,0x01,0x80,0x00,0xC0,0x00,0xE0,0x03,0x80,0x00,0x7F,0xFF,0x00,0x00,0x0F,0xF8,0x00,0x00,0x00,0x00,0x00},/*"0",16*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x20,0x00,0x80,0x00,0x20,0x00,0x80,0x00,0x20,0x00,0x80,0x00,0x60,0x01,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"1",17*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0xE0,0x00,0x98,0x01,0x60,0x01,0x00,0x02,0x60,0x02,0x00,0x04,0x60,0x02,0x00,0x08,0x60,0x02,0x00,0x10,0x60,0x02,0x00,0x20,0x60,0x02,0x00,0x40,0x60,0x03,0x00,0x80,0x60,0x01,0x83,0x00,0x60,0x01,0xFE,0x00,0xE0,0x00,0x7C,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"2",18*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x80,0x01,0xF0,0x07,0xC0,0x01,0x00,0x00,0x40,0x02,0x00,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x03,0x03,0x80,0x20,0x01,0x86,0x80,0x40,0x01,0xFC,0xC0,0xC0,0x00,0x78,0x7F,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"3",19*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x48,0x00,0x00,0x01,0x88,0x00,0x00,0x06,0x08,0x00,0x00,0x0C,0x08,0x10,0x00,0x30,0x08,0x10,0x00,0x40,0x08,0x10,0x01,0xFF,0xFF,0xF0,0x03,0xFF,0xFF,0xF0,0x03,0xFF,0xFF,0xF0,0x00,0x00,0x08,0x10,0x00,0x00,0x08,0x10,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00},/*"4",20*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x1F,0x86,0x40,0x03,0xE1,0x00,0x20,0x03,0x02,0x00,0x20,0x03,0x04,0x00,0x20,0x03,0x04,0x00,0x20,0x03,0x04,0x00,0x20,0x03,0x04,0x00,0x20,0x03,0x06,0x00,0x40,0x03,0x03,0x01,0xC0,0x03,0x01,0xFF,0x80,0x03,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"5",21*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x3F,0xFF,0x00,0x00,0x70,0xC3,0x80,0x00,0x81,0x80,0xC0,0x01,0x01,0x00,0x60,0x03,0x02,0x00,0x20,0x02,0x02,0x00,0x20,0x02,0x02,0x00,0x20,0x02,0x02,0x00,0x20,0x02,0x03,0x00,0x40,0x01,0xC1,0x80,0xC0,0x00,0xC0,0xFF,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00},/*"6",22*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x07,0xE0,0x03,0x00,0x3F,0xE0,0x03,0x01,0xC0,0x00,0x03,0x06,0x00,0x00,0x03,0x18,0x00,0x00,0x03,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"7",23*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x78,0x3F,0x80,0x00,0xFC,0x60,0xC0,0x01,0x8E,0xC0,0x40,0x03,0x07,0x80,0x20,0x02,0x03,0x00,0x20,0x02,0x01,0x80,0x20,0x02,0x01,0x80,0x20,0x02,0x01,0xC0,0x20,0x03,0x01,0xE0,0x40,0x01,0x86,0x70,0xC0,0x00,0xFC,0x3F,0x80,0x00,0x78,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"8",24*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0xFF,0x81,0xC0,0x01,0xC0,0xC1,0xC0,0x01,0x00,0x60,0x20,0x02,0x00,0x20,0x20,0x02,0x00,0x20,0x20,0x02,0x00,0x20,0x20,0x02,0x00,0x20,0x60,0x02,0x00,0x40,0xC0,0x01,0x00,0xC1,0x80,0x00,0xC1,0x8F,0x00,0x00,0x7F,0xFE,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"9",25*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xC0,0x00,0x07,0x81,0xE0,0x00,0x07,0x81,0xE0,0x00,0x03,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*":",26*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x66,0x00,0x06,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*";",27*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0x60,0x00,0x00,0x06,0x30,0x00,0x00,0x0C,0x18,0x00,0x00,0x18,0x0C,0x00,0x00,0x30,0x06,0x00,0x00,0x60,0x03,0x00,0x00,0xC0,0x01,0x80,0x01,0x00,0x00,0x40,0x02,0x00,0x00,0x20,0x04,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"<",28*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00},/*"=",29*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x01,0x00,0x00,0x40,0x00,0xC0,0x01,0x80,0x00,0x60,0x03,0x00,0x00,0x30,0x06,0x00,0x00,0x18,0x0C,0x00,0x00,0x0C,0x18,0x00,0x00,0x06,0x30,0x00,0x00,0x03,0x60,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*">",30*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x02,0x38,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x00,0x00,0xC0,0x04,0x00,0x79,0xE0,0x04,0x00,0x81,0xE0,0x04,0x01,0x00,0xC0,0x04,0x03,0x00,0x00,0x02,0x02,0x00,0x00,0x03,0x06,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00},/*"?",31*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x00,0x00,0x3F,0xFE,0x00,0x00,0x70,0x07,0x80,0x00,0xC0,0x00,0xC0,0x01,0x01,0xF8,0x40,0x03,0x07,0xFC,0x20,0x02,0x1E,0x04,0x20,0x02,0x30,0x08,0x20,0x02,0x20,0x30,0x20,0x02,0x3F,0xFC,0x20,0x01,0x3F,0x04,0x40,0x01,0x80,0x0C,0xC0,0x00,0xE0,0x31,0x80,0x00,0x1F,0xC2,0x00,0x00,0x00,0x00,0x00},/*"@",32*/ |
||||
|
{0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0xE0,0x00,0x00,0x3E,0x20,0x00,0x03,0xE0,0x20,0x00,0x3E,0x20,0x00,0x03,0xE0,0x20,0x00,0x03,0x80,0x20,0x00,0x07,0xFC,0x20,0x00,0x00,0x3F,0xE0,0x00,0x00,0x03,0xFE,0x20,0x00,0x00,0x3F,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"A",33*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x03,0x03,0x00,0x20,0x01,0x86,0x80,0x60,0x01,0xFC,0xC0,0xC0,0x00,0xF8,0x7F,0x80,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00},/*"B",34*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x3F,0xFF,0x00,0x00,0x70,0x07,0x80,0x00,0xC0,0x00,0xC0,0x01,0x00,0x00,0x40,0x03,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x01,0x00,0x00,0x40,0x01,0x80,0x00,0xC0,0x03,0xC0,0x01,0x80,0x00,0x30,0x06,0x00,0x00,0x00,0x00,0x00},/*"C",35*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0x00,0x00,0x60,0x01,0x00,0x00,0x40,0x01,0x80,0x00,0xC0,0x00,0xF0,0x07,0x80,0x00,0x7F,0xFE,0x00,0x00,0x0F,0xF8,0x00,0x00,0x00,0x00,0x00},/*"D",36*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x03,0x80,0x20,0x02,0x0F,0xE0,0x20,0x03,0x00,0x00,0x60,0x03,0xC0,0x00,0xE0,0x00,0x60,0x03,0x00,0x00,0x00,0x00,0x00},/*"E",37*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x00,0x02,0x01,0x00,0x00,0x02,0x01,0x00,0x00,0x02,0x01,0x00,0x00,0x02,0x03,0x80,0x00,0x03,0x0F,0xE0,0x00,0x03,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x60,0x00,0x00},/*"F",38*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x3F,0xFE,0x00,0x00,0x70,0x07,0x80,0x01,0xC0,0x01,0xC0,0x01,0x00,0x00,0x40,0x03,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x01,0x00,0x20,0x20,0x01,0x00,0x20,0x40,0x03,0xC0,0x3F,0x80,0x00,0x30,0x3F,0x80,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00},/*"G",39*/ |
||||
|
{0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x80,0x20,0x02,0x00,0x80,0x20,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x80,0x20,0x02,0x00,0x80,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"H",40*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"I",41*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x01,0x02,0x00,0x00,0x01,0x02,0x00,0x00,0x03,0x02,0x00,0x00,0x06,0x03,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xF8,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"J",42*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0xC0,0x20,0x02,0x01,0x00,0x20,0x00,0x07,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x30,0xF8,0x00,0x02,0x60,0x3E,0x20,0x03,0x80,0x0F,0x20,0x03,0x00,0x03,0xE0,0x02,0x00,0x00,0xE0,0x02,0x00,0x00,0x20,0x00,0x00,0x00,0x20},/*"K",43*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00},/*"L",44*/ |
||||
|
{0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xE0,0x00,0x20,0x03,0xFF,0x00,0x20,0x00,0x1F,0xF0,0x00,0x00,0x01,0xFF,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1E,0x00,0x00,0x03,0xE0,0x00,0x00,0x3E,0x00,0x20,0x03,0xE0,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20},/*"M",45*/ |
||||
|
{0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0x80,0x00,0x20,0x03,0xF0,0x00,0x20,0x00,0xFC,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x7C,0x00,0x02,0x00,0x1F,0x80,0x02,0x00,0x07,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"N",46*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x00,0x00,0x3F,0xFE,0x00,0x00,0xF0,0x07,0x80,0x01,0x80,0x00,0xC0,0x01,0x00,0x00,0x40,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x01,0x00,0x00,0x40,0x01,0x80,0x00,0xC0,0x00,0xF0,0x03,0x80,0x00,0x3F,0xFE,0x00,0x00,0x0F,0xF8,0x00,0x00,0x00,0x00,0x00},/*"O",47*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x80,0x20,0x02,0x00,0x80,0x20,0x02,0x00,0x80,0x00,0x02,0x00,0x80,0x00,0x02,0x00,0x80,0x00,0x02,0x00,0x80,0x00,0x03,0x01,0x80,0x00,0x01,0x83,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00},/*"P",48*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x00,0x00,0x7F,0xFF,0x00,0x00,0xF0,0x03,0x80,0x01,0x80,0x01,0xC0,0x01,0x00,0x06,0x40,0x02,0x00,0x04,0x20,0x02,0x00,0x04,0x20,0x02,0x00,0x06,0x20,0x02,0x00,0x03,0xE0,0x01,0x00,0x00,0xF8,0x01,0x80,0x00,0x5C,0x00,0xE0,0x03,0x8C,0x00,0x3F,0xFF,0x0C,0x00,0x0F,0xFC,0x18,0x00,0x00,0x00,0x00},/*"Q",49*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x01,0x00,0x20,0x02,0x01,0x00,0x20,0x02,0x01,0x80,0x00,0x02,0x01,0xE0,0x00,0x02,0x01,0xFC,0x00,0x03,0x03,0x3F,0x80,0x01,0x86,0x07,0xE0,0x01,0xFC,0x00,0xE0,0x00,0xF8,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"R",50*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x06,0x00,0x00,0xFE,0x01,0xE0,0x01,0x86,0x00,0xC0,0x03,0x03,0x00,0x40,0x02,0x03,0x00,0x20,0x02,0x01,0x80,0x20,0x02,0x01,0x80,0x20,0x02,0x01,0xC0,0x20,0x02,0x00,0xC0,0x20,0x01,0x00,0xE0,0x60,0x01,0x80,0x70,0xC0,0x03,0xE0,0x3F,0x80,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00},/*"S",51*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00},/*"T",52*/ |
||||
|
{0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xC0,0x02,0x00,0x00,0x40,0x02,0x00,0x00,0x60,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x40,0x02,0x00,0x00,0x80,0x03,0xFF,0xFF,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"U",53*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFC,0x00,0x00,0x02,0x3F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x78,0x00,0x02,0x03,0xC0,0x00,0x02,0x3C,0x00,0x00,0x03,0xC0,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00},/*"V",54*/ |
||||
|
{0x02,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFF,0x80,0x00,0x02,0x3F,0xFE,0x00,0x02,0x00,0x7F,0xE0,0x00,0x00,0x0F,0x00,0x02,0x00,0xF0,0x00,0x03,0xEF,0x00,0x00,0x03,0xFF,0x80,0x00,0x02,0x0F,0xFE,0x00,0x00,0x00,0x3F,0xE0,0x00,0x00,0x1F,0x00,0x02,0x07,0xE0,0x00,0x03,0xF8,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00},/*"W",55*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0x80,0x00,0xE0,0x03,0xF0,0x03,0x20,0x02,0xFC,0x0C,0x20,0x02,0x1F,0x30,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xF0,0x00,0x02,0x18,0x7C,0x00,0x02,0x60,0x1F,0x20,0x03,0x80,0x03,0xE0,0x02,0x00,0x00,0xE0,0x02,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"X",56*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x02,0x3E,0x00,0x20,0x02,0x0F,0xC0,0x20,0x00,0x01,0xFF,0xE0,0x00,0x00,0x7F,0xE0,0x00,0x03,0x80,0x20,0x02,0x1C,0x00,0x20,0x02,0x70,0x00,0x00,0x03,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"Y",57*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0xE0,0x03,0x80,0x03,0xE0,0x03,0x00,0x0F,0xA0,0x02,0x00,0x3E,0x20,0x02,0x00,0xF8,0x20,0x02,0x03,0xE0,0x20,0x02,0x0F,0x80,0x20,0x02,0x3E,0x00,0x20,0x02,0x78,0x00,0x20,0x03,0xE0,0x00,0x60,0x03,0x80,0x00,0xE0,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"Z",58*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFC,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"[",59*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"\",60*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x1F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"]",61*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/ |
||||
|
{0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01},/*"_",63*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x01,0x8F,0xC0,0x00,0x03,0x8C,0x60,0x00,0x06,0x18,0x20,0x00,0x04,0x10,0x20,0x00,0x04,0x10,0x20,0x00,0x04,0x20,0x20,0x00,0x04,0x20,0x40,0x00,0x06,0x20,0x40,0x00,0x03,0xFF,0xC0,0x00,0x01,0xFF,0xE0,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00},/*"a",65*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x00,0x01,0x80,0xC0,0x00,0x02,0x00,0x60,0x00,0x02,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x06,0x00,0x40,0x00,0x03,0x00,0xC0,0x00,0x01,0xFF,0x80,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00},/*"b",66*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x01,0xFF,0x80,0x00,0x03,0x81,0xC0,0x00,0x02,0x00,0x40,0x00,0x06,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x06,0x00,0x20,0x00,0x03,0xC0,0x40,0x00,0x01,0xC0,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"c",67*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x01,0xFF,0x80,0x00,0x03,0x80,0xC0,0x00,0x06,0x00,0x60,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x02,0x04,0x00,0x40,0x02,0x02,0x00,0x80,0x03,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00},/*"d",68*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x01,0xFF,0x80,0x00,0x03,0x11,0xC0,0x00,0x02,0x10,0x40,0x00,0x04,0x10,0x60,0x00,0x04,0x10,0x20,0x00,0x04,0x10,0x20,0x00,0x04,0x10,0x20,0x00,0x06,0x10,0x20,0x00,0x03,0x10,0x40,0x00,0x01,0xF0,0xC0,0x00,0x00,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"e",69*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x7F,0xFF,0xE0,0x01,0xFF,0xFF,0xE0,0x01,0x04,0x00,0x20,0x03,0x04,0x00,0x20,0x02,0x04,0x00,0x20,0x02,0x04,0x00,0x20,0x02,0x04,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00},/*"f",70*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0xE3,0x3E,0x00,0x03,0xFF,0xC2,0x00,0x02,0x0C,0xC3,0x00,0x04,0x04,0xC1,0x00,0x04,0x04,0xC1,0x00,0x04,0x04,0xC1,0x00,0x04,0x04,0xC1,0x00,0x06,0x0C,0xC1,0x00,0x03,0xF8,0xC3,0x00,0x05,0xF0,0x62,0x00,0x06,0x00,0x7E,0x00,0x06,0x00,0x3C,0x00,0x00,0x00,0x00},/*"g",71*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xE0,0x00,0x01,0x00,0x20,0x00,0x02,0x00,0x20,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x06,0x00,0x20,0x00,0x03,0xFF,0xE0,0x00,0x01,0xFF,0xE0,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20},/*"h",72*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x03,0x87,0xFF,0xE0,0x03,0x8F,0xFF,0xE0,0x03,0x80,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"i",73*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x03,0x00,0x04,0x00,0x06,0x03,0x87,0xFF,0xFC,0x03,0x8F,0xFF,0xF8,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"j",74*/ |
||||
|
{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xE0,0x00,0x00,0x08,0x20,0x00,0x00,0x10,0x20,0x00,0x00,0x30,0x00,0x00,0x00,0xFC,0x00,0x00,0x05,0x8E,0x00,0x00,0x07,0x07,0xA0,0x00,0x06,0x01,0xE0,0x00,0x04,0x00,0xE0,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"k",75*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x03,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"l",76*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xE0,0x00,0x02,0x00,0x20,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x07,0xFF,0xE0,0x00,0x03,0xFF,0xE0,0x00,0x02,0x00,0x20,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x07,0xFF,0xE0,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"m",77*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xE0,0x00,0x01,0x00,0x20,0x00,0x02,0x00,0x20,0x00,0x02,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x06,0x00,0x20,0x00,0x03,0xFF,0xE0,0x00,0x01,0xFF,0xE0,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20},/*"n",78*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xFF,0x80,0x00,0x03,0x81,0xC0,0x00,0x02,0x00,0x40,0x00,0x06,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x06,0x00,0x20,0x00,0x02,0x00,0x40,0x00,0x03,0x81,0xC0,0x00,0x01,0xFF,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00},/*"o",79*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x01,0x00,0x07,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0x00,0x01,0x00,0xC1,0x00,0x02,0x00,0x41,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x06,0x00,0x40,0x00,0x03,0x01,0xC0,0x00,0x01,0xFF,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00},/*"p",80*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x01,0xFF,0x80,0x00,0x03,0x80,0xC0,0x00,0x02,0x00,0x60,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x02,0x00,0x41,0x00,0x03,0x00,0xC1,0x00,0x03,0xFF,0xFF,0x00,0x07,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01},/*"q",81*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x0F,0xFF,0xE0,0x00,0x0F,0xFF,0xE0,0x00,0x00,0xC0,0x20,0x00,0x01,0x00,0x20,0x00,0x02,0x00,0x20,0x00,0x06,0x00,0x20,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00},/*"r",82*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x01,0xC0,0xE0,0x00,0x03,0xE0,0x40,0x00,0x06,0x30,0x20,0x00,0x04,0x30,0x20,0x00,0x04,0x18,0x20,0x00,0x04,0x18,0x20,0x00,0x04,0x18,0x20,0x00,0x04,0x0C,0x20,0x00,0x02,0x0C,0x60,0x00,0x03,0x07,0xC0,0x00,0x07,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"s",83*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x1F,0xFF,0x80,0x00,0xFF,0xFF,0xC0,0x00,0x04,0x00,0x60,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x40,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"t",84*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x07,0xFF,0x80,0x00,0x0F,0xFF,0xC0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x40,0x00,0x04,0x00,0x80,0x00,0x07,0xFF,0xE0,0x00,0x0F,0xFF,0xC0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40},/*"u",85*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x04,0xFE,0x00,0x00,0x04,0x1F,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x1C,0x00,0x00,0x04,0x60,0x00,0x00,0x07,0x80,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"v",86*/ |
||||
|
{0x00,0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xFC,0x00,0x00,0x04,0x3F,0x80,0x00,0x00,0x03,0xE0,0x00,0x04,0x0F,0x80,0x00,0x06,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xFF,0x80,0x00,0x04,0x0F,0xE0,0x00,0x00,0x03,0x80,0x00,0x04,0x3C,0x00,0x00,0x07,0xC0,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00},/*"w",87*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x20,0x00,0x04,0x00,0x60,0x00,0x07,0x00,0xE0,0x00,0x07,0x83,0x20,0x00,0x07,0xE6,0x00,0x00,0x04,0xF8,0x00,0x00,0x00,0x3C,0x00,0x00,0x04,0x5E,0x20,0x00,0x05,0x87,0xA0,0x00,0x06,0x01,0xE0,0x00,0x04,0x00,0x60,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00},/*"x",88*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x03,0x00,0x07,0x00,0x03,0x00,0x07,0xE0,0x01,0x00,0x04,0xF8,0x01,0x00,0x04,0x1F,0x02,0x00,0x00,0x07,0xFC,0x00,0x00,0x00,0xE0,0x00,0x00,0x07,0x00,0x00,0x04,0x38,0x00,0x00,0x07,0xC0,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00},/*"y",89*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x60,0x00,0x06,0x00,0xE0,0x00,0x04,0x03,0xE0,0x00,0x04,0x07,0xA0,0x00,0x04,0x0E,0x20,0x00,0x04,0x3C,0x20,0x00,0x04,0x70,0x20,0x00,0x05,0xE0,0x20,0x00,0x07,0x80,0x20,0x00,0x07,0x00,0x60,0x00,0x04,0x00,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"z",90*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x40,0x00,0x07,0xFE,0x3F,0xF8,0x08,0x00,0x00,0x04,0x10,0x00,0x00,0x02,0x10,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"{",91*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"|",92*/ |
||||
|
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x02,0x10,0x00,0x00,0x02,0x08,0x00,0x00,0x04,0x07,0xFE,0x3F,0xF8,0x00,0x01,0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/ |
||||
|
{0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/ |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
#endif /* DRIVERS_INCLUDE_LCDFONT_H_ */ |
||||
@ -0,0 +1,129 @@ |
|||||
|
/*
|
||||
|
* Copyright (c) 2006-2021, RT-Thread Development Team |
||||
|
* |
||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||
|
* |
||||
|
* Change Logs: |
||||
|
* Date Author Notes |
||||
|
* 2025-12-06 Administrator the first version |
||||
|
*/ |
||||
|
#ifndef DRIVERS_INCLUDE_LTDC_H_ |
||||
|
#define DRIVERS_INCLUDE_LTDC_H_ |
||||
|
|
||||
|
#include <rtthread.h> |
||||
|
#include <rtdevice.h> |
||||
|
#include <board.h> |
||||
|
#include <drivers/pin.h> |
||||
|
#include "stm32h7xx_hal.h" |
||||
|
|
||||
|
|
||||
|
/* 选择是否使用8寸800X1280RGB屏
|
||||
|
* 0: 没有使用8寸RGB屏 |
||||
|
* 1: 使用8寸RGB屏 |
||||
|
*/ |
||||
|
#define RGB_80_8001280 0 /* 默认不使用8寸800X1280RGB屏 */ |
||||
|
|
||||
|
|
||||
|
/* LCD LTDC重要参数集 */ |
||||
|
typedef struct |
||||
|
{ |
||||
|
uint32_t pwidth; /* LTDC面板的宽度,固定参数,不随显示方向改变,如果为0,说明没有任何RGB屏接入 */ |
||||
|
uint32_t pheight; /* LTDC面板的高度,固定参数,不随显示方向改变 */ |
||||
|
uint16_t hsw; /* 水平同步宽度 */ |
||||
|
uint16_t vsw; /* 垂直同步宽度 */ |
||||
|
uint16_t hbp; /* 水平后廊 */ |
||||
|
uint16_t vbp; /* 垂直后廊 */ |
||||
|
uint16_t hfp; /* 水平前廊 */ |
||||
|
uint16_t vfp; /* 垂直前廊 */ |
||||
|
uint8_t activelayer; /* 当前层编号:0/1 */ |
||||
|
uint8_t dir; /* 0,竖屏;1,横屏; */ |
||||
|
uint16_t width; /* LTDC宽度 */ |
||||
|
uint16_t height; /* LTDC高度 */ |
||||
|
uint32_t pixsize; /* 每个像素所占字节数 */ |
||||
|
uint8_t pixformat; /* 颜色像素格式 */ |
||||
|
}_ltdc_dev; |
||||
|
|
||||
|
extern _ltdc_dev lcdltdc; /* 管理LCD LTDC参数 */ |
||||
|
extern LTDC_HandleTypeDef g_ltdc_handle; /* LTDC句柄 */ |
||||
|
extern DMA2D_HandleTypeDef g_dma2d_handle; /* DMA2D句柄 */ |
||||
|
|
||||
|
|
||||
|
#define LTDC_PIXFORMAT_ARGB8888 0X00 /* ARGB8888格式 */ |
||||
|
#define LTDC_PIXFORMAT_RGB888 0X01 /* RGB888格式 */ |
||||
|
#define LTDC_PIXFORMAT_RGB565 0X02 /* RGB565格式 */ |
||||
|
#define LTDC_PIXFORMAT_ARGB1555 0X03 /* ARGB1555格式 */ |
||||
|
#define LTDC_PIXFORMAT_ARGB4444 0X04 /* ARGB4444格式 */ |
||||
|
#define LTDC_PIXFORMAT_L8 0X05 /* L8格式 */ |
||||
|
#define LTDC_PIXFORMAT_AL44 0X06 /* AL44格式 */ |
||||
|
#define LTDC_PIXFORMAT_AL88 0X07 /* AL88格式 */ |
||||
|
|
||||
|
/******************************************************************************************/ |
||||
|
/* LTDC_DE/VSYNC/HSYNC/CLK/BL/RST 引脚 定义
|
||||
|
* LTDC_R0~R7, G0~G7, B0~B7,由于引脚太多,就不在这里定义了,直接在ltcd_init里面修改.所以在移植的时候, |
||||
|
* 除了改这6个IO口, 还得改ltcd_init里面的R0~R7, G0~G7, B0~B7所在的IO口. |
||||
|
*/ |
||||
|
|
||||
|
#define LTDC_DE_GPIO_PORT GPIOF |
||||
|
#define LTDC_DE_GPIO_PIN GPIO_PIN_10 |
||||
|
#define LTDC_DE_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOF_CLK_ENABLE(); }while(0) /* 所在IO口时钟使能 */ |
||||
|
|
||||
|
#define LTDC_VSYNC_GPIO_PORT GPIOI |
||||
|
#define LTDC_VSYNC_GPIO_PIN GPIO_PIN_9 |
||||
|
#define LTDC_VSYNC_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOI_CLK_ENABLE(); }while(0) /* 所在IO口时钟使能 */ |
||||
|
|
||||
|
#define LTDC_HSYNC_GPIO_PORT GPIOI |
||||
|
#define LTDC_HSYNC_GPIO_PIN GPIO_PIN_10 |
||||
|
#define LTDC_HSYNC_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOI_CLK_ENABLE(); }while(0) /* 所在IO口时钟使能 */ |
||||
|
|
||||
|
#define LTDC_CLK_GPIO_PORT GPIOG |
||||
|
#define LTDC_CLK_GPIO_PIN GPIO_PIN_7 |
||||
|
#define LTDC_CLK_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOG_CLK_ENABLE(); }while(0) /* 所在IO口时钟使能 */ |
||||
|
|
||||
|
#define LTDC_BL_GPIO_PORT GPIOD |
||||
|
#define LTDC_BL_GPIO_PIN GPIO_PIN_12 |
||||
|
#define LTDC_BL_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOD_CLK_ENABLE(); }while(0) /* 所在IO口时钟使能 */ |
||||
|
|
||||
|
#define LTDC_RST_GPIO_PORT GPIOD |
||||
|
#define LTDC_RST_GPIO_PIN GPIO_PIN_11 |
||||
|
#define LTDC_RST_GPIO_CLK_ENABLE() do{ __HAL_RCC_GPIOD_CLK_ENABLE(); }while(0) /* 所在IO口时钟使能 */ |
||||
|
|
||||
|
|
||||
|
/* 定义颜色像素格式,一般用RGB565 */ |
||||
|
#define LTDC_PIXFORMAT LTDC_PIXFORMAT_RGB565 |
||||
|
|
||||
|
/* 定义默认背景层颜色 */ |
||||
|
#define LTDC_BACKLAYERCOLOR 0X00000000 |
||||
|
|
||||
|
/* LTDC帧缓冲区首地址,这里定义在SDRAM里面. */ |
||||
|
#define LTDC_FRAME_BUF_ADDR 0XC0000000 |
||||
|
|
||||
|
/* LTDC背光控制 */ |
||||
|
#define LTDC_BL(x) do{ x ? \ |
||||
|
HAL_GPIO_WritePin(LTDC_BL_GPIO_PORT, LTDC_BL_GPIO_PIN, GPIO_PIN_SET) : \ |
||||
|
HAL_GPIO_WritePin(LTDC_BL_GPIO_PORT, LTDC_BL_GPIO_PIN, GPIO_PIN_RESET); \ |
||||
|
}while(0) |
||||
|
|
||||
|
/* LTDC复位引脚 */ |
||||
|
#define LTDC_RST(x) do{ x ? \ |
||||
|
HAL_GPIO_WritePin(LTDC_RST_GPIO_PORT, LTDC_RST_GPIO_PIN, GPIO_PIN_SET) : \ |
||||
|
HAL_GPIO_WritePin(LTDC_RST_GPIO_PORT, LTDC_RST_GPIO_PIN, GPIO_PIN_RESET); \ |
||||
|
}while(0) |
||||
|
|
||||
|
/******************************************************************************************/ |
||||
|
|
||||
|
void ltdc_switch(uint8_t sw); /* LTDC开关 */ |
||||
|
void ltdc_layer_switch(uint8_t layerx, uint8_t sw); /* 层开关 */ |
||||
|
void ltdc_select_layer(uint8_t layerx); /* 层选择 */ |
||||
|
void ltdc_display_dir(uint8_t dir); /* LTDC显示方向设置 */ |
||||
|
void ltdc_draw_point(uint16_t x, uint16_t y, uint32_t color); /* LTDC画点函数 */ |
||||
|
uint32_t ltdc_read_point(uint16_t x, uint16_t y); /* LTDC读点函数 */ |
||||
|
void ltdc_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint32_t color); /* 矩形单色填充, DMA2D填充 */ |
||||
|
void ltdc_color_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t *color); /* 矩形彩色填充, DMA2D填充 */ |
||||
|
void ltdc_clear(uint32_t color); /* LTDC清屏函数 */ |
||||
|
uint8_t ltdc_clk_set(uint32_t pll3n, uint32_t pll3m, uint32_t pll3r); /* LTDC时钟配置 */ |
||||
|
void ltdc_layer_window_config(uint8_t layerx, uint16_t sx, uint16_t sy, uint16_t width, uint16_t height); /* LTDC层窗口设置 */ |
||||
|
void ltdc_layer_parameter_config(uint8_t layerx, uint32_t bufaddr, uint8_t pixformat, uint8_t alpha, uint8_t alpha0, uint8_t bfac1, uint8_t bfac2, uint32_t bkcolor); /* LTDC层基本参数设置 */ |
||||
|
uint16_t ltdc_panelid_read(void); /* LTDC 面板ID读取函数 */ |
||||
|
int ltdc_init(void); /* LTDC初始化函数 */ |
||||
|
|
||||
|
#endif /* DRIVERS_INCLUDE_LTDC_H_ */ |
||||
@ -0,0 +1,113 @@ |
|||||
|
/*
|
||||
|
* Copyright (c) 2006-2021, RT-Thread Development Team |
||||
|
* |
||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||
|
* |
||||
|
* Change Logs: |
||||
|
* Date Author Notes |
||||
|
* 2025-12-06 Administrator the first version |
||||
|
*/ |
||||
|
/* lcd.c *//* lcd.c */ |
||||
|
#include "lcd.h" |
||||
|
#include "lcdfont.h" // 确保该文件存在,否则注释掉字体相关函数 |
||||
|
#include <string.h> |
||||
|
|
||||
|
uint32_t g_point_color = RED; |
||||
|
uint32_t g_back_color = WHITE; |
||||
|
_lcd_dev lcddev; |
||||
|
|
||||
|
void lcd_init(void) { |
||||
|
lcddev.id = 0x7016; // 模拟 ID
|
||||
|
|
||||
|
rt_kprintf("LCD ID:%x\r\n", lcddev.id); |
||||
|
|
||||
|
if (lcdltdc.pwidth != 0) { |
||||
|
lcd_display_dir(1); // 横屏
|
||||
|
} |
||||
|
|
||||
|
lcd_clear(WHITE); |
||||
|
lcd_rgb_test(); |
||||
|
} |
||||
|
//INIT_APP_EXPORT(lcd_init);
|
||||
|
|
||||
|
void lcd_rgb_test(void) |
||||
|
{ |
||||
|
rt_kprintf("Starting LCD RGB flash test...\n"); |
||||
|
|
||||
|
for (int cycle = 0; cycle < 10; cycle++) { |
||||
|
lcd_clear(RED); // 全屏红色
|
||||
|
rt_thread_mdelay(500); |
||||
|
|
||||
|
lcd_clear(GREEN); // 全屏绿色
|
||||
|
rt_thread_mdelay(500); |
||||
|
|
||||
|
lcd_clear(BLUE); // 全屏蓝色
|
||||
|
rt_thread_mdelay(500); |
||||
|
} |
||||
|
|
||||
|
lcd_clear(WHITE); // 最后恢复白色
|
||||
|
rt_kprintf("LCD RGB test finished.\n"); |
||||
|
} |
||||
|
|
||||
|
void lcd_display_dir(uint8_t dir) { |
||||
|
lcddev.dir = dir; |
||||
|
ltdc_display_dir(dir); |
||||
|
lcddev.width = lcdltdc.width; |
||||
|
lcddev.height = lcdltdc.height; |
||||
|
} |
||||
|
|
||||
|
void lcd_clear(uint32_t color) { |
||||
|
if (lcdltdc.pwidth != 0) { |
||||
|
ltdc_clear(color); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void lcd_draw_point(uint16_t x, uint16_t y, uint32_t color) { |
||||
|
if (lcdltdc.pwidth != 0) { |
||||
|
ltdc_draw_point(x, y, color); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void lcd_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint32_t color) { |
||||
|
if (lcdltdc.pwidth != 0) { |
||||
|
ltdc_fill(sx, sy, ex, ey, color); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// === 最小实现:避免编译错误 ===
|
||||
|
void lcd_draw_line(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint32_t color) { |
||||
|
// 简单 Bresenham 算法(可选)
|
||||
|
lcd_draw_point(x1, y1, color); |
||||
|
lcd_draw_point(x2, y2, color); |
||||
|
} |
||||
|
|
||||
|
void lcd_draw_rectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint32_t color) { |
||||
|
lcd_draw_line(x1, y1, x2, y1, color); |
||||
|
lcd_draw_line(x1, y2, x2, y2, color); |
||||
|
lcd_draw_line(x1, y1, x1, y2, color); |
||||
|
lcd_draw_line(x2, y1, x2, y2, color); |
||||
|
} |
||||
|
|
||||
|
void lcd_draw_circle(uint16_t x0, uint16_t y0, uint8_t r, uint32_t color) { |
||||
|
// 空实现或简单点
|
||||
|
lcd_draw_point(x0, y0, color); |
||||
|
} |
||||
|
|
||||
|
void lcd_fill_circle(uint16_t x, uint16_t y, uint16_t r, uint32_t color) { |
||||
|
lcd_draw_point(x, y, color); |
||||
|
} |
||||
|
|
||||
|
void lcd_show_char(uint16_t x, uint16_t y, char chr, uint8_t size, uint8_t mode, uint32_t color) { |
||||
|
// 若无字体,跳过
|
||||
|
} |
||||
|
|
||||
|
void lcd_show_num(uint16_t x, uint16_t y, uint32_t num, uint8_t len, uint8_t size, uint32_t color) {} |
||||
|
void lcd_show_xnum(uint16_t x, uint16_t y, uint32_t num, uint8_t len, uint8_t size, uint8_t mode, uint32_t color) {} |
||||
|
void lcd_show_string(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t size, char *p, uint32_t color) {} |
||||
|
|
||||
|
// 工具函数(若未使用可删除)
|
||||
|
static uint32_t lcd_pow(uint8_t m, uint8_t n) { |
||||
|
uint32_t result = 1; |
||||
|
while (n--) result *= m; |
||||
|
return result; |
||||
|
} |
||||
@ -0,0 +1,655 @@ |
|||||
|
/*
|
||||
|
* Copyright (c) 2006-2021, RT-Thread Development Team |
||||
|
* |
||||
|
* SPDX-License-Identifier: Apache-2.0 |
||||
|
* |
||||
|
* Change Logs: |
||||
|
* Date Author Notes |
||||
|
* 2025-12-06 Administrator the first version |
||||
|
* 2025-12-07 Qwen 使用 RT-Thread 内存池替代静态帧缓存,修复 rt_mp_create 参数错误 |
||||
|
*/ |
||||
|
|
||||
|
/* ltdc.c */ |
||||
|
#include "ltdc.h" |
||||
|
#include "lcd.h" |
||||
|
#include <string.h> |
||||
|
#include <rtthread.h> |
||||
|
#include <rthw.h> |
||||
|
|
||||
|
LTDC_HandleTypeDef g_ltdc_handle; /* LTDC句柄 */ |
||||
|
DMA2D_HandleTypeDef g_dma2d_handle; /* DMA2D句柄 */ |
||||
|
|
||||
|
/* 移除原始静态帧缓存数组定义 */ |
||||
|
|
||||
|
#define MAX_FRAME_WIDTH 1280 |
||||
|
#define MAX_FRAME_HEIGHT 800 |
||||
|
|
||||
|
#if LTDC_PIXFORMAT == LTDC_PIXFORMAT_ARGB8888 || LTDC_PIXFORMAT == LTDC_PIXFORMAT_RGB888 |
||||
|
#define BYTES_PER_PIXEL 4 |
||||
|
#else |
||||
|
#define BYTES_PER_PIXEL 2 |
||||
|
#endif |
||||
|
|
||||
|
#define FRAME_BUF_SIZE (MAX_FRAME_WIDTH * MAX_FRAME_HEIGHT * BYTES_PER_PIXEL) |
||||
|
#define FRAME_ALIGN 64 /* LTDC 推荐对齐到 64 字节 */ |
||||
|
|
||||
|
static rt_mp_t frame_mp = RT_NULL; |
||||
|
uint32_t *g_ltdc_framebuf[2] = {RT_NULL, RT_NULL}; /* 初始化为 NULL */ |
||||
|
_ltdc_dev lcdltdc; /* 管理LCD LTDC的重要参数 */ |
||||
|
|
||||
|
/**
|
||||
|
* @brief 从内存池分配对齐内存 |
||||
|
*/ |
||||
|
static void* alloc_aligned_frame_buffer(rt_mp_t mp, rt_size_t size, rt_size_t align) |
||||
|
{ |
||||
|
void *raw, *aligned; |
||||
|
rt_size_t offset; |
||||
|
|
||||
|
/* 分配足够空间以保证能对齐 */ |
||||
|
raw = rt_mp_alloc(mp, size + align - 1); |
||||
|
if (raw == RT_NULL) return RT_NULL; |
||||
|
|
||||
|
offset = (rt_ubase_t)raw & (align - 1); |
||||
|
if (offset != 0) |
||||
|
aligned = (void *)((rt_ubase_t)raw + align - offset); |
||||
|
else |
||||
|
aligned = raw; |
||||
|
|
||||
|
return aligned; |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC开关 |
||||
|
* @param sw : 1,打开; 0,关闭; |
||||
|
* @retval 无 |
||||
|
*/ |
||||
|
void ltdc_switch(uint8_t sw) |
||||
|
{ |
||||
|
if (sw) |
||||
|
{ |
||||
|
__HAL_LTDC_ENABLE(&g_ltdc_handle); /* 打开LTDC */ |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
__HAL_LTDC_DISABLE(&g_ltdc_handle); /* 关闭LTDC */ |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC开关指定层 |
||||
|
* @param layerx : 0,第一层; 1,第二层; |
||||
|
* @param sw : 1,打开; 0,关闭; |
||||
|
* @retval 无 |
||||
|
*/ |
||||
|
void ltdc_layer_switch(uint8_t layerx, uint8_t sw) |
||||
|
{ |
||||
|
if (sw) |
||||
|
{ |
||||
|
__HAL_LTDC_LAYER_ENABLE(&g_ltdc_handle, layerx); /* 开启layerx */ |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
__HAL_LTDC_LAYER_DISABLE(&g_ltdc_handle, layerx); /* 关闭layerx */ |
||||
|
} |
||||
|
|
||||
|
__HAL_LTDC_RELOAD_CONFIG(&g_ltdc_handle); /* 立即重新加载配置 */ |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC选择层 |
||||
|
* @param layerx : 层号:0,第一层; 1,第二层; |
||||
|
* @retval 无 |
||||
|
*/ |
||||
|
void ltdc_select_layer(uint8_t layerx) |
||||
|
{ |
||||
|
lcdltdc.activelayer = layerx; |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC显示方向设置 |
||||
|
* @param dir : 0,竖屏; 1,横屏; |
||||
|
* @retval 无 |
||||
|
*/ |
||||
|
void ltdc_display_dir(uint8_t dir) |
||||
|
{ |
||||
|
lcdltdc.dir = dir; /* 显示方向 */ |
||||
|
|
||||
|
if (dir == 0) /* 竖屏 */ |
||||
|
{ |
||||
|
lcdltdc.width = lcdltdc.pheight; |
||||
|
lcdltdc.height = lcdltdc.pwidth; |
||||
|
} |
||||
|
else if (dir == 1) /* 横屏 */ |
||||
|
{ |
||||
|
lcdltdc.width = lcdltdc.pwidth; |
||||
|
lcdltdc.height = lcdltdc.pheight; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC画点函数 |
||||
|
* @param x,y : 写入坐标 |
||||
|
* @param color : 颜色值 |
||||
|
* @retval 无 |
||||
|
*/ |
||||
|
void ltdc_draw_point(uint16_t x, uint16_t y, uint32_t color) |
||||
|
{ |
||||
|
#if LTDC_PIXFORMAT == LTDC_PIXFORMAT_ARGB8888 |
||||
|
|
||||
|
if (lcdltdc.dir) /* 横屏 */ |
||||
|
{ |
||||
|
*(uint32_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * y + x)) = color; |
||||
|
} |
||||
|
else /* 竖屏 */ |
||||
|
{ |
||||
|
*(uint32_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * (lcdltdc.pheight - x - 1) + y)) = color; |
||||
|
} |
||||
|
|
||||
|
#elif LTDC_PIXFORMAT == LTDC_PIXFORMAT_RGB888 |
||||
|
|
||||
|
if (lcdltdc.dir) /* 横屏 */ |
||||
|
{ |
||||
|
*(uint16_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * y + x)) = color; |
||||
|
*(uint8_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * y + x) + 2) = color >> 16; |
||||
|
} |
||||
|
else /* 竖屏 */ |
||||
|
{ |
||||
|
*(uint16_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * (lcdltdc.pheight - x - 1) + y)) = color; |
||||
|
*(uint8_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * (lcdltdc.pheight - x - 1) + y) + 2) = color >> 16; |
||||
|
} |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
if (lcdltdc.dir) /* 横屏 */ |
||||
|
{ |
||||
|
*(uint16_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * y + x)) = color; |
||||
|
} |
||||
|
else /* 竖屏 */ |
||||
|
{ |
||||
|
*(uint16_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * (lcdltdc.pheight - x - 1) + y)) = color; |
||||
|
} |
||||
|
|
||||
|
#endif |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC读点函数 |
||||
|
* @param x,y : 读取点的坐标 |
||||
|
* @retval 颜色值 |
||||
|
*/ |
||||
|
uint32_t ltdc_read_point(uint16_t x, uint16_t y) |
||||
|
{ |
||||
|
#if LTDC_PIXFORMAT == LTDC_PIXFORMAT_ARGB8888 |
||||
|
|
||||
|
if (lcdltdc.dir) /* 横屏 */ |
||||
|
{ |
||||
|
return *(uint32_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * y + x)); |
||||
|
} |
||||
|
else /* 竖屏 */ |
||||
|
{ |
||||
|
return *(uint32_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * (lcdltdc.pheight - x - 1) + y)); |
||||
|
} |
||||
|
|
||||
|
#elif LTDC_PIXFORMAT == LTDC_PIXFORMAT_RGB888 |
||||
|
|
||||
|
if (lcdltdc.dir) /* 横屏 */ |
||||
|
{ |
||||
|
return *(uint32_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * y + x)) & 0XFFFFFF; |
||||
|
} |
||||
|
else /* 竖屏 */ |
||||
|
{ |
||||
|
return *(uint32_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * (lcdltdc.pheight - x - 1) + y)) & 0XFFFFFF; |
||||
|
} |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
if (lcdltdc.dir) /* 横屏 */ |
||||
|
{ |
||||
|
return *(uint16_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * y + x)); |
||||
|
} |
||||
|
else /* 竖屏 */ |
||||
|
{ |
||||
|
return *(uint16_t *)((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * (lcdltdc.pheight - x - 1) + y)); |
||||
|
} |
||||
|
|
||||
|
#endif |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC填充矩形, DMA2D填充 |
||||
|
*/ |
||||
|
void ltdc_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint32_t color) |
||||
|
{ |
||||
|
uint32_t psx, psy, pex, pey; |
||||
|
uint32_t timeout = 0; |
||||
|
uint16_t offline; |
||||
|
uint32_t addr; |
||||
|
|
||||
|
if (lcdltdc.dir) |
||||
|
{ |
||||
|
psx = sx; |
||||
|
psy = sy; |
||||
|
pex = ex; |
||||
|
pey = ey; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
if (ex >= lcdltdc.pheight) ex = lcdltdc.pheight - 1; |
||||
|
if (sx >= lcdltdc.pheight) sx = lcdltdc.pheight - 1; |
||||
|
psx = sy; |
||||
|
psy = lcdltdc.pheight - ex - 1; |
||||
|
pex = ey; |
||||
|
pey = lcdltdc.pheight - sx - 1; |
||||
|
} |
||||
|
|
||||
|
offline = lcdltdc.pwidth - (pex - psx + 1); |
||||
|
addr = ((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * psy + psx)); |
||||
|
|
||||
|
__HAL_RCC_DMA2D_CLK_ENABLE(); |
||||
|
DMA2D->CR &= ~(DMA2D_CR_START); |
||||
|
DMA2D->CR = DMA2D_R2M; |
||||
|
DMA2D->OPFCCR = LTDC_PIXFORMAT; |
||||
|
DMA2D->OOR = offline; |
||||
|
DMA2D->OMAR = addr; |
||||
|
DMA2D->NLR = (pey - psy + 1) | ((pex - psx + 1) << 16); |
||||
|
DMA2D->OCOLR = color; |
||||
|
DMA2D->CR |= DMA2D_CR_START; |
||||
|
|
||||
|
while ((DMA2D->ISR & (DMA2D_FLAG_TC)) == 0) |
||||
|
{ |
||||
|
timeout++; |
||||
|
if (timeout > 0X1FFFFF) break; |
||||
|
} |
||||
|
DMA2D->IFCR |= DMA2D_FLAG_TC; |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief 在指定区域内填充指定颜色块, DMA2D填充 |
||||
|
*/ |
||||
|
void ltdc_color_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t *color) |
||||
|
{ |
||||
|
uint32_t psx, psy, pex, pey; |
||||
|
uint32_t timeout = 0; |
||||
|
uint16_t offline; |
||||
|
uint32_t addr; |
||||
|
|
||||
|
if (lcdltdc.dir) |
||||
|
{ |
||||
|
psx = sx; |
||||
|
psy = sy; |
||||
|
pex = ex; |
||||
|
pey = ey; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
psx = sy; |
||||
|
psy = lcdltdc.pheight - ex - 1; |
||||
|
pex = ey; |
||||
|
pey = lcdltdc.pheight - sx - 1; |
||||
|
} |
||||
|
|
||||
|
offline = lcdltdc.pwidth - (pex - psx + 1); |
||||
|
addr = ((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * psy + psx)); |
||||
|
|
||||
|
__HAL_RCC_DMA2D_CLK_ENABLE(); |
||||
|
DMA2D->CR &= ~(DMA2D_CR_START); |
||||
|
DMA2D->CR = DMA2D_M2M; |
||||
|
DMA2D->FGPFCCR = LTDC_PIXFORMAT; |
||||
|
DMA2D->FGOR = 0; |
||||
|
DMA2D->OOR = offline; |
||||
|
DMA2D->FGMAR = (uint32_t)color; |
||||
|
DMA2D->OMAR = addr; |
||||
|
DMA2D->NLR = (pey - psy + 1) | ((pex - psx + 1) << 16); |
||||
|
DMA2D->CR |= DMA2D_CR_START; |
||||
|
|
||||
|
while((DMA2D->ISR & (DMA2D_FLAG_TC)) == 0) |
||||
|
{ |
||||
|
timeout++; |
||||
|
if (timeout > 0X1FFFFF) break; |
||||
|
} |
||||
|
DMA2D->IFCR |= DMA2D_FLAG_TC; |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC清屏 |
||||
|
*/ |
||||
|
void ltdc_clear(uint32_t color) |
||||
|
{ |
||||
|
ltdc_fill(0, 0, lcdltdc.width - 1, lcdltdc.height - 1, color); |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC时钟(Fdclk)设置函数 |
||||
|
*/ |
||||
|
uint8_t ltdc_clk_set(uint32_t pll3n, uint32_t pll3m, uint32_t pll3r) |
||||
|
{ |
||||
|
RCC_PeriphCLKInitTypeDef periphclk_initure; |
||||
|
periphclk_initure.PeriphClockSelection = RCC_PERIPHCLK_LTDC; |
||||
|
periphclk_initure.PLL3.PLL3M = pll3m; |
||||
|
periphclk_initure.PLL3.PLL3N = pll3n; |
||||
|
periphclk_initure.PLL3.PLL3P = 2; |
||||
|
periphclk_initure.PLL3.PLL3Q = 2; |
||||
|
periphclk_initure.PLL3.PLL3R = pll3r; |
||||
|
|
||||
|
if (HAL_RCCEx_PeriphCLKConfig(&periphclk_initure) == HAL_OK) |
||||
|
{ |
||||
|
return 0; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
return 1; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC层窗口设置 |
||||
|
*/ |
||||
|
void ltdc_layer_window_config(uint8_t layerx, uint16_t sx, uint16_t sy, uint16_t width, uint16_t height) |
||||
|
{ |
||||
|
HAL_LTDC_SetWindowPosition(&g_ltdc_handle, sx, sy, layerx); |
||||
|
HAL_LTDC_SetWindowSize(&g_ltdc_handle, width, height, layerx); |
||||
|
|
||||
|
if (lcdltdc.pheight == 1280 && layerx == 0) |
||||
|
{ |
||||
|
LTDC_Layer1->CFBLR = (width * 4 << 16) | (width * 4 + 7); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC层基本参数设置 |
||||
|
*/ |
||||
|
void ltdc_layer_parameter_config(uint8_t layerx, uint32_t bufaddr, uint8_t pixformat, uint8_t alpha, uint8_t alpha0, uint8_t bfac1, uint8_t bfac2, uint32_t bkcolor) |
||||
|
{ |
||||
|
LTDC_LayerCfgTypeDef playercfg; |
||||
|
playercfg.WindowX0 = 0; |
||||
|
playercfg.WindowY0 = 0; |
||||
|
playercfg.WindowX1 = lcdltdc.pwidth; |
||||
|
playercfg.WindowY1 = lcdltdc.pheight; |
||||
|
playercfg.PixelFormat = pixformat; |
||||
|
playercfg.Alpha = alpha; |
||||
|
playercfg.Alpha0 = alpha0; |
||||
|
playercfg.BlendingFactor1 = (uint32_t)bfac1 << 8; |
||||
|
playercfg.BlendingFactor2 = (uint32_t)bfac2; |
||||
|
playercfg.FBStartAdress = bufaddr; |
||||
|
playercfg.ImageWidth = lcdltdc.pwidth; |
||||
|
playercfg.ImageHeight = lcdltdc.pheight; |
||||
|
playercfg.Backcolor.Red = (uint8_t)(bkcolor & 0X00FF0000) >> 16; |
||||
|
playercfg.Backcolor.Green = (uint8_t)(bkcolor & 0X0000FF00) >> 8; |
||||
|
playercfg.Backcolor.Blue = (uint8_t)bkcolor & 0X000000FF; |
||||
|
HAL_LTDC_ConfigLayer(&g_ltdc_handle, &playercfg, layerx); |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC读取面板ID |
||||
|
*/ |
||||
|
uint16_t ltdc_panelid_read(void) |
||||
|
{ |
||||
|
uint8_t idx = 0; |
||||
|
GPIO_InitTypeDef gpio_init_struct; |
||||
|
|
||||
|
__HAL_RCC_GPIOG_CLK_ENABLE(); |
||||
|
__HAL_RCC_GPIOI_CLK_ENABLE(); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_6; |
||||
|
gpio_init_struct.Mode = GPIO_MODE_INPUT; |
||||
|
gpio_init_struct.Pull = GPIO_PULLUP; |
||||
|
gpio_init_struct.Speed = GPIO_SPEED_HIGH; |
||||
|
HAL_GPIO_Init(GPIOG, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_2 | GPIO_PIN_7; |
||||
|
HAL_GPIO_Init(GPIOI, &gpio_init_struct); |
||||
|
|
||||
|
rt_thread_mdelay(1); |
||||
|
idx = (uint8_t)HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_6); |
||||
|
idx |= (uint8_t)HAL_GPIO_ReadPin(GPIOI, GPIO_PIN_2) << 1; |
||||
|
idx |= (uint8_t)HAL_GPIO_ReadPin(GPIOI, GPIO_PIN_7) << 2; |
||||
|
|
||||
|
switch (idx) |
||||
|
{ |
||||
|
case 0: return 0X4342; |
||||
|
case 1: return 0X7084; |
||||
|
case 2: return 0X7016; |
||||
|
case 3: return 0X7018; |
||||
|
case 4: return 0X4384; |
||||
|
case 5: return 0X1018; |
||||
|
default: return 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC初始化函数 |
||||
|
*/ |
||||
|
int ltdc_init(void) |
||||
|
{ |
||||
|
uint16_t lcdid = 0; |
||||
|
|
||||
|
lcdid = ltdc_panelid_read(); |
||||
|
|
||||
|
#if RGB_80_8001280 |
||||
|
lcdid = 0X8081; |
||||
|
#endif |
||||
|
|
||||
|
if (lcdid == 0X4342) |
||||
|
{ |
||||
|
lcdltdc.pwidth = 480; lcdltdc.pheight = 272; |
||||
|
lcdltdc.hsw = 1; lcdltdc.hbp = 40; lcdltdc.hfp = 5; |
||||
|
lcdltdc.vsw = 1; lcdltdc.vbp = 8; lcdltdc.vfp = 8; |
||||
|
ltdc_clk_set(300, 25, 33); |
||||
|
} |
||||
|
else if (lcdid == 0X7084) |
||||
|
{ |
||||
|
lcdltdc.pwidth = 800; lcdltdc.pheight = 480; |
||||
|
lcdltdc.hsw = 1; lcdltdc.hbp = 46; lcdltdc.hfp = 210; |
||||
|
lcdltdc.vsw = 1; lcdltdc.vbp = 23; lcdltdc.vfp = 22; |
||||
|
ltdc_clk_set(300, 25, 9); |
||||
|
} |
||||
|
else if (lcdid == 0X7016) |
||||
|
{ |
||||
|
lcdltdc.pwidth = 1024; lcdltdc.pheight = 600; |
||||
|
lcdltdc.hsw = 20; lcdltdc.hbp = 140; lcdltdc.hfp = 160; |
||||
|
lcdltdc.vsw = 3; lcdltdc.vbp = 20; lcdltdc.vfp = 12; |
||||
|
ltdc_clk_set(300, 25, 6); |
||||
|
} |
||||
|
else if (lcdid == 0X7018) |
||||
|
{ |
||||
|
lcdltdc.pwidth = 1280; lcdltdc.pheight = 800; |
||||
|
} |
||||
|
else if (lcdid == 0X4384) |
||||
|
{ |
||||
|
lcdltdc.pwidth = 800; lcdltdc.pheight = 480; |
||||
|
lcdltdc.hsw = 48; lcdltdc.hbp = 88; lcdltdc.hfp = 40; |
||||
|
lcdltdc.vsw = 3; lcdltdc.vbp = 32; lcdltdc.vfp = 13; |
||||
|
ltdc_clk_set(300, 25, 9); |
||||
|
} |
||||
|
else if (lcdid == 0X8081) |
||||
|
{ |
||||
|
lcdltdc.pwidth = 800; lcdltdc.pheight = 1280; |
||||
|
lcdltdc.hsw = 5; lcdltdc.hbp = 20; lcdltdc.hfp = 40; |
||||
|
lcdltdc.vsw = 3; lcdltdc.vbp = 20; lcdltdc.vfp = 30; |
||||
|
ltdc_clk_set(300, 25, 5); |
||||
|
} |
||||
|
else if (lcdid == 0X1018) |
||||
|
{ |
||||
|
lcdltdc.pwidth = 1280; lcdltdc.pheight = 800; |
||||
|
lcdltdc.hsw = 10; lcdltdc.hbp = 140; lcdltdc.hfp = 10; |
||||
|
lcdltdc.vsw = 3; lcdltdc.vbp = 10; lcdltdc.vfp = 10; |
||||
|
ltdc_clk_set(300, 25, 5); |
||||
|
} |
||||
|
|
||||
|
lcddev.width = lcdltdc.pwidth; |
||||
|
lcddev.height = lcdltdc.pheight; |
||||
|
lcdltdc.pixformat = LTDC_PIXFORMAT; |
||||
|
lcdltdc.pixsize = BYTES_PER_PIXEL; |
||||
|
|
||||
|
/* === 使用 RT-Thread 内存池分配帧缓存(双缓冲)=== */ |
||||
|
if (frame_mp == RT_NULL) |
||||
|
{ |
||||
|
rt_size_t block_size = FRAME_BUF_SIZE + FRAME_ALIGN; /* 每块大小 */ |
||||
|
rt_size_t block_count = 2; /* 双缓冲 */ |
||||
|
|
||||
|
frame_mp = rt_mp_create("ltdc_mp", block_count, block_size); |
||||
|
if (frame_mp == RT_NULL) |
||||
|
{ |
||||
|
rt_kprintf("LTDC: Failed to create memory pool!\n"); |
||||
|
return -1; |
||||
|
} |
||||
|
rt_kprintf("LTDC: Memory pool created (%d blocks, %d bytes each)\n", |
||||
|
block_count, block_size); |
||||
|
} |
||||
|
|
||||
|
/* 分配帧缓冲 0 */ |
||||
|
if (g_ltdc_framebuf[0] == RT_NULL) |
||||
|
{ |
||||
|
void *aligned_buf = alloc_aligned_frame_buffer(frame_mp, FRAME_BUF_SIZE, FRAME_ALIGN); |
||||
|
if (aligned_buf == RT_NULL) |
||||
|
{ |
||||
|
rt_kprintf("LTDC: Failed to allocate frame buffer 0!\n"); |
||||
|
return -1; |
||||
|
} |
||||
|
g_ltdc_framebuf[0] = (uint32_t *)aligned_buf; |
||||
|
} |
||||
|
|
||||
|
/* 分配帧缓冲 1(双缓冲) */ |
||||
|
if (g_ltdc_framebuf[1] == RT_NULL) |
||||
|
{ |
||||
|
void *aligned_buf = alloc_aligned_frame_buffer(frame_mp, FRAME_BUF_SIZE, FRAME_ALIGN); |
||||
|
if (aligned_buf == RT_NULL) |
||||
|
{ |
||||
|
rt_kprintf("LTDC: Warning: only single buffer available.\n"); |
||||
|
// 可选:回退到单缓冲
|
||||
|
g_ltdc_framebuf[1] = g_ltdc_framebuf[0]; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
g_ltdc_framebuf[1] = (uint32_t *)aligned_buf; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* LTDC配置 */ |
||||
|
g_ltdc_handle.Instance = LTDC; |
||||
|
|
||||
|
if (lcdid == 0X8081) |
||||
|
g_ltdc_handle.Init.HSPolarity = LTDC_HSPOLARITY_AH; |
||||
|
else |
||||
|
g_ltdc_handle.Init.HSPolarity = LTDC_HSPOLARITY_AL; |
||||
|
|
||||
|
g_ltdc_handle.Init.VSPolarity = LTDC_VSPOLARITY_AL; |
||||
|
g_ltdc_handle.Init.DEPolarity = LTDC_DEPOLARITY_AL; |
||||
|
g_ltdc_handle.State = HAL_LTDC_STATE_RESET; |
||||
|
|
||||
|
if (lcdid == 0X1018 || lcdid == 0X8081) |
||||
|
g_ltdc_handle.Init.PCPolarity = LTDC_PCPOLARITY_IIPC; |
||||
|
else |
||||
|
g_ltdc_handle.Init.PCPolarity = LTDC_PCPOLARITY_IPC; |
||||
|
|
||||
|
g_ltdc_handle.Init.HorizontalSync = lcdltdc.hsw - 1; |
||||
|
g_ltdc_handle.Init.VerticalSync = lcdltdc.vsw - 1; |
||||
|
g_ltdc_handle.Init.AccumulatedHBP = lcdltdc.hsw + lcdltdc.hbp - 1; |
||||
|
g_ltdc_handle.Init.AccumulatedVBP = lcdltdc.vsw + lcdltdc.vbp - 1; |
||||
|
g_ltdc_handle.Init.AccumulatedActiveW = lcdltdc.hsw + lcdltdc.hbp + lcdltdc.pwidth - 1; |
||||
|
g_ltdc_handle.Init.AccumulatedActiveH = lcdltdc.vsw + lcdltdc.vbp + lcdltdc.pheight - 1; |
||||
|
g_ltdc_handle.Init.TotalWidth = lcdltdc.hsw + lcdltdc.hbp + lcdltdc.pwidth + lcdltdc.hfp - 1; |
||||
|
g_ltdc_handle.Init.TotalHeigh = lcdltdc.vsw + lcdltdc.vbp + lcdltdc.pheight + lcdltdc.vfp - 1; |
||||
|
g_ltdc_handle.Init.Backcolor.Red = 0; |
||||
|
g_ltdc_handle.Init.Backcolor.Green = 0; |
||||
|
g_ltdc_handle.Init.Backcolor.Blue = 0; |
||||
|
HAL_LTDC_Init(&g_ltdc_handle); |
||||
|
|
||||
|
/* 层配置 */ |
||||
|
ltdc_layer_parameter_config(0, (uint32_t)g_ltdc_framebuf[0], LTDC_PIXFORMAT, 255, 0, 6, 7, 0X000000); |
||||
|
ltdc_layer_window_config(0, 0, 0, lcdltdc.pwidth, lcdltdc.pheight); |
||||
|
|
||||
|
ltdc_select_layer(0); |
||||
|
|
||||
|
/* LTDC LCD复位 */ |
||||
|
LTDC_RST(1); |
||||
|
rt_thread_mdelay(10); |
||||
|
LTDC_RST(0); |
||||
|
rt_thread_mdelay(50); |
||||
|
LTDC_RST(1); |
||||
|
rt_thread_mdelay(200); |
||||
|
|
||||
|
LTDC_BL(1); |
||||
|
ltdc_clear(0XFFFFFFFF); |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
/**
|
||||
|
* @brief LTDC底层IO初始化和时钟使能 |
||||
|
*/ |
||||
|
void HAL_LTDC_MspInit(LTDC_HandleTypeDef *hltdc) |
||||
|
{ |
||||
|
GPIO_InitTypeDef gpio_init_struct; |
||||
|
|
||||
|
__HAL_RCC_LTDC_CLK_ENABLE(); |
||||
|
__HAL_RCC_DMA2D_CLK_ENABLE(); |
||||
|
|
||||
|
/* 控制引脚 */ |
||||
|
LTDC_BL_GPIO_CLK_ENABLE(); |
||||
|
LTDC_RST_GPIO_CLK_ENABLE(); |
||||
|
LTDC_DE_GPIO_CLK_ENABLE(); |
||||
|
LTDC_VSYNC_GPIO_CLK_ENABLE(); |
||||
|
LTDC_HSYNC_GPIO_CLK_ENABLE(); |
||||
|
LTDC_CLK_GPIO_CLK_ENABLE(); |
||||
|
|
||||
|
gpio_init_struct.Pin = LTDC_BL_GPIO_PIN; |
||||
|
gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; |
||||
|
gpio_init_struct.Pull = GPIO_PULLUP; |
||||
|
gpio_init_struct.Speed = GPIO_SPEED_HIGH; |
||||
|
HAL_GPIO_Init(LTDC_BL_GPIO_PORT, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = LTDC_RST_GPIO_PIN; |
||||
|
HAL_GPIO_Init(LTDC_RST_GPIO_PORT, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = LTDC_DE_GPIO_PIN; |
||||
|
gpio_init_struct.Mode = GPIO_MODE_AF_PP; |
||||
|
gpio_init_struct.Pull = GPIO_NOPULL; |
||||
|
gpio_init_struct.Speed = GPIO_SPEED_HIGH; |
||||
|
gpio_init_struct.Alternate = GPIO_AF14_LTDC; |
||||
|
HAL_GPIO_Init(LTDC_DE_GPIO_PORT, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = LTDC_VSYNC_GPIO_PIN; |
||||
|
HAL_GPIO_Init(LTDC_VSYNC_GPIO_PORT, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = LTDC_HSYNC_GPIO_PIN; |
||||
|
HAL_GPIO_Init(LTDC_HSYNC_GPIO_PORT, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = LTDC_CLK_GPIO_PIN; |
||||
|
HAL_GPIO_Init(LTDC_CLK_GPIO_PORT, &gpio_init_struct); |
||||
|
|
||||
|
/* 数据引脚 */ |
||||
|
__HAL_RCC_GPIOA_CLK_ENABLE(); |
||||
|
__HAL_RCC_GPIOD_CLK_ENABLE(); |
||||
|
__HAL_RCC_GPIOE_CLK_ENABLE(); |
||||
|
__HAL_RCC_GPIOG_CLK_ENABLE(); |
||||
|
__HAL_RCC_GPIOH_CLK_ENABLE(); |
||||
|
__HAL_RCC_GPIOI_CLK_ENABLE(); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_8; |
||||
|
gpio_init_struct.Alternate = GPIO_AF13_LTDC; |
||||
|
HAL_GPIO_Init(GPIOA, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_2; |
||||
|
gpio_init_struct.Alternate = GPIO_AF14_LTDC; |
||||
|
HAL_GPIO_Init(GPIOA, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_6; |
||||
|
HAL_GPIO_Init(GPIOD, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_5 | GPIO_PIN_6; |
||||
|
HAL_GPIO_Init(GPIOE, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_6 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14; |
||||
|
HAL_GPIO_Init(GPIOG, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | |
||||
|
GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15; |
||||
|
HAL_GPIO_Init(GPIOH, &gpio_init_struct); |
||||
|
|
||||
|
gpio_init_struct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 | |
||||
|
GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; |
||||
|
HAL_GPIO_Init(GPIOI, &gpio_init_struct); |
||||
|
} |
||||
|
|
||||
|
INIT_DEVICE_EXPORT(ltdc_init); |
||||
Loading…
Reference in new issue