- #define TFT_RST_GPIO_PORT GPIOA
- #define TFT_RST_PIN GPIO_PINS_0
- #define TFT_DC_GPIO_PORT GPIOA
- #define TFT_DC_PIN GPIO_PINS_1
- #define TFT_CS_GPIO_PORT GPIOA
- #define TFT_CS_PIN GPIO_PINS_4
- #define TFT_SCLK_GPIO_PORT GPIOA
- #define TFT_SCLK_PIN GPIO_PINS_5
- #define TFT_MOSI_GPIO_PORT GPIOA
- #define TFT_MOSI_PIN GPIO_PINS_7
- #define TFT_BLK_GPIO_PORT GPIOB
- #define TFT_BLK_PIN GPIO_PINS_12
- #define LCD_RES_LOW() gpio_bits_reset(TFT_RST_GPIO_PORT, TFT_RST_PIN)//RES
- #define LCD_RES_HIGH() gpio_bits_set(TFT_RST_GPIO_PORT, TFT_RST_PIN)
- #define LCD_DC_LOW() gpio_bits_reset(TFT_DC_GPIO_PORT, TFT_DC_PIN) //DC
- #define LCD_DC_HIGH() gpio_bits_set(TFT_DC_GPIO_PORT, TFT_DC_PIN)
-
- #define LCD_BLK_LOW() gpio_bits_reset(TFT_BLK_GPIO_PORT, TFT_BLK_PIN) //BLK
- #define LCD_BLK_HIGH() gpio_bits_set(TFT_BLK_GPIO_PORT, TFT_BLK_PIN)
- #define LCD_CS_LOW() gpio_bits_reset(TFT_CS_GPIO_PORT, TFT_CS_PIN) //CS
- #define LCD_CS_HIGH() gpio_bits_set(TFT_CS_GPIO_PORT, TFT_CS_PIN)
- #define LCD_SCLK_LOW() gpio_bits_reset(TFT_SCLK_GPIO_PORT, TFT_SCLK_PIN) //SCLK
- #define LCD_SCLK_HIGH() gpio_bits_set(TFT_SCLK_GPIO_PORT, TFT_SCLK_PIN)
- #define LCD_MOSI_LOW() gpio_bits_reset(TFT_MOSI_GPIO_PORT, TFT_MOSI_PIN) //MOSI
- #define LCD_MOSI_HIGH() gpio_bits_set(TFT_MOSI_GPIO_PORT, TFT_MOSI_PIN)
- int main(void)
- {
- system_clock_config();
- nvic_config();
- uart_print_init(115200);
- usart_init_conf();
- gpio_config();
- delay_init();
- LcdInit();
- while(1)
- {
- Display_Test();
- }
- }
- void Display_Test(void)
- {
- LcdFill(0,0,LCD_W,LCD_H,BLACK);
- LcdShow16x16Hz(8, 0, 0, YELLOW, BLACK);
- LcdShow16x16Hz(24, 0, 1, YELLOW, BLACK);
- LcdShow16x16Hz(40, 0, 2, YELLOW, BLACK);
- LcdShow16x16Hz(56, 0, 3, YELLOW, BLACK);
- LcdShow16x16Hz(72, 0, 4, YELLOW, BLACK);
- LcdShow16x16Hz(88, 0, 5, YELLOW, BLACK);
- LcdShow16x16Hz(104,0, 6, YELLOW, BLACK);
- LcdShowString(12,24,"AT32F405",RED, BLACK,24);
- delay_ms(300);
- LcdShow16x16Hz(38,60, 7, BLUE, WHITE);
- delay_ms(300);
- LcdShow16x16Hz(56,60, 8, BLUE, WHITE);
- delay_ms(300);
- LcdShow16x16Hz(74,60, 9, BLUE, WHITE);
- delay_ms(1000);
- LCD_ShowPicture(0,0,128,160,gImage_1);
- delay_ms(1000);
- }
- void system_clock_config(void)
- {
- /* reset crm */
- crm_reset();
- /* config flash psr register */
- flash_psr_set(FLASH_WAIT_CYCLE_6);
- /* enable pwc periph clock */
- crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK, TRUE);
-
- /* config ldo voltage */
- pwc_ldo_output_voltage_set(PWC_LDO_OUTPUT_1V3);
- /* enable lick */
- crm_clock_source_enable(CRM_CLOCK_SOURCE_LICK, TRUE);
- /* wait till lick is ready */
- while(crm_flag_get(CRM_LICK_STABLE_FLAG) != SET)
- {
- }
- /* enable hick */
- crm_clock_source_enable(CRM_CLOCK_SOURCE_HICK, TRUE);
- /* wait till hick is ready */
- while(crm_flag_get(CRM_HICK_STABLE_FLAG) != SET)
- {
- }
- /* config pll clock resource */
- crm_pll_config(CRM_PLL_SOURCE_HICK, 108, 1, CRM_PLL_FP_4);
- /* config pllu div */
- crm_pllu_div_set(CRM_PLL_FU_18);
- /* enable pll */
- crm_clock_source_enable(CRM_CLOCK_SOURCE_PLL, TRUE);
- /* wait till pll is ready */
- while(crm_flag_get(CRM_PLL_STABLE_FLAG) != SET)
- {
- }
- /* config ahbclk */
- crm_ahb_div_set(CRM_AHB_DIV_1);
- /* config apb2clk, the maximum frequency of APB2 clock is 216 MHz */
- crm_apb2_div_set(CRM_APB2_DIV_1);
- /* config apb1clk, the maximum frequency of APB1 clock is 120 MHz */
- crm_apb1_div_set(CRM_APB1_DIV_2);
- /* enable auto step mode */
- crm_auto_step_mode_enable(TRUE);
- /* select pll as system clock source */
- crm_sysclk_switch(CRM_SCLK_PLL);
- /* wait till pll is used as system clock source */
- while(crm_sysclk_switch_status_get() != CRM_SCLK_PLL)
- {
- }
- /* enable gpioa periph clock */
- crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
- /* enable gpiob periph clock */
- crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
-
- /* enable usart1 periph clock */
- crm_periph_clock_enable(CRM_USART1_PERIPH_CLOCK, TRUE);
-
- /* disable auto step mode */
- crm_auto_step_mode_enable(FALSE);
- /* update system_core_clock global variable */
- system_core_clock_update();
- }
移植完后编译下载到开发板中,即可看到TFT屏刷出字符图片效果,当然这里的字符显示需要借助“PCtoLCD2002”工具,而彩色图片制作借助与“Img2Lcd‘工具,这里的中文字符设置跟0.96寸OLED屏设置一样,彩色图片制作需要注意制作的原始图片是bmp格式,并且不能超过屏的最大尺寸,即128 X 160(竖屏显示),当然源码中也有提供横屏或竖屏显示的宏定义设置。如果超过最大尺寸再交由“Img2Lcd‘工具处理,最后在TFT屏上显示则得不到自己想看到的效果。
这里将LCD字符与图片取模工具分享出来,感兴趣的坛友可自行下载尝试。
LCD取模工具.zip
(1.36 MB, 下载次数: 4)
关于该屏显驱动芯片ST7735S数据手册如下附件:
ST7735S_Preliminary V0.1_20101215.pdf
(4.05 MB, 下载次数: 5)
工程展现的显示效果如下,总体来说AT-START-F405性能稳定,刷屏流畅不迟滞。此次就简单分享下,后续再对DS18B20模块进行调试,完成屏的触摸功能。