├── src ├── DefaultFonts.h ├── Retarget.c ├── main.h ├── stm32f30x_it.h ├── hw_config.h ├── main.c ├── stm32f30x_conf.h ├── platform_config.h ├── ST7735.h ├── stm32f30x_it.c ├── hw_config.c ├── tux_50_ad.h ├── ST7735.c └── DefaultFonts.c ├── .gitattributes ├── .gitignore ├── README.md └── MDK ├── ST7735.uvopt ├── st7735.coproj ├── ST7735.uvproj ├── ST7735.uvoptx └── ST7735.uvprojx /src/DefaultFonts.h: -------------------------------------------------------------------------------- 1 | #ifndef __DEFAULT_FONTS__ 2 | #define __DEFAULT_FONTS__ 3 | 4 | extern const unsigned char SmallFont[]; 5 | extern const unsigned char BigFont[]; 6 | extern const unsigned char SevenSegNumFont[]; 7 | 8 | #endif /* __DEFAULT_FONTS__ */ 9 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /src/Retarget.c: -------------------------------------------------------------------------------- 1 | /******************************************************************************/ 2 | /* RETARGET.C: 'Retarget' layer for target-dependent low level functions */ 3 | /******************************************************************************/ 4 | /* This file is part of the uVision/ARM development tools. */ 5 | /* Copyright (c) 2005 Keil Software. All rights reserved. */ 6 | /* This software may only be used under the terms of a valid, current, */ 7 | /* end user licence from KEIL for a compatible version of KEIL software */ 8 | /* development tools. Nothing else gives you the right to use this software. */ 9 | /******************************************************************************/ 10 | 11 | #include 12 | #include 13 | #include 14 | 15 | #pragma import(__use_no_semihosting_swi) 16 | 17 | 18 | extern int sendchar(int ch); /* in Serial.c */ 19 | extern int getkey(void); /* in Serial.c */ 20 | extern long timeval; /* in Time.c */ 21 | 22 | 23 | struct __FILE { int handle; /* Add whatever you need here */ }; 24 | FILE __stdout; 25 | FILE __stdin; 26 | 27 | void lcd7735_putc(char c); 28 | 29 | int fputc(int ch, FILE *f) { 30 | lcd7735_putc(ch); 31 | return (ch); 32 | } 33 | 34 | //int fgetc(FILE *f) { 35 | // return (sendchar(getkey())); 36 | //} 37 | 38 | 39 | //int ferror(FILE *f) { 40 | // /* Your implementation of ferror */ 41 | // return EOF; 42 | //} 43 | 44 | 45 | void _ttywrch(int ch) { 46 | lcd7735_putc(ch); 47 | } 48 | 49 | 50 | void _sys_exit(int return_code) { 51 | while (1); /* endless loop */ 52 | } 53 | -------------------------------------------------------------------------------- /src/main.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file GPIO_IOToggle/main.h 4 | * @author MCD Application Team 5 | * @version V1.1.0 6 | * @date 20-September-2012 7 | * @brief Header for main.c module 8 | ****************************************************************************** 9 | * @attention 10 | * 11 | *

© COPYRIGHT 2012 STMicroelectronics

12 | * 13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); 14 | * You may not use this file except in compliance with the License. 15 | * You may obtain a copy of the License at: 16 | * 17 | * http://www.st.com/software_license_agreement_liberty_v2 18 | * 19 | * Unless required by applicable law or agreed to in writing, software 20 | * distributed under the License is distributed on an "AS IS" BASIS, 21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 22 | * See the License for the specific language governing permissions and 23 | * limitations under the License. 24 | * 25 | ****************************************************************************** 26 | */ 27 | 28 | /* Define to prevent recursive inclusion -------------------------------------*/ 29 | #ifndef __MAIN_H 30 | #define __MAIN_H 31 | 32 | /* Includes ------------------------------------------------------------------*/ 33 | #include "stm32f30x.h" 34 | #include "stm32f3_discovery.h" 35 | #include "platform_config.h" 36 | 37 | 38 | /* Exported types ------------------------------------------------------------*/ 39 | /* Exported constants --------------------------------------------------------*/ 40 | /* Exported macro ------------------------------------------------------------*/ 41 | /* Exported functions ------------------------------------------------------- */ 42 | extern void TimingDelay_Decrement(void); 43 | 44 | #endif /* __MAIN_H */ 45 | 46 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 47 | -------------------------------------------------------------------------------- /src/stm32f30x_it.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file GPIO_IOToggle/stm32f30x_it.h 4 | * @author MCD Application Team 5 | * @version V1.1.0 6 | * @date 20-September-2012 7 | * @brief This file contains the headers of the interrupt handlers. 8 | ****************************************************************************** 9 | * @attention 10 | * 11 | *

© COPYRIGHT 2012 STMicroelectronics

12 | * 13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); 14 | * You may not use this file except in compliance with the License. 15 | * You may obtain a copy of the License at: 16 | * 17 | * http://www.st.com/software_license_agreement_liberty_v2 18 | * 19 | * Unless required by applicable law or agreed to in writing, software 20 | * distributed under the License is distributed on an "AS IS" BASIS, 21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 22 | * See the License for the specific language governing permissions and 23 | * limitations under the License. 24 | * 25 | ****************************************************************************** 26 | */ 27 | 28 | /* Define to prevent recursive inclusion -------------------------------------*/ 29 | #ifndef __STM32F30X_IT_H 30 | #define __STM32F30X_IT_H 31 | 32 | #ifdef __cplusplus 33 | extern "C" { 34 | #endif 35 | 36 | /* Includes ------------------------------------------------------------------*/ 37 | #include "stm32f30x.h" 38 | 39 | /* Exported types ------------------------------------------------------------*/ 40 | /* Exported constants --------------------------------------------------------*/ 41 | /* Exported macro ------------------------------------------------------------*/ 42 | /* Exported functions ------------------------------------------------------- */ 43 | 44 | void NMI_Handler(void); 45 | void HardFault_Handler(void); 46 | void MemManage_Handler(void); 47 | void BusFault_Handler(void); 48 | void UsageFault_Handler(void); 49 | void SVC_Handler(void); 50 | void DebugMon_Handler(void); 51 | void PendSV_Handler(void); 52 | void SysTick_Handler(void); 53 | 54 | #ifdef __cplusplus 55 | } 56 | #endif 57 | 58 | #endif /* __STM32F30X_IT_H */ 59 | 60 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 61 | -------------------------------------------------------------------------------- /src/hw_config.h: -------------------------------------------------------------------------------- 1 | #ifndef __VCP_HW_CONFIG__ 2 | #define __VCP_HW_CONFIG__ 3 | 4 | #include "stm32f30x.h" 5 | // 6 | // Hardware SPI if defined 7 | #define LCD_TO_SPI2 8 | 9 | // Can't be less 6 MGz according to datasheet on SR7755 controller 10 | #define SPI2_BaudRatePrescaler SPI_BaudRatePrescaler_2 11 | 12 | // CS will be set every time before and and of operation 13 | //#define LCD_SEL_AUTO 14 | 15 | #define LCD_GPIO GPIOB 16 | 17 | #define LCD_AHB1_GPIO RCC_AHBPeriph_GPIOB 18 | // Pin name fo IDBD02-1.8SP 19 | #define LCD_RST_PIN GPIO_Pin_14 // PB14 (RST) 20 | #define LCD_A0_PIN GPIO_Pin_12 // PB12 (RS) 21 | #define LCD_CSE_PIN GPIO_Pin_10 // PB10 (CS) 22 | 23 | // For software SPI only 24 | #define LCD_SDA_PIN GPIO_Pin_15 // PB15 (SCL) 25 | #define LCD_SCK_PIN GPIO_Pin_13 // PB13 (SDA) 26 | 27 | // operate GPIO bits via GPIO function call for debug purposes 28 | //#define NO_BITBIND 29 | 30 | // The pin LCD_RST_PIN is not used if defined 31 | //#define LCD_SOFT_RESET 32 | 33 | /**************************** don't change anythings below *********************************/ 34 | 35 | #ifdef NO_BITBIND 36 | #define LCD_RST1 GPIO_SetBits(GPIOB, LCD_RST_PIN) 37 | #define LCD_RST0 GPIO_ResetBits(GPIOB, LCD_RST_PIN) 38 | 39 | #define LCD_DC1 GPIO_SetBits(GPIOB, LCD_A0_PIN) 40 | #define LCD_DC0 GPIO_ResetBits(GPIOB, LCD_A0_PIN) 41 | 42 | #define LCD_CS1 GPIO_SetBits(GPIOB, LCD_CSE_PIN) 43 | #define LCD_CS0 GPIO_ResetBits(GPIOB, LCD_CSE_PIN) 44 | 45 | #else 46 | 47 | #define LCD_RST1 LCD_GPIO->BSRR = LCD_RST_PIN 48 | #define LCD_RST0 LCD_GPIO->BRR = LCD_RST_PIN 49 | 50 | #define LCD_DC1 LCD_GPIO->BSRR = LCD_A0_PIN 51 | #define LCD_DC0 LCD_GPIO->BRR = LCD_A0_PIN 52 | 53 | #define LCD_CS1 LCD_GPIO->BSRR = LCD_CSE_PIN 54 | #define LCD_CS0 LCD_GPIO->BRR = LCD_CSE_PIN 55 | #endif 56 | 57 | 58 | #ifndef LCD_TO_SPI2 59 | #define LCD_SCK1 LCD_GPIO->BSRR = LCD_SCK_PIN 60 | #define LCD_SCK0 LCD_GPIO->BRR = LCD_SCK_PIN 61 | 62 | #define LCD_MOSI1 LCD_GPIO->BSRR = LCD_SDA_PIN 63 | #define LCD_MOSI0 LCD_GPIO->BRR = LCD_SDA_PIN 64 | #endif 65 | 66 | extern void lcd7735_setup(void); 67 | extern void lcd7735_senddata(const uint8_t cmd); 68 | extern void lcd7735_senddata16(const uint16_t data); 69 | extern void lcd7735_sendCmd(const uint8_t cmd); 70 | extern void lcd7735_sendData(const uint8_t data); 71 | 72 | extern void receive_data(const uint8_t cmd, uint8_t *data, uint8_t cnt); 73 | 74 | #endif /* __VCP_HW_CONFIG__ */ 75 | 76 | -------------------------------------------------------------------------------- /src/main.c: -------------------------------------------------------------------------------- 1 | #include "main.h" 2 | #include "hw_config.h" 3 | #include "ST7735.h" 4 | 5 | #include 6 | 7 | #include "tux_50_ad.h" 8 | 9 | __IO uint32_t UserButtonPressed = 0; 10 | 11 | /* Private function prototypes -----------------------------------------------*/ 12 | void test_ascii_screen(void); 13 | void test_graphics(void); 14 | 15 | int main(void) { 16 | 17 | STM_EVAL_LEDInit(LED3); 18 | STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_EXTI); 19 | STM_EVAL_LEDOff(LED3); 20 | 21 | lcd7735_setup(); 22 | delay_ms(50); 23 | lcd7735_initR(INITR_REDTAB); 24 | lcd7735_setFont((uint8_t *)&SmallFont[0]); 25 | lcd7735_fillScreen(ST7735_BLACK); 26 | lcd7735_print("Press button!",0,60,0); 27 | while(1) { 28 | if( UserButtonPressed == 0x01 ) { 29 | STM_EVAL_LEDToggle(LED3); 30 | test_graphics(); 31 | } else if( UserButtonPressed == 0x02 ) { 32 | STM_EVAL_LEDToggle(LED3); 33 | test_ascii_screen(); 34 | } 35 | } 36 | } 37 | 38 | void test_ascii_screen(void) { 39 | unsigned char x; 40 | int i; 41 | 42 | lcd7735_init_screen((void *)&SmallFont[0],ST7735_GREEN,ST7735_BLACK,PORTRAIT); 43 | printf("zz=%03.4f\n",34.678); 44 | while(1) { 45 | x = 0x20; 46 | for(i=0;i<95;i++) { 47 | lcd7735_putc(x+i); 48 | delay_ms(50); 49 | } 50 | if( UserButtonPressed == 0x01 ) 51 | return; 52 | } 53 | } 54 | 55 | void test_graphics(void) { 56 | unsigned char y; 57 | unsigned char x; 58 | uint8_t r = 0; 59 | // uint8_t m[16]; 60 | 61 | // receive_data(0x0B,m,2); 62 | // delay_ms(2000); 63 | lcd7735_fillScreen(ST7735_BLACK); 64 | lcd7735_setFont((uint8_t *)&BigFont[0]); 65 | while(1) { 66 | lcd7735_print("Hello!",10,10,0); 67 | delay_ms(1000); 68 | lcd7735_print("Hello!",10,10,30); 69 | delay_ms(1000); 70 | lcd7735_drawBitmap(0,0,50,52,(bitmapdatatype)tux_50_ad,1); 71 | delay_ms(1000); 72 | lcd7735_drawBitmap(0,0,50,52,(bitmapdatatype)tux_50_ad,2); 73 | delay_ms(1000); 74 | for (y=0;y<160;y++) { 75 | for (x=0;x<128;x++) { 76 | unsigned int color=0x0; 77 | if (y<30) color=ST7735_BLUE; 78 | else { 79 | if (y<60) color=ST7735_GREEN; 80 | else { 81 | if (y<90) color=ST7735_RED; 82 | } 83 | } 84 | lcd7735_drawPixel(x, y, color); 85 | //test_dp(x,y,ccolor); 86 | } 87 | } 88 | delay_ms(1000); 89 | lcd7735_invertDisplay(INVERT_ON); 90 | delay_ms(1000); 91 | lcd7735_invertDisplay(INVERT_OFF); 92 | delay_ms(1000); 93 | lcd7735_fillScreen(ST7735_RED); 94 | delay_ms(1000); 95 | lcd7735_fillScreen(ST7735_GREEN); 96 | delay_ms(1000); 97 | lcd7735_fillScreen(ST7735_BLUE); 98 | delay_ms(1000); 99 | lcd7735_fillScreen(ST7735_BLACK); 100 | delay_ms(1000); 101 | lcd7735_drawFastLine(10,5,110,100,ST7735_WHITE); 102 | delay_ms(1000); 103 | lcd7735_drawCircle(60,60,50,ST7735_CYAN); 104 | delay_ms(1000); 105 | lcd7735_drawRect(10,20,90,100,ST7735_MAGENTA); 106 | delay_ms(1000); 107 | lcd7735_fillCircle(70,70,50,ST7735_YELLOW); 108 | delay_ms(1000); 109 | lcd7735_fillRect(20,15,90,75,ST7735_BLUE); 110 | delay_ms(1000); 111 | 112 | r = (r+1) & 0x03; 113 | lcd7735_setRotation(r); 114 | delay_ms(1000); 115 | if( UserButtonPressed == 0x02 ) 116 | return; 117 | } 118 | } 119 | 120 | -------------------------------------------------------------------------------- /src/stm32f30x_conf.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file GPIO_IOToggle/stm32f30x_conf.h 4 | * @author MCD Application Team 5 | * @version V1.1.0 6 | * @date 20-September-2012 7 | * @brief Library configuration file. 8 | ****************************************************************************** 9 | * @attention 10 | * 11 | *

© COPYRIGHT 2012 STMicroelectronics

12 | * 13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); 14 | * You may not use this file except in compliance with the License. 15 | * You may obtain a copy of the License at: 16 | * 17 | * http://www.st.com/software_license_agreement_liberty_v2 18 | * 19 | * Unless required by applicable law or agreed to in writing, software 20 | * distributed under the License is distributed on an "AS IS" BASIS, 21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 22 | * See the License for the specific language governing permissions and 23 | * limitations under the License. 24 | * 25 | ****************************************************************************** 26 | */ 27 | 28 | /* Define to prevent recursive inclusion -------------------------------------*/ 29 | #ifndef __STM32F30X_CONF_H 30 | #define __STM32F30X_CONF_H 31 | 32 | /* Includes ------------------------------------------------------------------*/ 33 | /* Comment the line below to disable peripheral header file inclusion */ 34 | //#include "stm32f30x_adc.h" 35 | //#include "stm32f30x_can.h" 36 | //#include "stm32f30x_crc.h" 37 | //#include "stm32f30x_comp.h" 38 | //#include "stm32f30x_dac.h" 39 | #include "stm32f30x_dbgmcu.h" 40 | #include "stm32f30x_dma.h" 41 | #include "stm32f30x_exti.h" 42 | //#include "stm32f30x_flash.h" 43 | #include "stm32f30x_gpio.h" 44 | //#include "stm32f30x_syscfg.h" 45 | //#include "stm32f30x_i2c.h" 46 | //#include "stm32f30x_iwdg.h" 47 | //#include "stm32f30x_opamp.h" 48 | #include "stm32f30x_pwr.h" 49 | #include "stm32f30x_rcc.h" 50 | #include "stm32f30x_rtc.h" 51 | #include "stm32f30x_spi.h" 52 | #include "stm32f30x_tim.h" 53 | //#include "stm32f30x_usart.h" 54 | //#include "stm32f30x_wwdg.h" 55 | #include "stm32f30x_misc.h" /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */ 56 | 57 | /* Exported types ------------------------------------------------------------*/ 58 | /* Exported constants --------------------------------------------------------*/ 59 | /* Uncomment the line below to expanse the "assert_param" macro in the 60 | Standard Peripheral Library drivers code */ 61 | /* #define USE_FULL_ASSERT 1 */ 62 | 63 | /* Exported macro ------------------------------------------------------------*/ 64 | #ifdef USE_FULL_ASSERT 65 | 66 | /** 67 | * @brief The assert_param macro is used for function's parameters check. 68 | * @param expr: If expr is false, it calls assert_failed function which reports 69 | * the name of the source file and the source line number of the call 70 | * that failed. If expr is true, it returns no value. 71 | * @retval None 72 | */ 73 | #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) 74 | /* Exported functions ------------------------------------------------------- */ 75 | void assert_failed(uint8_t* file, uint32_t line); 76 | #else 77 | #define assert_param(expr) ((void)0) 78 | #endif /* USE_FULL_ASSERT */ 79 | 80 | #endif /* __STM32F30X_CONF_H */ 81 | 82 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 83 | -------------------------------------------------------------------------------- /src/platform_config.h: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file platform_config.h 4 | * @author MCD Application Team 5 | * @version V4.0.0 6 | * @date 21-January-2013 7 | * @brief Evaluation board specific configuration file. 8 | ****************************************************************************** 9 | * @attention 10 | * 11 | *

© COPYRIGHT 2013 STMicroelectronics

12 | * 13 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); 14 | * You may not use this file except in compliance with the License. 15 | * You may obtain a copy of the License at: 16 | * 17 | * http://www.st.com/software_license_agreement_liberty_v2 18 | * 19 | * Unless required by applicable law or agreed to in writing, software 20 | * distributed under the License is distributed on an "AS IS" BASIS, 21 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 22 | * See the License for the specific language governing permissions and 23 | * limitations under the License. 24 | * 25 | ****************************************************************************** 26 | */ 27 | 28 | 29 | /* Define to prevent recursive inclusion -------------------------------------*/ 30 | #ifndef __PLATFORM_CONFIG_H 31 | #define __PLATFORM_CONFIG_H 32 | 33 | /* Includes ------------------------------------------------------------------*/ 34 | #include "stm32f30x.h" 35 | 36 | /* Exported types ------------------------------------------------------------*/ 37 | /* Exported constants --------------------------------------------------------*/ 38 | /* Uncomment the line corresponding to the STMicroelectronics evaluation board 39 | used to run the example */ 40 | #if !defined (USE_STM32303C_EVAL) 41 | #define USE_STM32303C_EVAL 42 | #endif 43 | 44 | /*Unique Devices IDs register set*/ 45 | #define ID1 (0x1FFFF7E8) 46 | #define ID2 (0x1FFFF7EC) 47 | #define ID3 (0x1FFFF7F0) 48 | 49 | /* Define the STM32F10x hardware depending on the used evaluation board */ 50 | #if defined (USE_STM32303C_EVAL) 51 | #if defined(STM32F30X) 52 | #define USB_INT_DEFAULT 53 | #define USB_DISCONNECT GPIOE 54 | #define USB_DISCONNECT_PIN GPIO_Pin_14 55 | #define RCC_AHBPeriph_GPIO_DISCONNECT RCC_AHBPeriph_GPIOE 56 | #else 57 | #define USB_DISCONNECT GPIOB 58 | #define USB_DISCONNECT_PIN GPIO_Pin_8 59 | #define RCC_AHBPeriph_GPIO_DISCONNECT RCC_AHBPeriph_GPIOB 60 | #endif /* STM32F30X */ 61 | #endif /* USE_STM3210B_EVAL */ 62 | 63 | #define RCC_AHBPeriph_ALLGPIO (RCC_AHBPeriph_GPIOA \ 64 | | RCC_AHBPeriph_GPIOB \ 65 | | RCC_AHBPeriph_GPIOC \ 66 | | RCC_AHBPeriph_GPIOD \ 67 | | RCC_AHBPeriph_GPIOE \ 68 | | RCC_AHBPeriph_GPIOF ) 69 | 70 | /*** compatibility with F4 board constants ***/ 71 | #ifdef STM32F30X 72 | #define SPI_SendData SPI_SendData8 73 | #define SPI_I2S_SendData SPI_I2S_SendData16 74 | #define RCC_AHB1PeriphClockCmd RCC_AHBPeriphClockCmd 75 | //#define LCD_AHB1_GPIO LCD_AHB_GPIO 76 | #define GPIO_Speed_Config GPIO_Speed_50MHz 77 | #define SPI_DeInit SPI_I2S_DeInit 78 | #define GPIO_AF_SPI2 GPIO_AF_5 79 | #endif 80 | 81 | #ifndef GPIO_Speed_Config 82 | #define GPIO_Speed_Config GPIO_Speed_100MHz 83 | #endif 84 | 85 | /* Exported macro ------------------------------------------------------------*/ 86 | /* Exported functions ------------------------------------------------------- */ 87 | 88 | #endif /* __PLATFORM_CONFIG_H */ 89 | 90 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 91 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | doxy/ 2 | Documentation/ 3 | *.orig 4 | ################ 5 | ## MDK-ARM 6 | ################ 7 | MDK/ 8 | MDK-ARM/ 9 | .save/ 10 | .orig/ 11 | .archive/ 12 | *.build_log.htm 13 | ################# 14 | ## Eclipse 15 | ################# 16 | 17 | *.pydevproject 18 | .project 19 | .metadata 20 | bin/ 21 | tmp/ 22 | *.tmp 23 | *.bak 24 | *.swp 25 | *~.nib 26 | local.properties 27 | .classpath 28 | .settings/ 29 | .loadpath 30 | 31 | # External tool builders 32 | .externalToolBuilders/ 33 | 34 | # Locally stored "Eclipse launch configurations" 35 | *.launch 36 | 37 | # CDT-specific 38 | .cproject 39 | 40 | # PDT-specific 41 | .buildpath 42 | 43 | 44 | ################# 45 | ## Visual Studio 46 | ################# 47 | 48 | ## Ignore Visual Studio temporary files, build results, and 49 | ## files generated by popular Visual Studio add-ons. 50 | 51 | # User-specific files 52 | *.suo 53 | *.user 54 | *.sln.docstates 55 | 56 | # Build results 57 | 58 | [Dd]ebug/ 59 | [Rr]elease/ 60 | x64/ 61 | [Bb]uild/ 62 | [Bb]in/ 63 | [Oo]bj/ 64 | 65 | # MSTest test Results 66 | [Tt]est[Rr]esult*/ 67 | [Bb]uild[Ll]og.* 68 | 69 | *_i.c 70 | *_p.c 71 | *.ilk 72 | *.meta 73 | *.obj 74 | *.pch 75 | *.pdb 76 | *.pgc 77 | *.pgd 78 | *.rsp 79 | *.sbr 80 | *.tlb 81 | *.tli 82 | *.tlh 83 | *.tmp 84 | *.tmp_proj 85 | *.log 86 | *.vspscc 87 | *.vssscc 88 | .builds 89 | *.pidb 90 | *.log 91 | *.scc 92 | 93 | # Visual C++ cache files 94 | ipch/ 95 | *.aps 96 | *.ncb 97 | *.opensdf 98 | *.sdf 99 | *.cachefile 100 | 101 | # Visual Studio profiler 102 | *.psess 103 | *.vsp 104 | *.vspx 105 | 106 | # Guidance Automation Toolkit 107 | *.gpState 108 | 109 | # ReSharper is a .NET coding add-in 110 | _ReSharper*/ 111 | *.[Rr]e[Ss]harper 112 | 113 | # TeamCity is a build add-in 114 | _TeamCity* 115 | 116 | # DotCover is a Code Coverage Tool 117 | *.dotCover 118 | 119 | # NCrunch 120 | *.ncrunch* 121 | .*crunch*.local.xml 122 | 123 | # Installshield output folder 124 | [Ee]xpress/ 125 | 126 | # DocProject is a documentation generator add-in 127 | DocProject/buildhelp/ 128 | DocProject/Help/*.HxT 129 | DocProject/Help/*.HxC 130 | DocProject/Help/*.hhc 131 | DocProject/Help/*.hhk 132 | DocProject/Help/*.hhp 133 | DocProject/Help/Html2 134 | DocProject/Help/html 135 | 136 | # Click-Once directory 137 | publish/ 138 | 139 | # Publish Web Output 140 | *.Publish.xml 141 | *.pubxml 142 | 143 | # NuGet Packages Directory 144 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 145 | #packages/ 146 | 147 | # Windows Azure Build Output 148 | csx 149 | *.build.csdef 150 | 151 | # Windows Store app package directory 152 | AppPackages/ 153 | 154 | # Others 155 | sql/ 156 | *.Cache 157 | ClientBin/ 158 | [Ss]tyle[Cc]op.* 159 | ~$* 160 | *~ 161 | *.dbmdl 162 | *.[Pp]ublish.xml 163 | *.pfx 164 | *.publishsettings 165 | 166 | # RIA/Silverlight projects 167 | Generated_Code/ 168 | 169 | # Backup & report files from converting an old project file to a newer 170 | # Visual Studio version. Backup files are not needed, because we have git ;-) 171 | _UpgradeReport_Files/ 172 | Backup*/ 173 | UpgradeLog*.XML 174 | UpgradeLog*.htm 175 | 176 | # SQL Server files 177 | App_Data/*.mdf 178 | App_Data/*.ldf 179 | 180 | ############# 181 | ## Windows detritus 182 | ############# 183 | 184 | # Windows image file caches 185 | Thumbs.db 186 | ehthumbs.db 187 | 188 | # Folder config file 189 | Desktop.ini 190 | 191 | # Recycle Bin used on file shares 192 | $RECYCLE.BIN/ 193 | 194 | # Mac crap 195 | .DS_Store 196 | 197 | 198 | ############# 199 | ## Python 200 | ############# 201 | 202 | *.py[co] 203 | 204 | # Packages 205 | *.egg 206 | *.egg-info 207 | dist/ 208 | build/ 209 | eggs/ 210 | parts/ 211 | var/ 212 | sdist/ 213 | develop-eggs/ 214 | .installed.cfg 215 | 216 | # Installer logs 217 | pip-log.txt 218 | 219 | # Unit test / coverage reports 220 | .coverage 221 | .tox 222 | 223 | #Translations 224 | *.mo 225 | 226 | #Mr Developer 227 | .mr.developer.cfg 228 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ST7735 2 | ====== 3 | 4 | ST7735 driver and library for STM32F3DISCOVEY board
5 |

The idea has been taken from Arduino Adafruit and UTFT sources. The arduino code has been ported for STM32F3 controller.

6 | Demo video 7 | 8 |

Initialization

9 | Initialization for ST7735B LCD (B&W)
10 | void lcd7735_initB(void);
11 |
12 | Initialization for ST7735R LCD (green or red tabs)
13 | void lcd7735_initR(uint8_t options);
14 |
15 |

Graphics function

16 | Fill screen by selected color.
17 |  void lcd7735_fillScreen(uint16_t color);
18 | Draw colored rectangular on screen. The x1,y1 is top left corner and x2,y2 bottom right corner on screen.
19 | void lcd7735_drawRect(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2,uint16_t color);
20 | Fill rectangular on screen by specified color. The x1,y1 is top left corner and x2,y2 bottom right corner on screen.
21 | void lcd7735_fillRect(int16_t x, int16_t y, int16_t width, int16_t height, uint16_t color);
22 | Draw colored pixel on screen.
23 | void lcd7735_drawPixel(int16_t x, int16_t y, uint16_t color);
24 | Draw horizontal line with specified parameters.
25 | void lcd7735_drawFastHLine(int16_t x, int16_t y, int16_t width, uint16_t color);
26 | Draw vertical line with specified parameters.
27 | void lcd7735_drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
28 | Draw line with specified parameters.
29 | void lcd7735_drawFastLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint16_t color);
30 | Draw colored circle on screen.
31 | void lcd7735_drawCircle(int16_t x, int16_t y, int radius, uint16_t color);
32 | Fill circle on screen by specified color.
33 | void lcd7735_fillCircle(int16_t x, int16_t y, int radius, uint16_t color);
34 | Render bitmap on screen. The x1,y1 is top left corner. The “scale” – integer values for multiply bitmap size.
35 | void lcd7735_drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int scale);
36 | The same but rotated.
37 | void lcd7735_drawBitmapRotate(int x, int y, int sx, int sy, bitmapdatatype data, int deg, int rox, int roy);
38 |

Service functions

39 | Get sizes of LCD matrix in pixels
40 | uint8_t lcd7735_getWidth(void);
41 | uint8_t lcd7735_getHeight(void);
42 | Invert screen, parameters: INVERT_ON/ INVERT_OFF
43 | void lcd7735_invertDisplay(const uint8_t mode);
44 | Pass 8-bit (each) R,G,B, get back 16-bit packed color
45 | uint16_t lcd7735_Color565(uint8_t r, uint8_t g, uint8_t b);
46 | Rotate screen clockwise. Possible values:
47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |
Parameter,Degree
PORTRAIT,0
LANDSAPE,90
PORTRAIT_FLIP,180
LANDSAPE_FLIP,270
71 | void lcd7735_setRotation(uint8_t m);
72 |

Arduino UTFT ported character render functions

73 | Set current font for lcd7735_print()
74 | void lcd7735_setFont(uint8_t* font);
75 | Set transparency for lcd7735_print(), if “set” == 1
76 | void lcd7735_setTransparent(uint8_t  set);
77 | Set current foreground color for lcd7735_print()
78 | void lcd7735_setForeground(uint16_t  fg_color);
79 | Set current background color for lcd7735_print()
80 | void lcd7735_setBackground(uint16_t  bg_colol);
81 | Print text on screen starting from x,y position with appropriate degree
82 |  void lcd7735_print(char *st, int x, int y, int deg);
83 |

Emulation of TTY ASCII green-screen terminal

84 | Initialize LCD for emulation
85 | void lcd7735_init_screen(void *font,uint16_t fg, uint16_t bg, uint8_t orientation);
86 | Put single char of text line on terminal. The only ‘\n’ is emulated (as CRLF).
87 | void lcd7735_puts(char *str);
88 | void lcd7735_putc(char c);
89 |
90 |

Notes

91 |

92 | - The standard printf functionality is redirected if will use Redirect.c
93 | - Two preprocessor defines are used to reducing code size in this mode:
94 |    ONLY_TERMINAL_EMULATOR - excludes all graphics functions
95 |    ONLY_SMALL_FONT - excludes Big and SevenSeg fonts
96 |
97 |

98 |

Please see hw_config.h for hardware settings. 99 | You have to carefuly setup INVEC table due to ST7735 is used SysTick for programing delays.

100 |

Standard libraries like CMSIS, Peripheral, etc are not included

101 |
102 | 103 | -------------------------------------------------------------------------------- /src/ST7735.h: -------------------------------------------------------------------------------- 1 | /*************************************************** 2 | Code has been ported from Arduino Adafruit library. 3 | Copyrigths below: 4 | 5 | This is a library for the Adafruit 1.8" SPI display. 6 | This library works with the Adafruit 1.8" TFT Breakout w/SD card 7 | ----> http://www.adafruit.com/products/358 8 | as well as Adafruit raw 1.8" TFT display 9 | ----> http://www.adafruit.com/products/618 10 | 11 | Written by Limor Fried/Ladyada for Adafruit Industries. 12 | MIT license, all text above must be included in any redistribution 13 | ****************************************************/ 14 | 15 | #ifndef _ADAFRUIT_ST7735H_ 16 | #define _ADAFRUIT_ST7735H_ 17 | 18 | #include "stm32f30x.h" 19 | #include "DefaultFonts.h" 20 | 21 | // some flags for initR() :( 22 | #define INITR_GREENTAB 0x0 23 | #define INITR_REDTAB 0x1 24 | #define INITR_BLACKTAB 0x2 25 | 26 | #define ST7735_TFTWIDTH 128 27 | #define ST7735_TFTHEIGHT 160 28 | 29 | #define ST7735_NOP 0x00 30 | #define ST7735_SWRESET 0x01 31 | #define ST7735_RDDID 0x04 32 | #define ST7735_RDDST 0x09 33 | 34 | #define ST7735_SLPIN 0x10 35 | #define ST7735_SLPOUT 0x11 36 | #define ST7735_PTLON 0x12 37 | #define ST7735_NORON 0x13 38 | 39 | #define ST7735_INVOFF 0x20 40 | #define ST7735_INVON 0x21 41 | #define ST7735_DISPOFF 0x28 42 | #define ST7735_DISPON 0x29 43 | #define ST7735_CASET 0x2A 44 | #define ST7735_RASET 0x2B 45 | #define ST7735_RAMWR 0x2C 46 | #define ST7735_RAMRD 0x2E 47 | 48 | #define ST7735_PTLAR 0x30 49 | #define ST7735_COLMOD 0x3A 50 | #define ST7735_MADCTL 0x36 51 | 52 | #define ST7735_FRMCTR1 0xB1 53 | #define ST7735_FRMCTR2 0xB2 54 | #define ST7735_FRMCTR3 0xB3 55 | #define ST7735_INVCTR 0xB4 56 | #define ST7735_DISSET5 0xB6 57 | 58 | #define ST7735_PWCTR1 0xC0 59 | #define ST7735_PWCTR2 0xC1 60 | #define ST7735_PWCTR3 0xC2 61 | #define ST7735_PWCTR4 0xC3 62 | #define ST7735_PWCTR5 0xC4 63 | #define ST7735_VMCTR1 0xC5 64 | 65 | #define ST7735_RDID1 0xDA 66 | #define ST7735_RDID2 0xDB 67 | #define ST7735_RDID3 0xDC 68 | #define ST7735_RDID4 0xDD 69 | 70 | #define ST7735_PWCTR6 0xFC 71 | 72 | #define ST7735_GMCTRP1 0xE0 73 | #define ST7735_GMCTRN1 0xE1 74 | 75 | // 5-6-5 bits colors samples 76 | #define ST7735_BLACK 0x0000 77 | #define ST7735_BLUE 0x001F 78 | #define ST7735_RED 0xF800 79 | #define ST7735_GREEN 0x07E0 80 | #define ST7735_CYAN 0x07FF 81 | #define ST7735_MAGENTA 0xF81F 82 | #define ST7735_YELLOW 0xFFE0 83 | #define ST7735_WHITE 0xFFFF 84 | 85 | #define INVERT_ON 1 86 | #define INVERT_OFF 0 87 | 88 | #define MADCTL_MY 0x80 89 | #define MADCTL_MX 0x40 90 | #define MADCTL_MV 0x20 91 | #define MADCTL_ML 0x10 92 | #define MADCTL_RGB 0x00 93 | #define MADCTL_BGR 0x08 94 | #define MADCTL_MH 0x04 95 | 96 | #define PORTRAIT 0 97 | #define LANDSAPE 1 98 | #define PORTRAIT_FLIP 2 99 | #define LANDSAPE_FLIP 3 100 | 101 | #define CENTER -1 102 | #define RIGHT -2 103 | 104 | #define bitmapdatatype uint16_t * 105 | 106 | // HW config 107 | extern void lcd7735_setup(void); 108 | extern void delay_ms(uint32_t delay_value); 109 | 110 | // Initialization for ST7735B screens 111 | extern void lcd7735_initB(void); 112 | // Initialization for ST7735R screens (green or red tabs) 113 | extern void lcd7735_initR(uint8_t options); 114 | extern uint8_t lcd7735_getWidth(void); 115 | extern uint8_t lcd7735_getHeight(void); 116 | 117 | extern void lcd7735_invertDisplay(const uint8_t mode); 118 | extern void lcd7735_setRotation(uint8_t m); 119 | extern void lcd7735_fillScreen(uint16_t color); 120 | // Pass 8-bit (each) R,G,B, get back 16-bit packed color 121 | extern uint16_t lcd7735_Color565(uint8_t r, uint8_t g, uint8_t b); 122 | extern void lcd7735_fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); 123 | extern void lcd7735_drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); 124 | extern void lcd7735_drawPixel(int16_t x, int16_t y, uint16_t color); 125 | extern void lcd7735_drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); 126 | extern void lcd7735_setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1); 127 | extern void lcd7735_pushColor(uint16_t color); // CAUTION!! can't be used separately 128 | extern void lcd7735_drawFastLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint16_t color); 129 | extern void lcd7735_drawRect(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2, uint16_t color); 130 | extern void lcd7735_drawCircle(int16_t x, int16_t y, int radius, uint16_t color); 131 | extern void lcd7735_fillCircle(int16_t x, int16_t y, int radius, uint16_t color); 132 | extern void lcd7735_drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int scale); 133 | extern void lcd7735_drawBitmapRotate(int x, int y, int sx, int sy, bitmapdatatype data, int deg, int rox, int roy); 134 | extern void lcd7735_setFont(uint8_t* font); 135 | extern void lcd7735_setTransparent(uint8_t s); 136 | extern void lcd7735_setForeground(uint16_t s); 137 | extern void lcd7735_setBackground(uint16_t s); 138 | extern void lcd7735_print(char *st, int x, int y, int deg); 139 | 140 | extern void lcd7735_init_screen(void *font,uint16_t fg, uint16_t bg, uint8_t orientation); 141 | extern void lcd7735_puts(char *str); 142 | extern void lcd7735_putc(char c); 143 | 144 | #endif 145 | -------------------------------------------------------------------------------- /src/stm32f30x_it.c: -------------------------------------------------------------------------------- 1 | /** 2 | ****************************************************************************** 3 | * @file GPIO_IOToggle/stm32f30x_it.c 4 | * @author MCD Application Team 5 | * @version V1.1.0 6 | * @date 20-September-2012 7 | * @brief Main Interrupt Service Routines. 8 | * This file provides template for all exceptions handler and 9 | * peripherals interrupt service routine. 10 | ****************************************************************************** 11 | * @attention 12 | * 13 | *

© COPYRIGHT 2012 STMicroelectronics

14 | * 15 | * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); 16 | * You may not use this file except in compliance with the License. 17 | * You may obtain a copy of the License at: 18 | * 19 | * http://www.st.com/software_license_agreement_liberty_v2 20 | * 21 | * Unless required by applicable law or agreed to in writing, software 22 | * distributed under the License is distributed on an "AS IS" BASIS, 23 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 24 | * See the License for the specific language governing permissions and 25 | * limitations under the License. 26 | * 27 | ****************************************************************************** 28 | */ 29 | 30 | /* Includes ------------------------------------------------------------------*/ 31 | #include "main.h" 32 | 33 | /** @addtogroup STM32F3_Discovery_Peripheral_Examples 34 | * @{ 35 | */ 36 | 37 | /** @addtogroup GPIO_IOToggle 38 | * @{ 39 | */ 40 | 41 | /* Private typedef -----------------------------------------------------------*/ 42 | /* Private define ------------------------------------------------------------*/ 43 | /* Private macro -------------------------------------------------------------*/ 44 | /* Private variables ---------------------------------------------------------*/ 45 | /* Private function prototypes -----------------------------------------------*/ 46 | /* Private functions ---------------------------------------------------------*/ 47 | 48 | /******************************************************************************/ 49 | /* Cortex-M4 Processor Exceptions Handlers */ 50 | /******************************************************************************/ 51 | 52 | /** 53 | * @brief This function handles NMI exception. 54 | * @param None 55 | * @retval None 56 | */ 57 | void NMI_Handler(void) 58 | { 59 | } 60 | 61 | /** 62 | * @brief This function handles Hard Fault exception. 63 | * @param None 64 | * @retval None 65 | */ 66 | void HardFault_Handler(void) 67 | { 68 | /* Go to infinite loop when Hard Fault exception occurs */ 69 | while (1) 70 | { 71 | } 72 | } 73 | 74 | /** 75 | * @brief This function handles Memory Manage exception. 76 | * @param None 77 | * @retval None 78 | */ 79 | void MemManage_Handler(void) 80 | { 81 | /* Go to infinite loop when Memory Manage exception occurs */ 82 | while (1) 83 | { 84 | } 85 | } 86 | 87 | /** 88 | * @brief This function handles Bus Fault exception. 89 | * @param None 90 | * @retval None 91 | */ 92 | void BusFault_Handler(void) 93 | { 94 | /* Go to infinite loop when Bus Fault exception occurs */ 95 | while (1) 96 | { 97 | } 98 | } 99 | 100 | /** 101 | * @brief This function handles Usage Fault exception. 102 | * @param None 103 | * @retval None 104 | */ 105 | void UsageFault_Handler(void) 106 | { 107 | /* Go to infinite loop when Usage Fault exception occurs */ 108 | while (1) 109 | { 110 | } 111 | } 112 | 113 | /** 114 | * @brief This function handles SVCall exception. 115 | * @param None 116 | * @retval None 117 | */ 118 | void SVC_Handler(void) 119 | { 120 | } 121 | 122 | /** 123 | * @brief This function handles Debug Monitor exception. 124 | * @param None 125 | * @retval None 126 | */ 127 | void DebugMon_Handler(void) 128 | { 129 | } 130 | 131 | /** 132 | * @brief This function handles PendSVC exception. 133 | * @param None 134 | * @retval None 135 | */ 136 | void PendSV_Handler(void) 137 | { 138 | } 139 | 140 | /** 141 | * @brief This function handles SysTick Handler. 142 | * @param None 143 | * @retval None 144 | */ 145 | void SysTick_Handler(void) 146 | { 147 | TimingDelay_Decrement(); 148 | } 149 | 150 | /******************************************************************************/ 151 | /* STM32F30x Peripherals Interrupt Handlers */ 152 | /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ 153 | /* available peripheral interrupt handler's name please refer to the startup */ 154 | /* file (startup_stm32f30x.s). */ 155 | /******************************************************************************/ 156 | extern __IO uint32_t UserButtonPressed; 157 | __IO uint32_t i =0; 158 | /** 159 | * @brief This function handles EXTI0_IRQ Handler. 160 | * @param None 161 | * @retval None 162 | */ 163 | void EXTI0_IRQHandler(void) { 164 | if ((EXTI_GetITStatus(USER_BUTTON_EXTI_LINE) == SET)&&(STM_EVAL_PBGetState(BUTTON_USER) != RESET)) { 165 | /* Delay */ 166 | for(i=0; i<0x7FFFF; i++); 167 | 168 | /* Wait for SEL button to be pressed */ 169 | while(STM_EVAL_PBGetState(BUTTON_USER) != RESET); 170 | /* Delay */ 171 | for(i=0; i<0x7FFFF; i++); 172 | UserButtonPressed++; 173 | 174 | if (UserButtonPressed > 0x2) 175 | UserButtonPressed = 0x1; 176 | 177 | /* Clear the EXTI line pending bit */ 178 | EXTI_ClearITPendingBit(USER_BUTTON_EXTI_LINE); 179 | } 180 | } 181 | 182 | /** 183 | * @brief This function handles PPP interrupt request. 184 | * @param None 185 | * @retval None 186 | */ 187 | /*void PPP_IRQHandler(void) 188 | { 189 | }*/ 190 | 191 | /** 192 | * @} 193 | */ 194 | 195 | /** 196 | * @} 197 | */ 198 | 199 | 200 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 201 | -------------------------------------------------------------------------------- /src/hw_config.c: -------------------------------------------------------------------------------- 1 | /**************************************************************************************** 2 | * 3 | * Hardware configuration and low level functions 4 | * 5 | * The idea of HW initialization and configuration have taken on from 6 | * http://vg.ucoz.ru/load/stm32_ickhodnye_teksty_programm_na_si/stm32_biblioteka_podkljuchenija_displeja_na_kontrollere_st7735_dlja_stm32f4/16-1-0-41 7 | ****************************************************************************************/ 8 | #include 9 | #include "stm32f30x.h" 10 | #include "stm32f3_discovery.h" 11 | #include "platform_config.h" 12 | #include "stm32f30x_gpio.h" 13 | #include "stm32f30x_rcc.h" 14 | #include "stm32f30x_spi.h" 15 | 16 | #include "hw_config.h" 17 | 18 | static __IO uint32_t TimingDelay; 19 | 20 | #ifndef __ENABLE_NOT_STABLE 21 | // not work :( It is possible that GPIO pin doesn't switch to input mode, but I don't know hot to do it. 22 | void receive_data(const uint8_t cmd, uint8_t *data, uint8_t cnt) { 23 | uint8_t i; 24 | LCD_DC0; 25 | while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); 26 | SPI_SendData(SPI2, cmd); 27 | //while(SPI2->SR & SPI_SR_BSY); 28 | while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); 29 | LCD_DC1; 30 | LCD_DC0; 31 | LCD_DC1; 32 | SPI_BiDirectionalLineConfig(SPI2,SPI_Direction_Rx); 33 | for(i=0; iSR & SPI_SR_BSY); 35 | if( SPI2->SR & SPI_I2S_FLAG_OVR ) 36 | STM_EVAL_LEDOn(LED3); 37 | else 38 | STM_EVAL_LEDOff(LED3); 39 | if( SPI2->SR & I2S_FLAG_UDR ) 40 | STM_EVAL_LEDOn(LED7); 41 | else 42 | STM_EVAL_LEDOff(LED7); 43 | while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET); 44 | data[i] = SPI_ReceiveData8(SPI2); 45 | } 46 | LCD_DC0; 47 | SPI_BiDirectionalLineConfig(SPI2,SPI_Direction_Tx); 48 | LCD_CS1; 49 | LCD_CS0; 50 | } 51 | 52 | #endif 53 | 54 | // Send byte via SPI to controller 55 | void lcd7735_senddata(const uint8_t data) { 56 | #ifdef LCD_TO_SPI2 57 | while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); 58 | SPI_SendData(SPI2, data); 59 | #else 60 | unsigned char i; 61 | for(i=0; i<8; i++) { 62 | if (data & 0x80) LCD_MOSI1; 63 | else LCD_MOSI0; 64 | data = data<<1; 65 | LCD_SCK0; 66 | LCD_SCK1; 67 | } 68 | #endif 69 | } 70 | 71 | // Send byte via SPI to controller 72 | void lcd7735_senddata16(const uint16_t data) { 73 | #ifdef LCD_TO_SPI2 74 | while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); 75 | SPI_I2S_SendData(SPI2, data); 76 | #else 77 | lcd7735_senddata(data >> 8); 78 | lcd7735_senddata(data &0xFF); 79 | #endif 80 | } 81 | 82 | // Send control command to controller 83 | void lcd7735_sendCmd(const uint8_t cmd) { 84 | LCD_DC0; 85 | lcd7735_senddata(cmd); 86 | #ifdef LCD_TO_SPI2 87 | while(SPI2->SR & SPI_SR_BSY); 88 | #endif 89 | } 90 | 91 | // Send parameters o command to controller 92 | void lcd7735_sendData(const uint8_t data) { 93 | LCD_DC1; 94 | lcd7735_senddata(data); 95 | #ifdef LCD_TO_SPI2 96 | while(SPI2->SR & SPI_SR_BSY); 97 | #endif 98 | } 99 | 100 | // Init hardware 101 | void lcd7735_setup(void) { 102 | 103 | #ifdef LCD_TO_SPI2 // hardware SIP 104 | SPI_InitTypeDef SPI_InitStructure; 105 | #endif 106 | GPIO_InitTypeDef GPIO_InitStructure; 107 | 108 | // SystemInit(); 109 | 110 | STM_EVAL_LEDInit(LED3); 111 | STM_EVAL_LEDInit(LED4); 112 | STM_EVAL_LEDInit(LED5); 113 | STM_EVAL_LEDInit(LED6); 114 | STM_EVAL_LEDInit(LED7); 115 | STM_EVAL_LEDInit(LED8); 116 | STM_EVAL_LEDInit(LED9); 117 | STM_EVAL_LEDInit(LED10); 118 | 119 | /* Setup SysTick Timer for 1 msec interrupts */ 120 | if (SysTick_Config(SystemCoreClock / 1000)) { 121 | /* Capture error */ 122 | while (1) {} 123 | } 124 | 125 | RCC_AHB1PeriphClockCmd(LCD_AHB1_GPIO, ENABLE); 126 | 127 | #ifdef LCD_TO_SPI2 // hardware SIP 128 | 129 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); 130 | // SCK (Pin_13), MOSI (Pin_15) SPI2 131 | GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2); // SPI2_CLK 132 | GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2); // SPI2_MOSI 133 | 134 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15; 135 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; 136 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Config; 137 | GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; 138 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; 139 | GPIO_Init(GPIOB, &GPIO_InitStructure); 140 | 141 | SPI_DeInit(SPI2); 142 | SPI_InitStructure.SPI_Mode = SPI_Mode_Master; 143 | SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Rx; 144 | SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; 145 | SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; 146 | SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; 147 | SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; 148 | SPI_InitStructure.SPI_BaudRatePrescaler = SPI2_BaudRatePrescaler; 149 | SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; 150 | 151 | SPI_Init(SPI2, &SPI_InitStructure); 152 | SPI_Cmd(SPI2, ENABLE); 153 | 154 | #ifndef LCD_SOFT_RESET 155 | GPIO_InitStructure.GPIO_Pin = LCD_CSE_PIN | LCD_A0_PIN | LCD_RST_PIN; 156 | #else 157 | GPIO_InitStructure.GPIO_Pin = LCD_CSE_PIN | LCD_A0_PIN ; 158 | #endif /* LCD_SOFT_RESET */ 159 | 160 | #else // Software SPI configuration 161 | 162 | #ifndef LCD_SOFT_RESET 163 | GPIO_InitStructure.GPIO_Pin =(1< 2 | 3 | 4 | 1.0 5 | 6 |
### uVision Project, (C) Keil Software
7 | 8 | 9 | *.c 10 | *.s*; *.src; *.a* 11 | *.obj 12 | *.lib 13 | *.txt; *.h; *.inc 14 | *.plm 15 | *.cpp 16 | 17 | 18 | 19 | 0 20 | 0 21 | 22 | 23 | 24 | ST7735 25 | 0x4 26 | ARM-ADS 27 | 28 | 72000000 29 | 30 | 0 31 | 1 32 | 0 33 | 1 34 | 35 | 36 | 1 37 | 65535 38 | 0 39 | 0 40 | 0 41 | 42 | 43 | 79 44 | 66 45 | 8 46 | .\ 47 | 48 | 49 | 1 50 | 1 51 | 1 52 | 0 53 | 1 54 | 1 55 | 0 56 | 1 57 | 0 58 | 0 59 | 0 60 | 0 61 | 62 | 63 | 1 64 | 1 65 | 1 66 | 1 67 | 1 68 | 1 69 | 1 70 | 0 71 | 0 72 | 73 | 74 | 1 75 | 0 76 | 1 77 | 78 | 255 79 | 80 | SARMCM3.DLL 81 | -REMAP -MPU 82 | DCM.DLL 83 | -pCM4 84 | SARMCM3.DLL 85 | -MPU 86 | TCM.DLL 87 | -pCM4 88 | 89 | 90 | 0 91 | 1 92 | 1 93 | 1 94 | 1 95 | 1 96 | 1 97 | 1 98 | 1 99 | 1 100 | 1 101 | 1 102 | 1 103 | 1 104 | 0 105 | 1 106 | 1 107 | 0 108 | 0 109 | 1 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | BIN\UL2CM3.DLL 121 | 122 | 123 | 124 | 0 125 | UL2CM3 126 | UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F3xx_256 -FL040000 -FS08000000 -FP0($$Device:STM32F303VC$Flash\STM32F3xx_256.FLM) 127 | 128 | 129 | 130 | 131 | 0 132 | 133 | 134 | 0 135 | 1 136 | 0 137 | 0 138 | 0 139 | 0 140 | 0 141 | 0 142 | 0 143 | 0 144 | 0 145 | 0 146 | 0 147 | 0 148 | 0 149 | 0 150 | 0 151 | 0 152 | 0 153 | 0 154 | 0 155 | 0 156 | 3 157 | 0 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | src 166 | 1 167 | 0 168 | 0 169 | 0 170 | 171 | 1 172 | 1 173 | 1 174 | 0 175 | 0 176 | 37 177 | 0 178 | 1 179 | 9 180 | 0 181 | .\main.c 182 | main.c 183 | 0 184 | 0 185 | 186 | 187 | 1 188 | 2 189 | 5 190 | 0 191 | 0 192 | 0 193 | 0 194 | 0 195 | 0 196 | 0 197 | .\main.h 198 | main.h 199 | 0 200 | 0 201 | 202 | 203 | 204 | 205 | liblcd 206 | 1 207 | 0 208 | 0 209 | 0 210 | 211 | 2 212 | 3 213 | 1 214 | 0 215 | 0 216 | 0 217 | 0 218 | 0 219 | 0 220 | 0 221 | .\src\st7735\lcd7735.c 222 | lcd7735.c 223 | 0 224 | 0 225 | 226 | 227 | 2 228 | 4 229 | 5 230 | 0 231 | 0 232 | 0 233 | 0 234 | 0 235 | 0 236 | 0 237 | .\src\st7735\font7x15.h 238 | font7x15.h 239 | 0 240 | 0 241 | 242 | 243 | 2 244 | 5 245 | 5 246 | 0 247 | 0 248 | 0 249 | 0 250 | 0 251 | 0 252 | 0 253 | .\src\st7735\lcd7735.h 254 | lcd7735.h 255 | 0 256 | 0 257 | 258 | 259 | 260 |
261 | -------------------------------------------------------------------------------- /MDK/st7735.coproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 20 | 21 | 47 | 48 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 87 | 88 | 112 | 113 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | -------------------------------------------------------------------------------- /MDK/ST7735.uvproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.1 5 | 6 |
### uVision Project, (C) Keil Software
7 | 8 | 9 | 10 | ST7735 11 | 0x4 12 | ARM-ADS 13 | 14 | 15 | STM32F303VC 16 | STMicroelectronics 17 | IROM(0x08000000,0x40000) IRAM(0x20000000,0xC000) IRAM2(0x10000000,0x2000) CPUTYPE("Cortex-M4") FPU2 CLOCK(72000000) ELITTLE 18 | 19 | 20 | UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F3xx_256 -FS08000000 -FL040000 -FP0($$Device:STM32F303VC$Flash\STM32F3xx_256.FLM)) 21 | 6331 22 | $$Device:STM32F303VC$Device\Include\STM32F30x.h 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | $$Device:STM32F303VC$SVD\STM32F30x.svd 33 | 0 34 | 0 35 | 36 | 37 | 38 | 39 | 40 | 41 | 0 42 | 0 43 | 0 44 | 0 45 | 1 46 | 47 | .\ 48 | ST7735 49 | 1 50 | 0 51 | 0 52 | 1 53 | 1 54 | .\ 55 | 1 56 | 0 57 | 0 58 | 59 | 0 60 | 0 61 | 62 | 63 | 0 64 | 0 65 | 0 66 | 0 67 | 68 | 69 | 0 70 | 0 71 | 72 | 73 | 0 74 | 0 75 | 76 | 77 | 0 78 | 0 79 | 80 | 81 | 0 82 | 0 83 | 84 | 0 85 | 86 | 87 | 88 | 0 89 | 0 90 | 0 91 | 0 92 | 0 93 | 1 94 | 0 95 | 0 96 | 0 97 | 0 98 | 3 99 | 100 | 101 | 1 102 | 103 | 104 | SARMCM3.DLL 105 | -REMAP -MPU 106 | DCM.DLL 107 | -pCM4 108 | SARMCM3.DLL 109 | -MPU 110 | TCM.DLL 111 | -pCM4 112 | 113 | 114 | 115 | 1 116 | 0 117 | 0 118 | 0 119 | 16 120 | 121 | 122 | 0 123 | 1 124 | 1 125 | 1 126 | 1 127 | 1 128 | 1 129 | 1 130 | 0 131 | 132 | 133 | 1 134 | 1 135 | 1 136 | 1 137 | 1 138 | 1 139 | 0 140 | 1 141 | 1 142 | 143 | 0 144 | 1 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | BIN\UL2CM3.DLL 159 | 160 | 161 | 162 | 163 | 1 164 | 0 165 | 0 166 | 1 167 | 0 168 | -1 169 | 170 | 1 171 | BIN\UL2CM3.DLL 172 | 173 | 174 | 175 | 176 | 177 | 0 178 | 179 | 180 | 181 | 0 182 | 1 183 | 1 184 | 1 185 | 1 186 | 1 187 | 1 188 | 1 189 | 0 190 | 1 191 | 1 192 | 0 193 | 1 194 | 1 195 | 0 196 | 0 197 | 1 198 | 1 199 | 1 200 | 1 201 | 1 202 | 1 203 | 1 204 | 1 205 | 1 206 | 0 207 | 0 208 | "Cortex-M4" 209 | 210 | 0 211 | 0 212 | 0 213 | 1 214 | 1 215 | 0 216 | 0 217 | 2 218 | 1 219 | 0 220 | 8 221 | 0 222 | 0 223 | 0 224 | 3 225 | 3 226 | 0 227 | 0 228 | 0 229 | 0 230 | 0 231 | 0 232 | 0 233 | 0 234 | 0 235 | 0 236 | 1 237 | 0 238 | 0 239 | 0 240 | 0 241 | 1 242 | 0 243 | 244 | 245 | 0 246 | 0x0 247 | 0x0 248 | 249 | 250 | 0 251 | 0x0 252 | 0x0 253 | 254 | 255 | 0 256 | 0x0 257 | 0x0 258 | 259 | 260 | 0 261 | 0x0 262 | 0x0 263 | 264 | 265 | 0 266 | 0x0 267 | 0x0 268 | 269 | 270 | 0 271 | 0x0 272 | 0x0 273 | 274 | 275 | 0 276 | 0x20000000 277 | 0xc000 278 | 279 | 280 | 1 281 | 0x8000000 282 | 0x40000 283 | 284 | 285 | 0 286 | 0x0 287 | 0x0 288 | 289 | 290 | 0 291 | 0x0 292 | 0x0 293 | 294 | 295 | 0 296 | 0x0 297 | 0x0 298 | 299 | 300 | 0 301 | 0x0 302 | 0x0 303 | 304 | 305 | 1 306 | 0x8000000 307 | 0x40000 308 | 309 | 310 | 0 311 | 0x0 312 | 0x0 313 | 314 | 315 | 0 316 | 0x0 317 | 0x0 318 | 319 | 320 | 0 321 | 0x0 322 | 0x0 323 | 324 | 325 | 0 326 | 0x0 327 | 0x0 328 | 329 | 330 | 0 331 | 0x20000000 332 | 0xc000 333 | 334 | 335 | 0 336 | 0x10000000 337 | 0x2000 338 | 339 | 340 | 341 | 342 | 343 | 1 344 | 1 345 | 0 346 | 0 347 | 0 348 | 0 349 | 0 350 | 0 351 | 0 352 | 0 353 | 0 354 | 0 355 | 0 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 1 365 | 0 366 | 0 367 | 0 368 | 0 369 | 0 370 | 0 371 | 0 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 1 381 | 0 382 | 0 383 | 0 384 | 1 385 | 0 386 | 0x08000000 387 | 0x20000000 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | src 400 | 401 | 402 | main.c 403 | 1 404 | .\main.c 405 | 406 | 407 | main.h 408 | 5 409 | .\main.h 410 | 411 | 412 | 413 | 414 | liblcd 415 | 416 | 417 | lcd7735.c 418 | 1 419 | .\src\st7735\lcd7735.c 420 | 421 | 422 | font7x15.h 423 | 5 424 | .\src\st7735\font7x15.h 425 | 426 | 427 | lcd7735.h 428 | 5 429 | .\src\st7735\lcd7735.h 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 |
438 | -------------------------------------------------------------------------------- /MDK/ST7735.uvoptx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.0 5 | 6 |
### uVision Project, (C) Keil Software
7 | 8 | 9 | *.c 10 | *.s*; *.src; *.a* 11 | *.obj 12 | *.lib 13 | *.txt; *.h; *.inc 14 | *.plm 15 | *.cpp 16 | 17 | 18 | 19 | 0 20 | 0 21 | 22 | 23 | 24 | ST7735 25 | 0x4 26 | ARM-ADS 27 | 28 | 72000000 29 | 30 | 1 31 | 1 32 | 0 33 | 1 34 | 35 | 36 | 1 37 | 65535 38 | 0 39 | 0 40 | 0 41 | 42 | 43 | 79 44 | 66 45 | 8 46 | .\ 47 | 48 | 49 | 1 50 | 1 51 | 1 52 | 0 53 | 1 54 | 1 55 | 0 56 | 1 57 | 0 58 | 0 59 | 0 60 | 0 61 | 62 | 63 | 1 64 | 1 65 | 1 66 | 1 67 | 1 68 | 1 69 | 1 70 | 0 71 | 0 72 | 73 | 74 | 1 75 | 0 76 | 1 77 | 78 | 255 79 | 80 | SARMCM3.DLL 81 | -REMAP -MPU 82 | DCM.DLL 83 | -pCM4 84 | SARMCM3.DLL 85 | -MPU 86 | TCM.DLL 87 | -pCM4 88 | 89 | 90 | 0 91 | 1 92 | 1 93 | 1 94 | 1 95 | 1 96 | 1 97 | 1 98 | 1 99 | 1 100 | 1 101 | 1 102 | 1 103 | 1 104 | 0 105 | 1 106 | 1 107 | 0 108 | 0 109 | 11 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | STLink\ST-LINKIII-KEIL_SWO.dll 121 | 122 | 123 | 124 | 0 125 | DLGTARM 126 | (1010=703,184,1113,727,0)(1007=-1,-1,-1,-1,0)(1008=64,383,430,605,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) 127 | 128 | 129 | 0 130 | ARMDBGFLAGS 131 | 132 | 133 | 134 | 0 135 | DLGUARM 136 | (105=-1,-1,-1,-1,0) 137 | 138 | 139 | 0 140 | ST-LINKIII-KEIL_SWO 141 | -U-O206 -O206 -S3 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F3xx_256.FLM -FS08000000 -FL040000 -FP0($$Device:STM32F303VC$Flash\STM32F3xx_256.FLM) 142 | 143 | 144 | 0 145 | UL2CM3 146 | UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F3xx_256 -FL040000 -FS08000000 -FP0($$Device:STM32F303VC$Flash\STM32F3xx_256.FLM) 147 | 148 | 149 | 150 | 151 | 0 152 | 0 153 | 166 154 | 1 155 |
134223532
156 | 0 157 | 0 158 | 0 159 | 0 160 | 0 161 | 1 162 | D:\Yashka\@STM32\ST7735\src\stm32f30x_it.c 163 | 164 | \\ST7735\../src/stm32f30x_it.c\166 165 |
166 |
167 | 168 | 169 | 0 170 | 1 171 | _screen.c.col,0x0A 172 | 173 | 174 | 1 175 | 1 176 | _screen.c.row,0x0A 177 | 178 | 179 | 180 | 181 | 0 182 | 2 183 | _screen 184 | 185 | 186 | 187 | 188 | 1 189 | 8 190 | \\ST7735\../src/ST7735.c\_screen.scr 191 | 192 | 193 | 194 | 0 195 | 196 | 197 | 0 198 | 1 199 | 1 200 | 0 201 | 0 202 | 0 203 | 0 204 | 1 205 | 0 206 | 0 207 | 0 208 | 0 209 | 0 210 | 0 211 | 0 212 | 0 213 | 0 214 | 0 215 | 0 216 | 0 217 | 0 218 | 0 219 | 0 220 | 0 221 | 222 | 223 | 224 | 225 | 226 | System Viewer\GPIOB 227 | 35905 228 | 229 | 230 | System Viewer\SPI2 231 | 35904 232 | 233 | 234 |
235 |
236 | 237 | 238 | MDK-ARM 239 | 0 240 | 0 241 | 0 242 | 0 243 | 244 | 1 245 | 1 246 | 2 247 | 0 248 | 0 249 | 0 250 | 0 251 | 171 252 | 179 253 | 0 254 | ..\..\STM32F3_Libraries\Libraries\CMSIS\Device\ST\STM32F30x\Source\Templates\arm\startup_stm32f30x.s 255 | startup_stm32f30x.s 256 | 0 257 | 0 258 | 259 | 260 | 261 | 262 | STM32F3X_Discovery 263 | 0 264 | 0 265 | 0 266 | 0 267 | 268 | 2 269 | 2 270 | 1 271 | 1 272 | 0 273 | 5 274 | 0 275 | 0 276 | 0 277 | 0 278 | ..\..\STM32F3_Libraries\Utilities\STM32F3_Discovery\stm32f3_discovery.c 279 | stm32f3_discovery.c 280 | 0 281 | 0 282 | 283 | 284 | 285 | 286 | STM32F30x_StdPeriph_Driver 287 | 0 288 | 0 289 | 0 290 | 0 291 | 292 | 3 293 | 3 294 | 1 295 | 0 296 | 0 297 | 0 298 | 0 299 | 0 300 | 0 301 | 0 302 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_crc.c 303 | stm32f30x_crc.c 304 | 0 305 | 0 306 | 307 | 308 | 3 309 | 4 310 | 1 311 | 0 312 | 0 313 | 0 314 | 0 315 | 0 316 | 0 317 | 0 318 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_dbgmcu.c 319 | stm32f30x_dbgmcu.c 320 | 0 321 | 0 322 | 323 | 324 | 3 325 | 5 326 | 1 327 | 0 328 | 0 329 | 0 330 | 0 331 | 0 332 | 0 333 | 0 334 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_dma.c 335 | stm32f30x_dma.c 336 | 0 337 | 0 338 | 339 | 340 | 3 341 | 6 342 | 1 343 | 0 344 | 0 345 | 0 346 | 0 347 | 0 348 | 0 349 | 0 350 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_exti.c 351 | stm32f30x_exti.c 352 | 0 353 | 0 354 | 355 | 356 | 3 357 | 7 358 | 1 359 | 1 360 | 0 361 | 23 362 | 0 363 | 0 364 | 0 365 | 0 366 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_gpio.c 367 | stm32f30x_gpio.c 368 | 0 369 | 0 370 | 371 | 372 | 3 373 | 8 374 | 1 375 | 0 376 | 0 377 | 0 378 | 0 379 | 0 380 | 0 381 | 0 382 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_misc.c 383 | stm32f30x_misc.c 384 | 0 385 | 0 386 | 387 | 388 | 3 389 | 9 390 | 1 391 | 0 392 | 0 393 | 0 394 | 0 395 | 0 396 | 0 397 | 0 398 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_pwr.c 399 | stm32f30x_pwr.c 400 | 0 401 | 0 402 | 403 | 404 | 3 405 | 10 406 | 1 407 | 0 408 | 0 409 | 0 410 | 0 411 | 0 412 | 0 413 | 0 414 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_rcc.c 415 | stm32f30x_rcc.c 416 | 0 417 | 0 418 | 419 | 420 | 3 421 | 11 422 | 1 423 | 0 424 | 0 425 | 0 426 | 0 427 | 0 428 | 0 429 | 0 430 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_rtc.c 431 | stm32f30x_rtc.c 432 | 0 433 | 0 434 | 435 | 436 | 3 437 | 12 438 | 1 439 | 0 440 | 0 441 | 53 442 | 0 443 | 0 444 | 0 445 | 0 446 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_spi.c 447 | stm32f30x_spi.c 448 | 0 449 | 0 450 | 451 | 452 | 3 453 | 13 454 | 1 455 | 0 456 | 0 457 | 0 458 | 0 459 | 0 460 | 0 461 | 0 462 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_syscfg.c 463 | stm32f30x_syscfg.c 464 | 0 465 | 0 466 | 467 | 468 | 3 469 | 14 470 | 1 471 | 0 472 | 0 473 | 0 474 | 0 475 | 0 476 | 0 477 | 0 478 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_tim.c 479 | stm32f30x_tim.c 480 | 0 481 | 0 482 | 483 | 484 | 485 | 486 | src 487 | 1 488 | 0 489 | 0 490 | 0 491 | 492 | 4 493 | 15 494 | 1 495 | 0 496 | 0 497 | 3 498 | 0 499 | 155 500 | 176 501 | 0 502 | ..\src\stm32f30x_it.c 503 | stm32f30x_it.c 504 | 0 505 | 0 506 | 507 | 508 | 4 509 | 16 510 | 1 511 | 0 512 | 0 513 | 54 514 | 0 515 | 0 516 | 0 517 | 0 518 | ..\..\STM32F3_Libraries\Libraries\CMSIS\Device\ST\STM32F30x\Source\Templates\system_stm32f30x.c 519 | system_stm32f30x.c 520 | 0 521 | 0 522 | 523 | 524 | 4 525 | 17 526 | 1 527 | 0 528 | 0 529 | 0 530 | 0 531 | 0 532 | 0 533 | 0 534 | ..\src\DefaultFonts.c 535 | DefaultFonts.c 536 | 0 537 | 0 538 | 539 | 540 | 4 541 | 18 542 | 1 543 | 0 544 | 0 545 | 1 546 | 0 547 | 74 548 | 93 549 | 0 550 | ..\src\hw_config.c 551 | hw_config.c 552 | 0 553 | 0 554 | 555 | 556 | 4 557 | 19 558 | 1 559 | 0 560 | 0 561 | 10 562 | 0 563 | 67 564 | 88 565 | 0 566 | ..\src\main.c 567 | main.c 568 | 0 569 | 0 570 | 571 | 572 | 4 573 | 20 574 | 1 575 | 0 576 | 0 577 | 0 578 | 0 579 | 595 580 | 596 581 | 0 582 | ..\src\ST7735.c 583 | ST7735.c 584 | 0 585 | 0 586 | 587 | 588 | 4 589 | 21 590 | 1 591 | 0 592 | 0 593 | 0 594 | 0 595 | 12 596 | 34 597 | 0 598 | ..\src\Retarget.c 599 | Retarget.c 600 | 0 601 | 0 602 | 603 | 604 | 605 |
606 | -------------------------------------------------------------------------------- /MDK/ST7735.uvprojx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 2.1 5 | 6 |
### uVision Project, (C) Keil Software
7 | 8 | 9 | 10 | ST7735 11 | 0x4 12 | ARM-ADS 13 | 14 | 15 | STM32F303VC 16 | STMicroelectronics 17 | IROM(0x08000000,0x40000) IRAM(0x20000000,0xC000) IRAM2(0x10000000,0x2000) CPUTYPE("Cortex-M4") FPU2 CLOCK(72000000) ELITTLE 18 | 19 | 20 | UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F3xx_256 -FS08000000 -FL040000 -FP0($$Device:STM32F303VC$Flash\STM32F3xx_256.FLM)) 21 | 6331 22 | $$Device:STM32F303VC$Device\Include\STM32F30x.h 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | $$Device:STM32F303VC$SVD\STM32F30x.svd 33 | 0 34 | 0 35 | 36 | 37 | 38 | 39 | 40 | 41 | 0 42 | 0 43 | 0 44 | 0 45 | 1 46 | 47 | .\build\ 48 | ST7735 49 | 1 50 | 0 51 | 1 52 | 1 53 | 1 54 | .\ 55 | 1 56 | 0 57 | 0 58 | 59 | 0 60 | 0 61 | 62 | 63 | 0 64 | 0 65 | 0 66 | 0 67 | 68 | 69 | 0 70 | 0 71 | 72 | 73 | 0 74 | 0 75 | 76 | 77 | 0 78 | 0 79 | 80 | 81 | 0 82 | 0 83 | 84 | 0 85 | 86 | 87 | 88 | 0 89 | 0 90 | 0 91 | 0 92 | 0 93 | 1 94 | 0 95 | 0 96 | 0 97 | 0 98 | 3 99 | 100 | 101 | 1 102 | 103 | 104 | SARMCM3.DLL 105 | -REMAP -MPU 106 | DCM.DLL 107 | -pCM4 108 | SARMCM3.DLL 109 | -MPU 110 | TCM.DLL 111 | -pCM4 112 | 113 | 114 | 115 | 1 116 | 0 117 | 0 118 | 0 119 | 16 120 | 121 | 122 | 0 123 | 1 124 | 1 125 | 1 126 | 1 127 | 1 128 | 1 129 | 1 130 | 0 131 | 132 | 133 | 1 134 | 1 135 | 1 136 | 1 137 | 1 138 | 1 139 | 0 140 | 1 141 | 1 142 | 143 | 0 144 | 11 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | STLink\ST-LINKIII-KEIL_SWO.dll 159 | 160 | 161 | 162 | 163 | 1 164 | 0 165 | 0 166 | 1 167 | 1 168 | 4096 169 | 170 | 1 171 | BIN\UL2CM3.DLL 172 | "" () 173 | 174 | 175 | 176 | 177 | 0 178 | 179 | 180 | 181 | 0 182 | 1 183 | 1 184 | 1 185 | 1 186 | 1 187 | 1 188 | 1 189 | 0 190 | 1 191 | 1 192 | 0 193 | 1 194 | 1 195 | 0 196 | 0 197 | 1 198 | 1 199 | 1 200 | 1 201 | 1 202 | 1 203 | 1 204 | 1 205 | 1 206 | 0 207 | 0 208 | "Cortex-M4" 209 | 210 | 0 211 | 0 212 | 0 213 | 1 214 | 1 215 | 0 216 | 0 217 | 2 218 | 1 219 | 0 220 | 8 221 | 0 222 | 0 223 | 0 224 | 3 225 | 3 226 | 0 227 | 0 228 | 0 229 | 0 230 | 0 231 | 0 232 | 0 233 | 0 234 | 0 235 | 0 236 | 1 237 | 0 238 | 0 239 | 0 240 | 0 241 | 1 242 | 0 243 | 244 | 245 | 0 246 | 0x0 247 | 0x0 248 | 249 | 250 | 0 251 | 0x0 252 | 0x0 253 | 254 | 255 | 0 256 | 0x0 257 | 0x0 258 | 259 | 260 | 0 261 | 0x0 262 | 0x0 263 | 264 | 265 | 0 266 | 0x0 267 | 0x0 268 | 269 | 270 | 0 271 | 0x0 272 | 0x0 273 | 274 | 275 | 0 276 | 0x20000000 277 | 0xc000 278 | 279 | 280 | 1 281 | 0x8000000 282 | 0x40000 283 | 284 | 285 | 0 286 | 0x0 287 | 0x0 288 | 289 | 290 | 1 291 | 0x0 292 | 0x0 293 | 294 | 295 | 1 296 | 0x0 297 | 0x0 298 | 299 | 300 | 1 301 | 0x0 302 | 0x0 303 | 304 | 305 | 1 306 | 0x8000000 307 | 0x40000 308 | 309 | 310 | 1 311 | 0x0 312 | 0x0 313 | 314 | 315 | 0 316 | 0x0 317 | 0x0 318 | 319 | 320 | 0 321 | 0x0 322 | 0x0 323 | 324 | 325 | 0 326 | 0x0 327 | 0x0 328 | 329 | 330 | 0 331 | 0x20000000 332 | 0xc000 333 | 334 | 335 | 0 336 | 0x10000000 337 | 0x2000 338 | 339 | 340 | 341 | 342 | 343 | 1 344 | 1 345 | 0 346 | 0 347 | 0 348 | 0 349 | 0 350 | 0 351 | 0 352 | 0 353 | 0 354 | 0 355 | 0 356 | 357 | 358 | USE_STDPERIPH_DRIVER, STM32F30X, USE_STM32303C_EVAL 359 | 360 | ..\src;..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\inc;..\..\STM32F3_Libraries\Utilities\STM32F3_Discovery;..\..\STM32F3_Libraries\Libraries\CMSIS\Include 361 | 362 | 363 | 364 | 1 365 | 0 366 | 0 367 | 0 368 | 0 369 | 0 370 | 0 371 | 0 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 1 381 | 0 382 | 0 383 | 0 384 | 1 385 | 0 386 | 0x08000000 387 | 0x20000000 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | MDK-ARM 400 | 401 | 402 | startup_stm32f30x.s 403 | 2 404 | ..\..\STM32F3_Libraries\Libraries\CMSIS\Device\ST\STM32F30x\Source\Templates\arm\startup_stm32f30x.s 405 | 406 | 407 | 408 | 409 | STM32F3X_Discovery 410 | 411 | 412 | stm32f3_discovery.c 413 | 1 414 | ..\..\STM32F3_Libraries\Utilities\STM32F3_Discovery\stm32f3_discovery.c 415 | 416 | 417 | 418 | 419 | STM32F30x_StdPeriph_Driver 420 | 421 | 422 | stm32f30x_crc.c 423 | 1 424 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_crc.c 425 | 426 | 427 | stm32f30x_dbgmcu.c 428 | 1 429 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_dbgmcu.c 430 | 431 | 432 | stm32f30x_dma.c 433 | 1 434 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_dma.c 435 | 436 | 437 | stm32f30x_exti.c 438 | 1 439 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_exti.c 440 | 441 | 442 | stm32f30x_gpio.c 443 | 1 444 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_gpio.c 445 | 446 | 447 | stm32f30x_misc.c 448 | 1 449 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_misc.c 450 | 451 | 452 | stm32f30x_pwr.c 453 | 1 454 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_pwr.c 455 | 456 | 457 | stm32f30x_rcc.c 458 | 1 459 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_rcc.c 460 | 461 | 462 | stm32f30x_rtc.c 463 | 1 464 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_rtc.c 465 | 466 | 467 | stm32f30x_spi.c 468 | 1 469 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_spi.c 470 | 471 | 472 | stm32f30x_syscfg.c 473 | 1 474 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_syscfg.c 475 | 476 | 477 | stm32f30x_tim.c 478 | 1 479 | ..\..\STM32F3_Libraries\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_tim.c 480 | 481 | 482 | 483 | 484 | src 485 | 486 | 487 | stm32f30x_it.c 488 | 1 489 | ..\src\stm32f30x_it.c 490 | 491 | 492 | system_stm32f30x.c 493 | 1 494 | ..\..\STM32F3_Libraries\Libraries\CMSIS\Device\ST\STM32F30x\Source\Templates\system_stm32f30x.c 495 | 496 | 497 | DefaultFonts.c 498 | 1 499 | ..\src\DefaultFonts.c 500 | 501 | 502 | hw_config.c 503 | 1 504 | ..\src\hw_config.c 505 | 506 | 507 | main.c 508 | 1 509 | ..\src\main.c 510 | 511 | 512 | ST7735.c 513 | 1 514 | ..\src\ST7735.c 515 | 516 | 517 | Retarget.c 518 | 1 519 | ..\src\Retarget.c 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | RTE\Device\STM32F303VC\startup_stm32f30x.s 533 | 534 | 535 | 536 | 537 | 538 | RTE\Device\STM32F303VC\system_stm32f30x.c 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 |
547 | -------------------------------------------------------------------------------- /src/tux_50_ad.h: -------------------------------------------------------------------------------- 1 | // Generated by : ImageConverter 565 v2.1 2 | // Generated from: tux_100.png 3 | // Time generated: 27-Jan-14 01:43:42 4 | // Dimensions : 50x52 pixels 5 | // Size : 5,200 Bytes 6 | 7 | const unsigned short tux_50_ad[0xA28] ={ 8 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) 9 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) 10 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) 11 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) 12 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) 13 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) 14 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) 15 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) 16 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) 17 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) 18 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xEE59, 0xED55, 0xE451, 0xE410, 0xE430, // 0x00B0 (176) 19 | 0xDC31, 0xE4F3, 0xE5B7, 0xEEFC, 0xF7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) 20 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) 21 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF73D, 0xE4D3, 0xE36D, 0xEB4D, 0xF3EF, 0xF492, // 0x00E0 (224) 22 | 0xFD34, 0xFD75, 0xF555, 0xF514, 0xEC71, 0xE3EF, 0xDC30, 0xE5F7, 0xF7DF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) 23 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) 24 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE555, 0xE249, 0xE9C7, 0xF228, 0xF249, // 0x0110 (272) 25 | 0xF28A, 0xF32C, 0xF430, 0xFD14, 0xFDF7, 0xFE59, 0xFE79, 0xFE59, 0xFD96, 0xE410, 0xD410, 0xE6DB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) 26 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0130 (304) 27 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xE38E, 0xE041, 0xF020, 0xF020, // 0x0140 (320) 28 | 0xE800, 0xE800, 0xE800, 0xE800, 0xE820, 0xF0C3, 0xF208, 0xF3EF, 0xFD96, 0xFE18, 0xFE79, 0xFE9A, 0xF534, 0xDB8E, 0xDDF7, 0xF7FF, // 0x0150 (336) 29 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) 30 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77E, 0xE2AA, 0xE800, 0xF000, // 0x0170 (368) 31 | 0xE800, 0xE800, 0xE800, 0xE800, 0xE820, 0xE820, 0xE800, 0xE800, 0xE800, 0xE841, 0xF1C7, 0xF471, 0xFDB6, 0xFDF7, 0xFE79, 0xFDD7, // 0x0180 (384) 32 | 0xE38E, 0xD596, 0xF7DF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0190 (400) 33 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFEDB, 0xFF1C, 0xFF9E, 0xECD3, 0xF228, // 0x01A0 (416) 34 | 0xF2CB, 0xF34D, 0xF38E, 0xF3CF, 0xF3EF, 0xF410, 0xF430, 0xF451, 0xF451, 0xF451, 0xF451, 0xF430, 0xF3CF, 0xF451, 0xFD55, 0xFDD7, // 0x01B0 (432) 35 | 0xFDD7, 0xFDF7, 0xFD75, 0xDBAE, 0xDE38, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) 36 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF410, 0xF38E, 0xF410, // 0x01D0 (464) 37 | 0xF2EB, 0xF2CB, 0xF28A, 0xF249, 0xF1E7, 0xF1A6, 0xF186, 0xF165, 0xF145, 0xF124, 0xF124, 0xF124, 0xF124, 0xF145, 0xF145, 0xF145, // 0x01E0 (480) 38 | 0xF165, 0xF2CB, 0xFC92, 0xFCD3, 0xFD14, 0xFCF3, 0xF3CF, 0xEDD7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01F0 (496) 39 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7D, 0xFF1C, 0xF2EB, // 0x0200 (512) 40 | 0xF228, 0xF0A2, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, // 0x0210 (528) 41 | 0xE800, 0xE800, 0xE800, 0xE800, 0xF1C7, 0xF32C, 0xF36D, 0xF3AE, 0xF228, 0xEA8A, 0xEF1C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) 42 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7D, 0xF38E, // 0x0230 (560) 43 | 0xF1A6, 0xE841, 0xF1E7, 0xF1A6, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xE800, 0xF000, 0xF000, 0xF000, // 0x0240 (576) 44 | 0xF000, 0xF000, 0xF000, 0xE800, 0xE800, 0xE800, 0xE820, 0xF228, 0xF2EB, 0xF30C, 0xF2EB, 0xF0E3, 0xE4D3, 0xF7FF, 0xFFFF, 0xFFFF, // 0x0250 (592) 45 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) 46 | 0xFFFF, 0xFF5D, 0xFDF7, 0xF145, 0xE800, 0xF061, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xE800, // 0x0270 (624) 47 | 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF000, 0xF8A2, 0xFA08, 0xF249, 0xF2AA, 0xF165, 0xE228, 0xEF3C, // 0x0280 (640) 48 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0290 (656) 49 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF28A, 0xF800, 0xF800, 0xF000, 0xE000, 0xD040, 0xC8C3, 0xC124, 0xC1A6, 0xC228, 0xC2AA, // 0x02A0 (672) 50 | 0xC2EB, 0xC30C, 0x89A6, 0x6061, 0x70C3, 0x8965, 0xA1E7, 0xBA08, 0xD249, 0xD1C7, 0xC8E3, 0xC000, 0xD820, 0xE861, 0xF0C3, 0xF8C3, // 0x02B0 (688) 51 | 0xF082, 0xE638, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) 52 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDB4D, 0x9800, 0x7000, 0x4800, 0x3041, 0x6AEB, 0x9471, 0xA514, 0xAD96, // 0x02D0 (720) 53 | 0xB5F7, 0xC679, 0xD6FB, 0xCEBA, 0x84B2, 0x21A6, 0x530B, 0x8CB2, 0x9514, 0x9D34, 0xBE38, 0xCEBA, 0xBDF7, 0x736D, 0x30C2, 0x4020, // 0x02E0 (736) 54 | 0x5800, 0x8000, 0xB145, 0xE69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) 55 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x9D14, 0x0000, 0x0000, 0x0000, 0x08C2, 0x94D2, 0xBDF8, // 0x0300 (768) 56 | 0xCE7A, 0xD6BA, 0xD6BA, 0xDEDB, 0xCE79, 0x9CF3, 0x9CF3, 0x4228, 0x73AE, 0xA514, 0xC638, 0xCE59, 0xCE59, 0xE73D, 0xEF9E, 0xD6FB, // 0x0310 (784) 57 | 0x4ACA, 0x0021, 0x0000, 0x0000, 0x4AAB, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) 58 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8451, 0x0000, 0x0000, 0x0000, 0x18E3, // 0x0330 (816) 59 | 0xAD55, 0xCE79, 0xDEBB, 0xDEDB, 0xDEDB, 0xE6FC, 0x73AE, 0x18E3, 0x4228, 0x18C2, 0x4A49, 0x630C, 0xC5F8, 0xD69A, 0xD67A, 0xDEDB, // 0x0340 (832) 60 | 0xEF5D, 0xEF5D, 0x8C71, 0x0020, 0x0000, 0x0000, 0x3A08, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) 61 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6B8E, 0x0000, 0x0000, // 0x0360 (864) 62 | 0x0000, 0x18E3, 0xAD75, 0xD69A, 0xDEDB, 0xDEDB, 0xDEDB, 0xE6FC, 0x6B4D, 0x0000, 0x0000, 0x0841, 0x0000, 0x0861, 0xB596, 0xD6BA, // 0x0370 (880) 63 | 0xD69A, 0xD69A, 0xE6FC, 0xDEFB, 0x8C71, 0x0020, 0x0000, 0x0000, 0x2986, 0xEF7E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) 64 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x4A8A, // 0x0390 (912) 65 | 0x0000, 0x0000, 0x0000, 0x10A2, 0xA534, 0xD69A, 0xDEFB, 0xDEDB, 0xDEDB, 0xE6FC, 0x9CD3, 0x4229, 0x18E4, 0x10A3, 0x31A7, 0x39E8, // 0x03A0 (928) 66 | 0xBDD7, 0xD67A, 0xD67A, 0xCE59, 0xCE79, 0xCE59, 0x738D, 0x0000, 0x0000, 0x0000, 0x10C3, 0xDEFC, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) 67 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) 68 | 0xF7BE, 0x2986, 0x0000, 0x0000, 0x0000, 0x0020, 0x7C0F, 0xCE79, 0xDEDB, 0xE71C, 0xDEFC, 0xDEDC, 0xC617, 0x942E, 0x8389, 0x62A5, // 0x03D0 (976) 69 | 0x83AA, 0xA4B0, 0xBDD7, 0xC639, 0xCE59, 0xC618, 0xC638, 0xA534, 0x3186, 0x0000, 0x0000, 0x0000, 0x0021, 0xC639, 0xFFFF, 0xFFFF, // 0x03E0 (992) 70 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) 71 | 0xFFFF, 0xFFFF, 0xD6BB, 0x10C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x3A07, 0xB5D6, 0xD6BA, 0xE6FC, 0xDEDB, 0xD5F2, 0xDDAB, 0xEE2D, // 0x0400 (1024) 72 | 0xF6D1, 0xF734, 0xF735, 0xEED4, 0xD611, 0xBDB4, 0xB5B6, 0xAD55, 0x8C50, 0x3A07, 0x0020, 0x0000, 0x0000, 0x0000, 0x0020, 0x94F4, // 0x0410 (1040) 73 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0420 (1056) 74 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA575, 0x0081, 0x0000, 0x0000, 0x0000, 0x0000, 0x0840, 0x52CA, 0xBDD7, 0xD69A, 0xDE14, 0xE545, // 0x0430 (1072) 75 | 0xEDA1, 0xF644, 0xFEEA, 0xFF92, 0xFFD8, 0xFFFB, 0xFFDB, 0xC58E, 0x9491, 0x7BEF, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0440 (1088) 76 | 0x0000, 0x52CB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0450 (1104) 77 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x73EF, 0x10C2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x634C, 0xAD74, 0xA554, // 0x0460 (1120) 78 | 0xACCF, 0xDD46, 0xEDA0, 0xF600, 0xF660, 0xF6E3, 0xFF8E, 0xFFB6, 0xF735, 0xCDB0, 0xBDD7, 0xC638, 0xA534, 0x3185, 0x0000, 0x0000, // 0x0470 (1136) 79 | 0x0000, 0x0000, 0x0020, 0x31A6, 0xBE17, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) 80 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD95, 0x8430, 0x1924, 0x0000, 0x0000, 0x0000, 0x0000, 0x7BEF, 0xF77D, // 0x0490 (1168) 81 | 0xE71C, 0xBDF7, 0xA514, 0xB4CC, 0xE565, 0xEDE0, 0xF660, 0xF6C0, 0xEEE2, 0xEEEE, 0xD5EE, 0xD699, 0xEF7D, 0xF79E, 0xFFDF, 0xDEDB, // 0x04A0 (1184) 82 | 0x39E7, 0x0000, 0x0000, 0x0000, 0x0020, 0x5AEB, 0x7C0F, 0xDF1B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) 83 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x8C71, 0x9492, 0x0881, 0x0000, 0x0000, 0x0000, 0x6B4C, // 0x04C0 (1216) 84 | 0xF7BE, 0xF7BE, 0xF79E, 0xEF5D, 0xDEFB, 0xBDD7, 0xC52D, 0xE585, 0xEE20, 0xEE80, 0xE600, 0xD588, 0xCE37, 0xEF7E, 0xF7BE, 0xF7BE, // 0x04D0 (1232) 85 | 0xF7BE, 0xFFFF, 0xD6BA, 0x2945, 0x0000, 0x0000, 0x0000, 0x4A49, 0xA514, 0x7C0F, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04E0 (1248) 86 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x8450, 0x9CD3, 0x2965, 0x0020, 0x0000, 0x0000, // 0x04F0 (1264) 87 | 0x39C6, 0xE73C, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xF77D, 0xE73C, 0xC618, 0xC54D, 0xE5A4, 0xE5C0, 0xD544, 0xC5F4, 0xE71D, 0xF79E, // 0x0500 (1280) 88 | 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xFFDF, 0xB595, 0x0841, 0x0000, 0x0000, 0x0041, 0x6B6D, 0x94B2, 0x7C0F, 0xE69A, 0xFF5D, 0xFFFF, // 0x0510 (1296) 89 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD96, 0x8430, 0x8C71, 0x2965, 0x0000, 0x0020, // 0x0520 (1312) 90 | 0x0000, 0x0841, 0xB5B6, 0xF7BE, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xDEFC, 0xC618, 0xC56F, 0xCD4A, 0xC5D3, 0xDEDB, // 0x0530 (1328) 91 | 0xEF5D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xF7BE, 0x632C, 0x0000, 0x0000, 0x0020, 0x0020, 0x6B4D, 0x8C71, 0xCB0B, // 0x0540 (1344) 92 | 0xFCB2, 0xFE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x94D2, 0x8430, 0x7BEF, 0x2104, 0x0000, // 0x0550 (1360) 93 | 0x0020, 0x0020, 0x0000, 0x5ACA, 0xEF7D, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF5D, 0xE73C, 0xDEDB, 0xC639, 0xC618, // 0x0560 (1376) 94 | 0xD6BB, 0xE73C, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF5D, 0xEF7D, 0xCE59, 0x18C3, 0x0000, 0x0020, 0x0000, 0x0000, // 0x0570 (1392) 95 | 0x52AA, 0xCA49, 0xFCD3, 0xFD75, 0xFD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x8471, 0x8C51, 0x630C, 0x0861, // 0x0580 (1408) 96 | 0x0000, 0x0000, 0x0040, 0x0000, 0x0020, 0xAD55, 0xEF7D, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE71C, // 0x0590 (1424) 97 | 0xDEDB, 0xD6BB, 0xE71C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xE73C, 0xEF7D, 0x62EB, 0x0000, 0x0020, // 0x05A0 (1440) 98 | 0x0020, 0x0000, 0x0000, 0x9820, 0xFAAA, 0xFE18, 0xF410, 0xFDD7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x8450, 0x8430, 0x4A69, // 0x05B0 (1456) 99 | 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x2945, 0xD69A, 0xE73C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, // 0x05C0 (1472) 100 | 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xE71C, 0xEF5D, 0xA513, // 0x05D0 (1488) 101 | 0x0020, 0x0000, 0x0020, 0x0000, 0x0000, 0xB800, 0xFB2C, 0xF410, 0xF36D, 0xE471, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x94B2, 0x73AE, // 0x05E0 (1504) 102 | 0x4A49, 0x0000, 0x0000, 0x0000, 0x0041, 0x0020, 0x0000, 0x0000, 0x630B, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, // 0x05F0 (1520) 103 | 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEFB, // 0x0600 (1536) 104 | 0xE71C, 0xCE59, 0x2104, 0x0000, 0x0020, 0x0040, 0x4041, 0xE061, 0xFC10, 0xF2EB, 0xF249, 0x9249, 0xC679, 0xFFFF, 0xFFFF, 0xD6BA, // 0x0610 (1552) 105 | 0x5AEB, 0x4228, 0x0000, 0x0041, 0x52AA, 0xAD75, 0x4ACB, 0x0000, 0x0000, 0x0000, 0x8C71, 0xDEFB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, // 0x0620 (1568) 106 | 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, 0xDEDB, // 0x0630 (1584) 107 | 0xDEDB, 0xDEDB, 0xDEDB, 0xDEBA, 0x4A48, 0x0000, 0x0000, 0x0062, 0xB3CF, 0xF9C7, 0xF3EF, 0xF186, 0xE9A6, 0x7A29, 0x63AE, 0xFFDF, // 0x0640 (1600) 108 | 0xFFFF, 0x9D13, 0x2124, 0x0882, 0x4A8A, 0xBE18, 0xFFFF, 0xFFFF, 0x73F0, 0x0000, 0x0000, 0x1061, 0xA534, 0xD6BA, 0xD6BA, 0xD6BA, // 0x0650 (1616) 109 | 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, // 0x0660 (1632) 110 | 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0xD6BA, 0x6B4C, 0x0000, 0x0000, 0x0862, 0xD69A, 0xFEBA, 0xF492, 0xF124, 0xC924, 0x3945, // 0x0670 (1648) 111 | 0x4269, 0xEF9D, 0xFFFF, 0xDF1B, 0x8430, 0xB5D6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x9D14, 0x0000, 0x0000, 0x2924, 0xB5B6, 0xD69A, // 0x0680 (1664) 112 | 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, // 0x0690 (1680) 113 | 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0xD69A, 0x7BEF, 0x0000, 0x0000, 0x1904, 0xE73D, 0xFFFF, 0xFFFF, 0xFE9A, // 0x06A0 (1696) 114 | 0xEE38, 0xB5B6, 0xC638, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC639, 0x0861, 0x0000, 0x3185, // 0x06B0 (1712) 115 | 0xBDD7, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, // 0x06C0 (1728) 116 | 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0xCE79, 0x8410, 0x0000, 0x0000, 0x3A08, 0xF7BF, 0xFFFF, // 0x06D0 (1744) 117 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7E, 0x2145, // 0x06E0 (1760) 118 | 0x0000, 0x3186, 0xB5B6, 0xC638, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, // 0x06F0 (1776) 119 | 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0xCE59, 0x8410, 0x0000, 0x0000, 0x73CF, // 0x0700 (1792) 120 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0710 (1808) 121 | 0xFFFF, 0x636E, 0x0020, 0x2965, 0xB5B6, 0xC618, 0xC638, 0xC618, 0xC638, 0xC638, 0xC638, 0xC618, 0xC638, 0xC638, 0xC638, 0xC638, // 0x0720 (1824) 122 | 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC638, 0xC618, 0x7BEF, 0x0000, // 0x0730 (1840) 123 | 0x0020, 0xBE18, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0740 (1856) 124 | 0xFFFF, 0xFFFF, 0xFFFF, 0xBDF8, 0x2145, 0x4228, 0xAD75, 0xBDF7, 0xC617, 0xBDF7, 0xBE17, 0xC617, 0xC618, 0xBDF7, 0xBDF7, 0xBDF7, // 0x0750 (1872) 125 | 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xBDF7, 0xC618, 0xC618, 0xC618, 0xC618, 0xC618, 0xC618, 0xC618, 0xBDF7, // 0x0760 (1888) 126 | 0x7BCF, 0x1082, 0x4249, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0770 (1904) 127 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x5B0C, 0x4228, 0xAD34, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, // 0x0780 (1920) 128 | 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, 0xBDD7, // 0x0790 (1936) 129 | 0xBDD7, 0xBDF7, 0x840F, 0x2986, 0xA555, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x07A0 (1952) 130 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC639, 0x39E7, 0x8C51, 0xA535, 0x94D4, 0x94B3, 0x94B3, 0x94B3, // 0x07B0 (1968) 131 | 0x9CF4, 0xA534, 0xAD75, 0xB596, 0xB5B6, 0xB5B6, 0xB5B6, 0xB5B6, 0xB5B6, 0xB5B6, 0xB5B6, 0xB596, 0xAD55, 0xA514, 0x9CD3, 0x94B3, // 0x07C0 (1984) 132 | 0x94B3, 0x94D3, 0x9CF4, 0xA535, 0x632C, 0x52CB, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x07D0 (2000) 133 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8452, 0x5289, 0x83EC, 0x8BAA, 0x8BA9, // 0x07E0 (2016) 134 | 0x8BA9, 0x83AB, 0x7BAD, 0x7BF0, 0x8431, 0x94B2, 0xAD55, 0xB596, 0xB5B6, 0xB5B6, 0xB5B6, 0xAD75, 0x9CF3, 0x8C72, 0x7C10, 0x73AF, // 0x07F0 (2032) 135 | 0x7BAD, 0x83AB, 0x8BA9, 0x8BA9, 0x8BCA, 0x83CC, 0x4249, 0xC67A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0800 (2048) 136 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7B, 0xD5AD, 0xABC2, 0xC463, // 0x0810 (2064) 137 | 0xC462, 0xC440, 0xBC00, 0xB3C0, 0xABA1, 0x9B85, 0x838A, 0x73AE, 0x8410, 0x9CF3, 0xAD75, 0xB596, 0xAD55, 0x9492, 0x7BCF, 0x738D, // 0x0820 (2080) 138 | 0x8368, 0x9B84, 0xABA1, 0xB3E0, 0xBC20, 0xC461, 0xC482, 0xBC22, 0xB403, 0xEE71, 0xFFBD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0830 (2096) 139 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF692, 0xE567, 0xE5EC, // 0x0840 (2112) 140 | 0xF6D4, 0xEF17, 0xEF18, 0xEED5, 0xE64F, 0xD565, 0xCC80, 0xC420, 0xB3C0, 0x9385, 0x738C, 0x7BF0, 0x9CD3, 0xA534, 0x8C51, 0x738E, // 0x0850 (2128) 141 | 0x734B, 0x9B83, 0xB3E0, 0xC440, 0xD4E1, 0xDDCA, 0xE6B3, 0xEF17, 0xEF18, 0xEF16, 0xEE91, 0xE567, 0xE566, 0xF717, 0xFFFF, 0xFFFF, // 0x0860 (2144) 142 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF691, 0xED66, // 0x0870 (2160) 143 | 0xF6F4, 0xFFBA, 0xFFDB, 0xFFDA, 0xFFDA, 0xFFDB, 0xFFBB, 0xF777, 0xEE49, 0xDD40, 0xCC80, 0xBBE0, 0x9B83, 0x736D, 0x7BF0, 0x8C51, // 0x0880 (2176) 144 | 0x73AE, 0x734A, 0xA381, 0xC420, 0xD4C0, 0xE5A2, 0xEEF2, 0xF7BA, 0xFFDB, 0xFFDA, 0xFFDA, 0xFFDB, 0xFFDB, 0xFF99, 0xEE4C, 0xED22, // 0x0890 (2192) 145 | 0xF716, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF59, // 0x08A0 (2208) 146 | 0xED43, 0xF6D0, 0xFFB6, 0xFFB5, 0xFFB5, 0xFFB5, 0xFF95, 0xFF95, 0xFF95, 0xFF96, 0xFF74, 0xEE44, 0xE560, 0xCCA0, 0xBBE0, 0x9386, // 0x08B0 (2224) 147 | 0x6B6D, 0x6B6D, 0x6B4D, 0x9363, 0xC400, 0xD4E0, 0xEDA0, 0xF6ED, 0xFF96, 0xFF95, 0xFF95, 0xFFB5, 0xFFB5, 0xFFB5, 0xFFD5, 0xFFD5, // 0x08C0 (2240) 148 | 0xFFB6, 0xF607, 0xED64, 0xFFBD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7DF, // 0x08D0 (2256) 149 | 0xF79E, 0xE5EB, 0xED82, 0xF750, 0xF7B0, 0xFF90, 0xFF90, 0xFF90, 0xFF70, 0xFF70, 0xFF50, 0xFF50, 0xFF51, 0xF6A6, 0xF5E0, 0xDD40, // 0x08E0 (2272) 150 | 0xC440, 0xABA1, 0x736C, 0x634D, 0x7349, 0xB3C0, 0xCCA0, 0xED80, 0xF620, 0xFF0E, 0xFF51, 0xFF50, 0xFF70, 0xFF70, 0xFF90, 0xFFB0, // 0x08F0 (2288) 151 | 0xF7B0, 0xF7D0, 0xF7D1, 0xF6CA, 0xED00, 0xEE93, 0xF7BF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xEF5D, // 0x0900 (2304) 152 | 0xD6BA, 0xC618, 0xB595, 0xDCE3, 0xED80, 0xF709, 0xF76C, 0xF74B, 0xF74B, 0xF72C, 0xF72C, 0xF70C, 0xF70C, 0xFEEC, 0xFEEB, 0xF642, // 0x0910 (2320) 153 | 0xF5E0, 0xE560, 0xCC60, 0xB3C0, 0x83CC, 0x7BF0, 0x8B88, 0xBBE0, 0xD4E0, 0xEDA0, 0xF600, 0xF688, 0xFEEC, 0xF70C, 0xF70C, 0xF72C, // 0x0920 (2336) 154 | 0xF74C, 0xF74B, 0xF76B, 0xF78B, 0xF78C, 0xEEA5, 0xED40, 0xC52C, 0xBDD8, 0xCE59, 0xDEFB, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0930 (2352) 155 | 0xD6BA, 0xAD75, 0x94B2, 0x8C51, 0x8430, 0xBC86, 0xF520, 0xF5C1, 0xF645, 0xF646, 0xF646, 0xF646, 0xF626, 0xF626, 0xF626, 0xF606, // 0x0940 (2368) 156 | 0xF5C2, 0xF560, 0xF540, 0xE4E0, 0xCC40, 0xABC1, 0x7BCD, 0x73D0, 0x7B8A, 0xB3C0, 0xD480, 0xED20, 0xF560, 0xF580, 0xF605, 0xF626, // 0x0950 (2384) 157 | 0xF626, 0xF646, 0xF646, 0xF646, 0xF666, 0xF666, 0xF643, 0xF5A0, 0xED00, 0xA44A, 0x8431, 0x8C71, 0x9CF3, 0xBDF7, 0xEF7D, 0xFFFF, // 0x0960 (2400) 158 | 0xFFFF, 0xFFFF, 0xCE59, 0x9CD3, 0x8430, 0x8410, 0x7BF0, 0x8C0E, 0xBC66, 0xCCA3, 0xCCA4, 0xCCC5, 0xCCE6, 0xCCE6, 0xCCE6, 0xCCE6, // 0x0970 (2416) 159 | 0xCCE6, 0xCCC5, 0xCCA3, 0xCCA4, 0xCC84, 0xBC44, 0xAC04, 0x8BEB, 0x7BEF, 0x7BEF, 0x7BCF, 0x93C9, 0xB424, 0xC464, 0xCCA4, 0xCCA3, // 0x0980 (2432) 160 | 0xCCA4, 0xCCC5, 0xCCE6, 0xCCE6, 0xCCE6, 0xCCE6, 0xCCE6, 0xCCC5, 0xCCA3, 0xCCA3, 0xB467, 0x840F, 0x7BF0, 0x8410, 0x8C71, 0xAD75, // 0x0990 (2448) 161 | 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0xD69A, 0xBDD7, 0xA534, 0x9CD3, 0x8C92, 0x8451, 0x8430, 0x8410, 0x840F, 0x840F, 0x83EF, // 0x09A0 (2464) 162 | 0x83EF, 0x83EF, 0x83EF, 0x83EF, 0x7BEF, 0x83EF, 0x7BEF, 0x7BEF, 0x7BEF, 0x7BF0, 0x7BEF, 0x7BEF, 0x7BF0, 0x7BF0, 0x7BEF, 0x7BEF, // 0x09B0 (2480) 163 | 0x7BEF, 0x7BEF, 0x7BEF, 0x83EF, 0x83EF, 0x83EF, 0x83EF, 0x83EF, 0x840F, 0x840F, 0x8430, 0x8C50, 0x8C72, 0x9492, 0x9CF3, 0xAD75, // 0x09C0 (2496) 164 | 0xC618, 0xDEFB, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0xE73C, 0xDEDB, 0xCE79, 0xC638, 0xBDD7, 0xAD96, 0xA555, // 0x09D0 (2512) 165 | 0xA514, 0x9CF3, 0x9CD3, 0x94B2, 0x9492, 0x8C92, 0x8C72, 0x8C72, 0x8C71, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, 0x8C51, // 0x09E0 (2528) 166 | 0x8C51, 0x8C51, 0x8C71, 0x8C72, 0x8C72, 0x9492, 0x94B2, 0x94B3, 0x9CD3, 0x9D14, 0xA535, 0xAD75, 0xB5B6, 0xBDF8, 0xCE59, 0xD6BA, // 0x09F0 (2544) 167 | 0xE71C, 0xEF7D, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A00 (2560) 168 | 0xFFDF, 0xF7BE, 0xF79E, 0xEF7D, 0xE73C, 0xE71C, 0xDEFB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, 0xD69A, 0xCE79, 0xCE79, 0xCE79, 0xCE79, // 0x0A10 (2576) 169 | 0xCE79, 0xCE79, 0xCE79, 0xD69A, 0xD69A, 0xD6BA, 0xDEDB, 0xDEFB, 0xE71C, 0xE73C, 0xEF5D, 0xEF7D, 0xF79E, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0A20 (2592) 170 | 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, }; 171 | -------------------------------------------------------------------------------- /src/ST7735.c: -------------------------------------------------------------------------------- 1 | /********************************************************************************* 2 | Some parts of code have been ported from Arduino Adafruit & UTFT libraries. 3 | Copyrights below: 4 | 5 | Written by Limor Fried/Ladyada for Adafruit Industries. 6 | MIT license, all text above must be included in any redistribution 7 | 8 | UTFT.cpp - Arduino/chipKit library support for Color TFT LCD Boards 9 | Copyright (C)2010-2013 Henning Karlsen. All right reserved 10 | 11 | This library is free software; you can redistribute it and/or 12 | modify it under the terms of the CC BY-NC-SA 3.0 license. 13 | Please see the included documents for further information. 14 | **********************************************************************************/ 15 | 16 | #include 17 | #include 18 | #include 19 | #include "main.h" 20 | #include "ST7735.h" 21 | #include "hw_config.h" 22 | #include "platform_config.h" 23 | 24 | static uint16_t _width = ST7735_TFTWIDTH; 25 | static uint16_t _height = ST7735_TFTHEIGHT; 26 | 27 | // Rather than a bazillion lcd7735_sendCmd() and lcd7735_sendData() calls, screen 28 | // initialization commands and arguments are organized in these tables 29 | // stored in PROGMEM. The table may look bulky, but that's mostly the 30 | // formatting -- storage-wise this is hundreds of bytes more compact 31 | // than the equivalent code. Companion function follows. 32 | #define DELAY 0x80 33 | // Initialization commands for 7735B screens 34 | static const uint8_t Bcmd[] = { 35 | 18, // 18 commands in list: 36 | ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay 37 | 50, // 50 ms delay 38 | ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay 39 | 255, // 255 = 500 ms delay 40 | ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: 41 | 0x05, // 16-bit color 5-6-5 color format 42 | 10, // 10 ms delay 43 | ST7735_FRMCTR1, 3+DELAY, // 4: Frame rate control, 3 args + delay: 44 | 0x00, // fastest refresh 45 | 0x06, // 6 lines front porch 46 | 0x03, // 3 lines back porch 47 | 10, // 10 ms delay 48 | ST7735_MADCTL , 1 , // 5: Memory access ctrl (directions), 1 arg: 49 | 0x08, // Row addr/col addr, bottom to top refresh 50 | ST7735_DISSET5, 2 , // 6: Display settings #5, 2 args, no delay: 51 | 0x15, // 1 clk cycle nonoverlap, 2 cycle gate 52 | // rise, 3 cycle osc equalize 53 | 0x02, // Fix on VTL 54 | ST7735_INVCTR , 1 , // 7: Display inversion control, 1 arg: 55 | 0x0, // Line inversion 56 | ST7735_PWCTR1 , 2+DELAY, // 8: Power control, 2 args + delay: 57 | 0x02, // GVDD = 4.7V 58 | 0x70, // 1.0uA 59 | 10, // 10 ms delay 60 | ST7735_PWCTR2 , 1 , // 9: Power control, 1 arg, no delay: 61 | 0x05, // VGH = 14.7V, VGL = -7.35V 62 | ST7735_PWCTR3 , 2 , // 10: Power control, 2 args, no delay: 63 | 0x01, // Opamp current small 64 | 0x02, // Boost frequency 65 | ST7735_VMCTR1 , 2+DELAY, // 11: Power control, 2 args + delay: 66 | 0x3C, // VCOMH = 4V 67 | 0x38, // VCOML = -1.1V 68 | 10, // 10 ms delay 69 | ST7735_PWCTR6 , 2 , // 12: Power control, 2 args, no delay: 70 | 0x11, 0x15, 71 | ST7735_GMCTRP1,16 , // 13: Magical unicorn dust, 16 args, no delay: 72 | 0x09, 0x16, 0x09, 0x20, // (seriously though, not sure what 73 | 0x21, 0x1B, 0x13, 0x19, // these config values represent) 74 | 0x17, 0x15, 0x1E, 0x2B, 75 | 0x04, 0x05, 0x02, 0x0E, 76 | ST7735_GMCTRN1,16+DELAY, // 14: Sparkles and rainbows, 16 args + delay: 77 | 0x0B, 0x14, 0x08, 0x1E, // (ditto) 78 | 0x22, 0x1D, 0x18, 0x1E, 79 | 0x1B, 0x1A, 0x24, 0x2B, 80 | 0x06, 0x06, 0x02, 0x0F, 81 | 10, // 10 ms delay 82 | ST7735_CASET , 4 , // 15: Column addr set, 4 args, no delay: 83 | 0x00, 0x02, // XSTART = 2 84 | 0x00, 0x81, // XEND = 129 85 | ST7735_RASET , 4 , // 16: Row addr set, 4 args, no delay: 86 | 0x00, 0x02, // XSTART = 1 87 | 0x00, 0x81, // XEND = 160 88 | ST7735_NORON , DELAY, // 17: Normal display on, no args, w/delay 89 | 10, // 10 ms delay 90 | ST7735_DISPON , DELAY, // 18: Main screen turn on, no args, w/delay 91 | 255 // 255 = 500 ms delay 92 | }; 93 | // Init for 7735R, part 1 (red or green tab) 94 | static const uint8_t Rcmd1[] = { 95 | 15, // 15 commands in list: 96 | ST7735_SWRESET, DELAY, // 1: Software reset, 0 args, w/delay 97 | 150, // 150 ms delay 98 | ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, 0 args, w/delay 99 | 255, // 500 ms delay 100 | ST7735_FRMCTR1, 3 , // 3: Frame rate ctrl - normal mode, 3 args: 101 | 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) 102 | ST7735_FRMCTR2, 3 , // 4: Frame rate control - idle mode, 3 args: 103 | 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) 104 | ST7735_FRMCTR3, 6 , // 5: Frame rate ctrl - partial mode, 6 args: 105 | 0x01, 0x2C, 0x2D, // Dot inversion mode 106 | 0x01, 0x2C, 0x2D, // Line inversion mode 107 | ST7735_INVCTR , 1 , // 6: Display inversion ctrl, 1 arg, no delay: 108 | 0x07, // No inversion 109 | ST7735_PWCTR1 , 3 , // 7: Power control, 3 args, no delay: 110 | 0xA2, 111 | 0x02, // -4.6V 112 | 0x84, // AUTO mode 113 | ST7735_PWCTR2 , 1 , // 8: Power control, 1 arg, no delay: 114 | 0xC5, // VGH25 = 2.4C VGSEL = -10 VGH = 3 * AVDD 115 | ST7735_PWCTR3 , 2 , // 9: Power control, 2 args, no delay: 116 | 0x0A, // Opamp current small 117 | 0x00, // Boost frequency 118 | ST7735_PWCTR4 , 2 , // 10: Power control, 2 args, no delay: 119 | 0x8A, // BCLK/2, Opamp current small & Medium low 120 | 0x2A, 121 | ST7735_PWCTR5 , 2 , // 11: Power control, 2 args, no delay: 122 | 0x8A, 0xEE, 123 | ST7735_VMCTR1 , 1 , // 12: Power control, 1 arg, no delay: 124 | 0x0E, 125 | ST7735_INVOFF , 0 , // 13: Don't invert display, no args, no delay 126 | ST7735_MADCTL , 1 , // 14: Memory access control (directions), 1 arg: 127 | 0xC0, // row addr/col addr, bottom to top refresh, RGB order 128 | ST7735_COLMOD , 1+DELAY, // 15: Set color mode, 1 arg + delay: 129 | 0x05, // 16-bit color 5-6-5 color format 130 | 10 // 10 ms delay 131 | }; 132 | // Init for 7735R, part 2 (green tab only) 133 | static const uint8_t Rcmd2green[] = { 134 | 2, // 2 commands in list: 135 | ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: 136 | 0x00, 0x02, // XSTART = 0 137 | 0x00, 0x7F+0x02, // XEND = 129 138 | ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: 139 | 0x00, 0x01, // XSTART = 0 140 | 0x00, 0x9F+0x01 // XEND = 160 141 | }; 142 | // Init for 7735R, part 2 (red tab only) 143 | static const uint8_t Rcmd2red[] = { 144 | 2, // 2 commands in list: 145 | ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: 146 | 0x00, 0x00, // XSTART = 0 147 | 0x00, 0x7F, // XEND = 127 148 | ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: 149 | 0x00, 0x00, // XSTART = 0 150 | 0x00, 0x9F // XEND = 159 151 | }; 152 | // Init for 7735R, part 3 (red or green tab) 153 | static const uint8_t Rcmd3[] = { 154 | 4, // 4 commands in list: 155 | ST7735_GMCTRP1, 16 , // 1: Magical unicorn dust, 16 args, no delay: 156 | 0x02, 0x1c, 0x07, 0x12, 157 | 0x37, 0x32, 0x29, 0x2d, 158 | 0x29, 0x25, 0x2B, 0x39, 159 | 0x00, 0x01, 0x03, 0x10, 160 | ST7735_GMCTRN1, 16 , // 2: Sparkles and rainbows, 16 args, no delay: 161 | 0x03, 0x1d, 0x07, 0x06, 162 | 0x2E, 0x2C, 0x29, 0x2D, 163 | 0x2E, 0x2E, 0x37, 0x3F, 164 | 0x00, 0x00, 0x02, 0x10, 165 | ST7735_NORON , DELAY, // 3: Normal display on, no args, w/delay 166 | 10, // 10 ms delay 167 | ST7735_DISPON , DELAY, // 4: Main screen turn on, no args w/delay 168 | 100 // 100 ms delay 169 | }; 170 | 171 | #define putpix(c) { lcd7735_senddata(c >> 8); lcd7735_senddata(c & 0xFF); } 172 | 173 | static int colstart = 0; 174 | static int rowstart = 0; // May be overridden in init func 175 | //static uint8_t tabcolor = 0; 176 | static uint8_t orientation = PORTRAIT; 177 | typedef struct _font { 178 | uint8_t *font; 179 | uint8_t x_size; 180 | uint8_t y_size; 181 | uint8_t offset; 182 | uint16_t numchars; 183 | } Font; 184 | 185 | static Font cfont; 186 | static uint8_t _transparent = 0; 187 | static uint16_t _fg = ST7735_GREEN; 188 | static uint16_t _bg = ST7735_BLACK; 189 | 190 | // Companion code to the above tables. Reads and issues 191 | // a series of LCD commands stored in PROGMEM byte array. 192 | static void commandList(const uint8_t *addr) { 193 | uint8_t numCommands, numArgs; 194 | uint16_t ms; 195 | 196 | numCommands = *addr++; // Number of commands to follow 197 | while(numCommands--) { // For each command... 198 | lcd7735_sendCmd(*addr++); // Read, issue command 199 | numArgs = *addr++; // Number of args to follow 200 | ms = numArgs & DELAY; // If hibit set, delay follows args 201 | numArgs &= ~DELAY; // Mask out delay bit 202 | while(numArgs--) { // For each argument... 203 | lcd7735_sendData(*addr++); // Read, issue argument 204 | } 205 | 206 | if(ms) { 207 | ms = *addr++; // Read post-command delay time (ms) 208 | if(ms == 255) ms = 500; // If 255, delay for 500 ms 209 | delay_ms(ms); 210 | } 211 | } 212 | } 213 | 214 | // Initialization code common to both 'B' and 'R' type displays 215 | static void commonInit(const uint8_t *cmdList) { 216 | // toggle RST low to reset; CS low so it'll listen to us 217 | LCD_CS0; 218 | #ifdef LCD_SOFT_RESET 219 | lcd7735_sendCmd(ST7735_SWRESET); 220 | delay_ms(500); 221 | #else 222 | LCD_RST1; 223 | delay_ms(500); 224 | LCD_RST0; 225 | delay_ms(500); 226 | LCD_RST1; 227 | delay_ms(500); 228 | #endif 229 | if(cmdList) commandList(cmdList); 230 | } 231 | 232 | // Initialization for ST7735B screens 233 | void lcd7735_initB(void) { 234 | commonInit(Bcmd); 235 | } 236 | 237 | 238 | // Initialization for ST7735R screens (green or red tabs) 239 | void lcd7735_initR(uint8_t options) { 240 | delay_ms(50); 241 | commonInit(Rcmd1); 242 | if(options == INITR_GREENTAB) { 243 | commandList(Rcmd2green); 244 | colstart = 2; 245 | rowstart = 1; 246 | } else { 247 | // colstart, rowstart left at default '0' values 248 | commandList(Rcmd2red); 249 | } 250 | commandList(Rcmd3); 251 | 252 | // if black, change MADCTL color filter 253 | if (options == INITR_BLACKTAB) { 254 | lcd7735_sendCmd(ST7735_MADCTL); 255 | lcd7735_sendData(0xC0); 256 | } 257 | 258 | // tabcolor = options; 259 | } 260 | 261 | 262 | void lcd7735_setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1) { 263 | lcd7735_sendCmd(ST7735_CASET); // Column addr set 264 | lcd7735_sendData(0x00); 265 | lcd7735_sendData(x0+colstart); // XSTART 266 | lcd7735_sendData(0x00); 267 | lcd7735_sendData(x1+colstart); // XEND 268 | 269 | lcd7735_sendCmd(ST7735_RASET); // Row addr set 270 | lcd7735_sendData(0x00); 271 | lcd7735_sendData(y0+rowstart); // YSTART 272 | lcd7735_sendData(0x00); 273 | lcd7735_sendData(y1+rowstart); // YEND 274 | 275 | lcd7735_sendCmd(ST7735_RAMWR); // write to RAM 276 | } 277 | void lcd7735_pushColor(uint16_t color) { 278 | LCD_DC1; 279 | putpix(color); 280 | } 281 | 282 | // draw color pixel on screen 283 | void lcd7735_drawPixel(int16_t x, int16_t y, uint16_t color) { 284 | 285 | if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; 286 | 287 | lcd7735_setAddrWindow(x,y,x+1,y+1); 288 | lcd7735_pushColor(color); 289 | } 290 | 291 | // fill a rectangle 292 | void lcd7735_fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { 293 | // rudimentary clipping (drawChar w/big text requires this) 294 | if((x >= _width) || (y >= _height)) return; 295 | if((x + w - 1) >= _width) w = _width - x; 296 | if((y + h - 1) >= _height) h = _height - y; 297 | 298 | lcd7735_setAddrWindow(x, y, x+w-1, y+h-1); 299 | 300 | LCD_DC1; 301 | for(y=h; y>0; y--) { 302 | for(x=w; x>0; x--) { 303 | putpix(color); 304 | } 305 | } 306 | } 307 | 308 | // 309 | // for optimize code size if graphics features not need 310 | // 311 | #ifndef ONLY_TERMINAL_EMULATOR 312 | 313 | void lcd7735_drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) { 314 | // Rudimentary clipping 315 | if((x >= _width) || (y >= _height)) return; 316 | if((y+h-1) >= _height) h = _height-y; 317 | lcd7735_setAddrWindow(x, y, x, y+h-1); 318 | 319 | LCD_DC1; 320 | while (h--) { 321 | putpix(color); 322 | } 323 | } 324 | 325 | void lcd7735_drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { 326 | // Rudimentary clipping 327 | if((x >= _width) || (y >= _height)) return; 328 | if((x+w-1) >= _width) w = _width-x; 329 | lcd7735_setAddrWindow(x, y, x+w-1, y); 330 | 331 | LCD_DC1; 332 | while (w--) { 333 | putpix(color); 334 | } 335 | } 336 | 337 | void lcd7735_drawFastLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint16_t color) { 338 | signed char dx, dy, sx, sy; 339 | unsigned char x, y, mdx, mdy, l; 340 | 341 | if (x1==x2) { 342 | lcd7735_fillRect(x1,y1, x1,y2, color); 343 | return; 344 | } 345 | 346 | if (y1==y2) { 347 | lcd7735_fillRect(x1,y1, x2,y1, color); 348 | return; 349 | } 350 | 351 | dx=x2-x1; dy=y2-y1; 352 | 353 | if (dx>=0) { mdx=dx; sx=1; } else { mdx=x1-x2; sx=-1; } 354 | if (dy>=0) { mdy=dy; sy=1; } else { mdy=y1-y2; sy=-1; } 355 | 356 | x=x1; y=y1; 357 | 358 | if (mdx>=mdy) { 359 | l=mdx; 360 | while (l>0) { 361 | if (dy>0) { y=y1+mdy*(x-x1)/mdx; } 362 | else { y=y1-mdy*(x-x1)/mdx; } 363 | lcd7735_drawPixel(x,y,color); 364 | x=x+sx; 365 | l--; 366 | } 367 | } else { 368 | l=mdy; 369 | while (l>0) { 370 | if (dy>0) { x=x1+((mdx*(y-y1))/mdy); } 371 | else { x=x1+((mdx*(y1-y))/mdy); } 372 | lcd7735_drawPixel(x,y,color); 373 | y=y+sy; 374 | l--; 375 | } 376 | } 377 | lcd7735_drawPixel(x2, y2, color); 378 | } 379 | 380 | void lcd7735_drawRect(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2, uint16_t color) { 381 | lcd7735_drawFastHLine(x1,y1,x2-x1, color); 382 | lcd7735_drawFastVLine(x2,y1,y2-y1, color); 383 | lcd7735_drawFastHLine(x1,y2,x2-x1, color); 384 | lcd7735_drawFastVLine(x1,y1,y2-y1, color); 385 | } 386 | 387 | void lcd7735_drawCircle(int16_t x, int16_t y, int radius, uint16_t color) { 388 | int f = 1 - radius; 389 | int ddF_x = 1; 390 | int ddF_y = -2 * radius; 391 | int x1 = 0; 392 | int y1 = radius; 393 | 394 | lcd7735_setAddrWindow(x, y + radius, x, y + radius); 395 | lcd7735_pushColor(color); 396 | lcd7735_setAddrWindow(x, y - radius, x, y - radius); 397 | lcd7735_pushColor(color); 398 | lcd7735_setAddrWindow(x + radius, y, x + radius, y); 399 | lcd7735_pushColor(color); 400 | lcd7735_setAddrWindow(x - radius, y, x - radius, y); 401 | lcd7735_pushColor(color); 402 | while(x1 < y1) { 403 | if(f >= 0) 404 | { 405 | y1--; 406 | ddF_y += 2; 407 | f += ddF_y; 408 | } 409 | x1++; 410 | ddF_x += 2; 411 | f += ddF_x; 412 | lcd7735_setAddrWindow(x + x1, y + y1, x + x1, y + y1); 413 | lcd7735_pushColor(color); 414 | lcd7735_setAddrWindow(x - x1, y + y1, x - x1, y + y1); 415 | lcd7735_pushColor(color); 416 | lcd7735_setAddrWindow(x + x1, y - y1, x + x1, y - y1); 417 | lcd7735_pushColor(color); 418 | lcd7735_setAddrWindow(x - x1, y - y1, x - x1, y - y1); 419 | lcd7735_pushColor(color); 420 | lcd7735_setAddrWindow(x + y1, y + x1, x + y1, y + x1); 421 | lcd7735_pushColor(color); 422 | lcd7735_setAddrWindow(x - y1, y + x1, x - y1, y + x1); 423 | lcd7735_pushColor(color); 424 | lcd7735_setAddrWindow(x + y1, y - x1, x + y1, y - x1); 425 | lcd7735_pushColor(color); 426 | lcd7735_setAddrWindow(x - y1, y - x1, x - y1, y - x1); 427 | lcd7735_pushColor(color); 428 | } 429 | } 430 | 431 | void lcd7735_fillCircle(int16_t x, int16_t y, int radius, uint16_t color) { 432 | int x1,y1; 433 | for(y1=-radius; y1<=0; y1++) 434 | for(x1=-radius; x1<=0; x1++) 435 | if(x1*x1+y1*y1 <= radius*radius) { 436 | lcd7735_drawFastHLine(x+x1, y+y1, 2*(-x1), color); 437 | lcd7735_drawFastHLine(x+x1, y-y1, 2*(-x1), color); 438 | break; 439 | } 440 | } 441 | 442 | void lcd7735_drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int scale) { 443 | int tx, ty, tc, tsx, tsy; 444 | 445 | if (scale==1) { 446 | if (orientation == PORTRAIT || orientation == PORTRAIT_FLIP) 447 | { 448 | lcd7735_setAddrWindow(x, y, x+sx-1, y+sy-1); 449 | LCD_DC1; 450 | for (tc=0; tc<(sx*sy); tc++) 451 | putpix(data[tc]); 452 | } else { 453 | for (ty=0; ty=0; tx--) 457 | putpix(data[(ty*sx)+tx]); 458 | } 459 | } 460 | } else { 461 | if (orientation == PORTRAIT || orientation == PORTRAIT_FLIP) { 462 | for (ty=0; ty=0; tx--) { 475 | for (tsx=0; tsx> 3); 809 | } 810 | 811 | void lcd7735_setRotation(uint8_t m) { 812 | uint8_t rotation = m % 4; // can't be higher than 3 813 | 814 | lcd7735_sendCmd(ST7735_MADCTL); 815 | switch (rotation) { 816 | case PORTRAIT: 817 | lcd7735_sendData(MADCTL_MX | MADCTL_MY | MADCTL_RGB); 818 | _width = ST7735_TFTWIDTH; 819 | _height = ST7735_TFTHEIGHT; 820 | break; 821 | case LANDSAPE: 822 | lcd7735_sendData(MADCTL_MY | MADCTL_MV | MADCTL_RGB); 823 | _width = ST7735_TFTHEIGHT; 824 | _height = ST7735_TFTWIDTH; 825 | break; 826 | case PORTRAIT_FLIP: 827 | lcd7735_sendData(MADCTL_RGB); 828 | _width = ST7735_TFTWIDTH; 829 | _height = ST7735_TFTHEIGHT; 830 | break; 831 | case LANDSAPE_FLIP: 832 | lcd7735_sendData(MADCTL_MX | MADCTL_MV | MADCTL_RGB); 833 | _width = ST7735_TFTHEIGHT; 834 | _height = ST7735_TFTWIDTH; 835 | break; 836 | default: 837 | return; 838 | } 839 | orientation = m; 840 | } 841 | 842 | void lcd7735_invertDisplay(const uint8_t mode) { 843 | if( mode == INVERT_ON ) lcd7735_sendCmd(ST7735_INVON); 844 | else if( mode == INVERT_OFF ) lcd7735_sendCmd(ST7735_INVOFF); 845 | } 846 | 847 | void lcd7735_lcdOff() { 848 | lcd7735_sendCmd(ST7735_DISPOFF); 849 | } 850 | 851 | void lcd7735_lcdOn() { 852 | lcd7735_sendCmd(ST7735_DISPON); 853 | } 854 | 855 | uint8_t lcd7735_getWidth() { 856 | return(_width); 857 | } 858 | uint8_t lcd7735_getHeight() { 859 | return(_height); 860 | } 861 | -------------------------------------------------------------------------------- /src/DefaultFonts.c: -------------------------------------------------------------------------------- 1 | /* 2 | UTFT.cpp - Arduino/chipKit library support for Color TFT LCD Boards 3 | Copyright (C)2010-2013 Henning Karlsen. All right reserved 4 | 5 | This library is the continuation of my ITDB02_Graph, ITDB02_Graph16 6 | and RGB_GLCD libraries for Arduino and chipKit. As the number of 7 | supported display modules and controllers started to increase I felt 8 | it was time to make a single, universal library as it will be much 9 | easier to maintain in the future. 10 | 11 | Basic functionality of this library was origianlly based on the 12 | demo-code provided by ITead studio (for the ITDB02 modules) and 13 | NKC Electronics (for the RGB GLCD module/shield). 14 | 15 | This library supports a number of 8bit, 16bit and serial graphic 16 | displays, and will work with both Arduino and chipKit boards. For a 17 | full list of tested display modules and controllers, see the 18 | document UTFT_Supported_display_modules_&_controllers.pdf. 19 | 20 | When using 8bit and 16bit display modules there are some 21 | requirements you must adhere to. These requirements can be found 22 | in the document UTFT_Requirements.pdf. 23 | There are no special requirements when using serial displays. 24 | 25 | You can always find the latest version of the library at 26 | http://electronics.henningkarlsen.com/ 27 | 28 | If you make any modifications or improvements to the code, I would 29 | appreciate that you share the code with me so that I might include 30 | it in the next release. I can be contacted through 31 | http://electronics.henningkarlsen.com/contact.php. 32 | 33 | This library is free software; you can redistribute it and/or 34 | modify it under the terms of the CC BY-NC-SA 3.0 license. 35 | Please see the included documents for further information. 36 | */ 37 | 38 | // SmallFont.c 39 | // Font Size : 8x12 40 | // Memory usage : 1144 bytes 41 | // # characters : 95 42 | 43 | const unsigned char SmallFont[] = { 44 | 0x08,0x0C,0x20,0x5F, 45 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 46 | 0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00, // ! 47 | 0x00,0x28,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // " 48 | 0x00,0x00,0x28,0x28,0xFC,0x28,0x50,0xFC,0x50,0x50,0x00,0x00, // # 49 | 0x00,0x20,0x78,0xA8,0xA0,0x60,0x30,0x28,0xA8,0xF0,0x20,0x00, // $ 50 | 0x00,0x00,0x48,0xA8,0xB0,0x50,0x28,0x34,0x54,0x48,0x00,0x00, // % 51 | 0x00,0x00,0x20,0x50,0x50,0x78,0xA8,0xA8,0x90,0x6C,0x00,0x00, // & 52 | 0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' 53 | 0x00,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00, // ( 54 | 0x00,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x00, // ) 55 | 0x00,0x00,0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00,0x00,0x00, // * 56 | 0x00,0x00,0x20,0x20,0x20,0xF8,0x20,0x20,0x20,0x00,0x00,0x00, // + 57 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x80, // , 58 | 0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // - 59 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, // . 60 | 0x00,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0x80,0x00, // / 61 | 0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00, // 0 62 | 0x00,0x00,0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // 1 63 | 0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,0x00,0x00, // 2 64 | 0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,0x00,0x00, // 3 65 | 0x00,0x00,0x10,0x30,0x50,0x50,0x90,0x78,0x10,0x18,0x00,0x00, // 4 66 | 0x00,0x00,0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70,0x00,0x00, // 5 67 | 0x00,0x00,0x70,0x90,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00, // 6 68 | 0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x20,0x20,0x20,0x00,0x00, // 7 69 | 0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00, // 8 70 | 0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x48,0x70,0x00,0x00, // 9 71 | 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x20,0x00,0x00, // : 72 | 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x20,0x00, // ; 73 | 0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // < 74 | 0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, // = 75 | 0x00,0x40,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x40,0x00,0x00, // > 76 | 0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x20,0x00,0x20,0x00,0x00, // ? 77 | 0x00,0x00,0x70,0x88,0x98,0xA8,0xA8,0xB8,0x80,0x78,0x00,0x00, // @ 78 | 0x00,0x00,0x20,0x20,0x30,0x50,0x50,0x78,0x48,0xCC,0x00,0x00, // A 79 | 0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x00, // B 80 | 0x00,0x00,0x78,0x88,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00, // C 81 | 0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00, // D 82 | 0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x48,0xF8,0x00,0x00, // E 83 | 0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x40,0xE0,0x00,0x00, // F 84 | 0x00,0x00,0x38,0x48,0x80,0x80,0x9C,0x88,0x48,0x30,0x00,0x00, // G 85 | 0x00,0x00,0xCC,0x48,0x48,0x78,0x48,0x48,0x48,0xCC,0x00,0x00, // H 86 | 0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00, // I 87 | 0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0xE0,0x00, // J 88 | 0x00,0x00,0xEC,0x48,0x50,0x60,0x50,0x50,0x48,0xEC,0x00,0x00, // K 89 | 0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x44,0xFC,0x00,0x00, // L 90 | 0x00,0x00,0xD8,0xD8,0xD8,0xD8,0xA8,0xA8,0xA8,0xA8,0x00,0x00, // M 91 | 0x00,0x00,0xDC,0x48,0x68,0x68,0x58,0x58,0x48,0xE8,0x00,0x00, // N 92 | 0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00, // O 93 | 0x00,0x00,0xF0,0x48,0x48,0x70,0x40,0x40,0x40,0xE0,0x00,0x00, // P 94 | 0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xE8,0x98,0x70,0x18,0x00, // Q 95 | 0x00,0x00,0xF0,0x48,0x48,0x70,0x50,0x48,0x48,0xEC,0x00,0x00, // R 96 | 0x00,0x00,0x78,0x88,0x80,0x60,0x10,0x08,0x88,0xF0,0x00,0x00, // S 97 | 0x00,0x00,0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // T 98 | 0x00,0x00,0xCC,0x48,0x48,0x48,0x48,0x48,0x48,0x30,0x00,0x00, // U 99 | 0x00,0x00,0xCC,0x48,0x48,0x50,0x50,0x30,0x20,0x20,0x00,0x00, // V 100 | 0x00,0x00,0xA8,0xA8,0xA8,0x70,0x50,0x50,0x50,0x50,0x00,0x00, // W 101 | 0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x50,0x50,0xD8,0x00,0x00, // X 102 | 0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // Y 103 | 0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x40,0x48,0xF8,0x00,0x00, // Z 104 | 0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x00, // [ 105 | 0x00,0x40,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x00,0x00, // 106 | 0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00, // ] 107 | 0x00,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^ 108 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC, // _ 109 | 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' 110 | 0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x38,0x48,0x3C,0x00,0x00, // a 111 | 0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00, // b 112 | 0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x40,0x40,0x38,0x00,0x00, // c 113 | 0x00,0x00,0x18,0x08,0x08,0x38,0x48,0x48,0x48,0x3C,0x00,0x00, // d 114 | 0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x78,0x40,0x38,0x00,0x00, // e 115 | 0x00,0x00,0x1C,0x20,0x20,0x78,0x20,0x20,0x20,0x78,0x00,0x00, // f 116 | 0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0x30,0x40,0x78,0x44,0x38, // g 117 | 0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0xEC,0x00,0x00, // h 118 | 0x00,0x00,0x20,0x00,0x00,0x60,0x20,0x20,0x20,0x70,0x00,0x00, // i 119 | 0x00,0x00,0x10,0x00,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0xE0, // j 120 | 0x00,0x00,0xC0,0x40,0x40,0x5C,0x50,0x70,0x48,0xEC,0x00,0x00, // k 121 | 0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00, // l 122 | 0x00,0x00,0x00,0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xA8,0x00,0x00, // m 123 | 0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0xEC,0x00,0x00, // n 124 | 0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x30,0x00,0x00, // o 125 | 0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x40,0xE0, // p 126 | 0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x38,0x08,0x1C, // q 127 | 0x00,0x00,0x00,0x00,0x00,0xD8,0x60,0x40,0x40,0xE0,0x00,0x00, // r 128 | 0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x30,0x08,0x78,0x00,0x00, // s 129 | 0x00,0x00,0x00,0x20,0x20,0x70,0x20,0x20,0x20,0x18,0x00,0x00, // t 130 | 0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x48,0x3C,0x00,0x00, // u 131 | 0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x00,0x00, // v 132 | 0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x70,0x50,0x50,0x00,0x00, // w 133 | 0x00,0x00,0x00,0x00,0x00,0xD8,0x50,0x20,0x50,0xD8,0x00,0x00, // x 134 | 0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x20,0xC0, // y 135 | 0x00,0x00,0x00,0x00,0x00,0x78,0x10,0x20,0x20,0x78,0x00,0x00, // z 136 | 0x00,0x18,0x10,0x10,0x10,0x20,0x10,0x10,0x10,0x10,0x18,0x00, // { 137 | 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, // | 138 | 0x00,0x60,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x60,0x00, // } 139 | 0x40,0xA4,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~ 140 | }; 141 | 142 | #ifdef ONLY_SMALL_FONT 143 | 144 | // BigFont.c (C)2010 by Henning Karlsen 145 | // Font Size : 16x16 146 | // Memory usage : 3044 bytes 147 | // # characters : 95 148 | 149 | const unsigned char BigFont[] = { 150 | 0x10,0x10,0x20,0x5F, 151 | 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, // 152 | 0x00,0x00,0x00,0x00,0x07,0x00,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00, // ! 153 | 0x00,0x00,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // " 154 | 0x00,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x7F,0xFE,0x7F,0xFE,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x7F,0xFE,0x7F,0xFE,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00, // # 155 | 0x00,0x00,0x02,0x40,0x02,0x40,0x0F,0xF8,0x1F,0xF8,0x1A,0x40,0x1A,0x40,0x1F,0xF0,0x0F,0xF8,0x02,0x58,0x02,0x58,0x1F,0xF8,0x1F,0xF0,0x02,0x40,0x02,0x40,0x00,0x00, // $ 156 | 0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x10,0x0E,0x30,0x0E,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x70,0x0C,0x70,0x08,0x70,0x00,0x00,0x00,0x00,0x00,0x00, // % 157 | 0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x0F,0x00,0x0F,0x08,0x0F,0x98,0x19,0xF8,0x18,0xF0,0x18,0xE0,0x19,0xF0,0x0F,0x98,0x00,0x00,0x00,0x00, // & 158 | 0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' 159 | 0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xF0,0x00,0x00,0x00,0x00, // ( 160 | 0x00,0x00,0x00,0x00,0x0F,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x0F,0x00,0x00,0x00,0x00,0x00, // ) 161 | 0x00,0x00,0x00,0x00,0x01,0x80,0x11,0x88,0x09,0x90,0x07,0xE0,0x07,0xE0,0x3F,0xFC,0x3F,0xFC,0x07,0xE0,0x07,0xE0,0x09,0x90,0x11,0x88,0x01,0x80,0x00,0x00,0x00,0x00, // * 162 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0xF0,0x0F,0xF0,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // + 163 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x0E,0x00,0x00,0x00, // , 164 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - 165 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00, // , 166 | 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00,0x00,0x00, // / 167 | 168 | 0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x78,0x1C,0xF8,0x1C,0xF8,0x1D,0xB8,0x1D,0xB8,0x1F,0x38,0x1F,0x38,0x1E,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 0 169 | 0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x03,0x80,0x1F,0x80,0x1F,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x1F,0xF0,0x00,0x00,0x00,0x00, // 1 170 | 0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x38,0x1C,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // 2 171 | 0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x38,0x00,0x38,0x00,0x70,0x03,0xC0,0x03,0xC0,0x00,0x70,0x00,0x38,0x1C,0x38,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // 3 172 | 0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0xE0,0x03,0xE0,0x06,0xE0,0x0C,0xE0,0x18,0xE0,0x1F,0xF8,0x1F,0xF8,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x03,0xF8,0x00,0x00,0x00,0x00, // 4 173 | 0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xE0,0x1F,0xF0,0x00,0x78,0x00,0x38,0x1C,0x38,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // 5 174 | 0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF0,0x1F,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 6 175 | 0x00,0x00,0x00,0x00,0x1F,0xFC,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00, // 7 176 | 0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0x38,0x07,0xE0,0x07,0xE0,0x1C,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 8 177 | 0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0xF8,0x0F,0xF8,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x07,0xC0,0x00,0x00,0x00,0x00, // 9 178 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // : 179 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ; 180 | 0x00,0x00,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x00, // < 181 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // = 182 | 0x00,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00, // > 183 | 0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1E,0x78,0x18,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00, // ? 184 | 185 | 0x00,0x00,0x0F,0xF8,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xFC,0x1C,0xFC,0x1C,0xFC,0x1C,0xFC,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF0,0x07,0xF8,0x00,0x00, // @ 186 | 0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00, // A 187 | 0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1F,0xF0,0x00,0x00,0x00,0x00, // B 188 | 0x00,0x00,0x00,0x00,0x07,0xF0,0x0E,0x38,0x1C,0x38,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x38,0x0E,0x38,0x07,0xF0,0x00,0x00,0x00,0x00, // C 189 | 0x00,0x00,0x00,0x00,0x1F,0xE0,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x70,0x1F,0xE0,0x00,0x00,0x00,0x00, // D 190 | 0x00,0x00,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x30,0x0F,0xF0,0x0F,0xF0,0x0E,0x30,0x0E,0x00,0x0E,0x08,0x0E,0x18,0x1F,0xF8,0x00,0x00,0x00,0x00, // E 191 | 0x00,0x00,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x30,0x0F,0xF0,0x0F,0xF0,0x0E,0x30,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // F 192 | 0x00,0x00,0x00,0x00,0x07,0xF0,0x0E,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0xF8,0x1C,0x38,0x1C,0x38,0x0E,0x38,0x07,0xF8,0x00,0x00,0x00,0x00, // G 193 | 0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x1F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // H 194 | 0x00,0x00,0x00,0x00,0x0F,0xE0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x0F,0xE0,0x00,0x00,0x00,0x00, // I 195 | 0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // J 196 | 0x00,0x00,0x00,0x00,0x1E,0x38,0x0E,0x38,0x0E,0x70,0x0E,0xE0,0x0F,0xC0,0x0F,0x80,0x0F,0x80,0x0F,0xC0,0x0E,0xE0,0x0E,0x70,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // K 197 | 0x00,0x00,0x00,0x00,0x1F,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x08,0x0E,0x18,0x0E,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // L 198 | 0x00,0x00,0x00,0x00,0x1C,0x1C,0x1E,0x3C,0x1F,0x7C,0x1F,0xFC,0x1F,0xFC,0x1D,0xDC,0x1C,0x9C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x00,0x00,0x00, // M 199 | 0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1E,0x1C,0x1F,0x1C,0x1F,0x9C,0x1D,0xDC,0x1C,0xFC,0x1C,0x7C,0x1C,0x3C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x00,0x00,0x00, // N 200 | 0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x0E,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x0E,0x38,0x07,0xF0,0x03,0xE0,0x00,0x00,0x00,0x00, // O 201 | 202 | 0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // P 203 | 0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0x78,0x0E,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x7C,0x1C,0xFC,0x0F,0xF8,0x0F,0xF8,0x00,0x38,0x00,0xFC,0x00,0x00, // Q 204 | 0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // R 205 | 0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x00,0x0F,0xE0,0x07,0xF0,0x00,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // S 206 | 0x00,0x00,0x00,0x00,0x1F,0xFC,0x19,0xCC,0x11,0xC4,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x07,0xF0,0x00,0x00,0x00,0x00, // T 207 | 0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // U 208 | 0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x00,0x00,0x00,0x00, // V 209 | 0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x0F,0xF8,0x0F,0xF8,0x07,0x70,0x07,0x70,0x00,0x00,0x00,0x00, // W 210 | 0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x03,0x80,0x07,0xC0,0x0E,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // X 211 | 0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x0F,0xE0,0x00,0x00,0x00,0x00, // Y 212 | 0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x38,0x18,0x38,0x10,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x08,0x1C,0x18,0x1C,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // Z 213 | 0x00,0x00,0x00,0x00,0x07,0xF0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0xF0,0x00,0x00,0x00,0x00, // [ 214 | 0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x07,0x00,0x00,0x00,0x00, // 215 | 0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x07,0xF0,0x00,0x00,0x00,0x00, // ] 216 | 0x00,0x00,0x01,0x80,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^ 217 | 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,0x7F,0xFF,0x7F,0xFF, // _ 218 | 219 | 0x00,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' 220 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x70,0x00,0x70,0x0F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // a 221 | 0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1B,0xF0,0x00,0x00,0x00,0x00, // b 222 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x00,0x1C,0x00,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // c 223 | 0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x70,0x00,0x70,0x00,0x70,0x0F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // d 224 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x1C,0x00,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // e 225 | 0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0x70,0x07,0x70,0x07,0x00,0x07,0x00,0x1F,0xE0,0x1F,0xE0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00, // f 226 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xD8,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xF0,0x07,0xF0,0x00,0x70,0x1C,0x70,0x0F,0xE0, // g 227 | 0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0xF0,0x0F,0x38,0x0F,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // h 228 | 0x00,0x00,0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xF8,0x00,0x00,0x00,0x00, // i 229 | 0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x03,0xF0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x1C,0x70,0x0C,0xF0,0x07,0xE0, // j 230 | 0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x38,0x0E,0x70,0x0E,0xE0,0x0F,0xC0,0x0E,0xE0,0x0E,0x70,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // k 231 | 0x00,0x00,0x00,0x00,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xF8,0x00,0x00,0x00,0x00, // l 232 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x00,0x00,0x00,0x00, // m 233 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // n 234 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // o 235 | 236 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0E,0x00,0x0E,0x00,0x1F,0x00, // p 237 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xB0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x1F,0xE0,0x00,0xE0,0x00,0xE0,0x01,0xF0, // q 238 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0xF0,0x0F,0xF8,0x0F,0x38,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // r 239 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x30,0x1C,0x30,0x0F,0x80,0x03,0xE0,0x18,0x70,0x18,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // s 240 | 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x07,0x00,0x1F,0xF0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x70,0x07,0x70,0x03,0xE0,0x00,0x00,0x00,0x00, // t 241 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // u 242 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x00,0x00,0x00,0x00, // v 243 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x9C,0x1C,0x9C,0x0F,0xF8,0x07,0x70,0x07,0x70,0x00,0x00,0x00,0x00, // w 244 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0xE0,0x1C,0xE0,0x0F,0xC0,0x07,0x80,0x07,0x80,0x0F,0xC0,0x1C,0xE0,0x1C,0xE0,0x00,0x00,0x00,0x00, // x 245 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x07,0xF0,0x03,0xE0,0x00,0xE0,0x01,0xC0,0x1F,0x80, // y 246 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x18,0xE0,0x11,0xC0,0x03,0x80,0x07,0x00,0x0E,0x20,0x1C,0x60,0x1F,0xE0,0x00,0x00,0x00,0x00, // z 247 | 0x00,0x00,0x00,0x00,0x01,0xF8,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0x00,0x1C,0x00,0x1C,0x00,0x07,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0xF8,0x00,0x00,0x00,0x00, // { 248 | 0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00, // | 249 | 0x00,0x00,0x00,0x00,0x1F,0x80,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0x38,0x00,0x38,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00, // } 250 | 0x00,0x00,0x00,0x00,0x1F,0x1C,0x3B,0x9C,0x39,0xDC,0x38,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // ~ 251 | }; 252 | 253 | // SevenSegNumFont.c 254 | // Font Size : 32x50 255 | // Memory usage : 2004 bytes 256 | // # characters : 10 257 | 258 | const unsigned char SevenSegNumFont[] ={ 259 | 0x20,0x32,0x30,0x0A, 260 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x38,0x00,0x00,0x18,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x38,0x00,0x00,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0 261 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,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 262 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x01,0xFF,0xFE,0x18,0x03,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x00,0x3E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0C,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2 263 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x01,0xFF,0xFE,0x18,0x03,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3 264 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0C,0x00,0x00,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 4 265 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x0C,0xFF,0xFE,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x39,0xFF,0xFE,0x00,0x23,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5 266 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x0C,0xFF,0xFE,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x39,0xFF,0xFE,0x00,0x23,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6 267 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,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 268 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8 269 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9 270 | }; 271 | 272 | #endif 273 | --------------------------------------------------------------------------------