你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【HAL库每天一例】第037例:LCD-液晶显示

[复制链接]
haohao663 提问时间:2016-6-11 08:55 /
本帖最后由 haohao663 于 2016-6-16 11:42 编辑

【HAL库每天一例】系列例程从今天开始持续更新。。。。。
我们将坚持每天至少发布一个基于YS-F1Pro开发板的HAL库例程,
该系列例程将带领大家从零开始使用HAL库,后面会持续添加模块应用例程。
同样的,我们还程序发布基于HAL库的指导文档和视频教程,欢迎持续关注,并提出改进意见。
例程下载:
资料包括程序、相关说明资料以及软件使用截图
链接:https://pan.baidu.com/s/1i574oPv
密码:r3s3
(硬石YS-F1Pro开发板HAL库例程持续更新\1. 软件设计之基本裸机例程(HAL库版本)\YSF1_HAL-037. LCD-液晶显示

/**
  ******************************************************************************
  *                           硬石YS-F1Pro开发板例程功能说明
  *
  *  例程名称: YSF1_HAL-037. LCD-液晶显示
  *   
  ******************************************************************************
  * 说明:
  * 本例程配套硬石stm32开发板YS-F1Pro使用。
  *
  * 淘宝:
  * 论坛:硬石电子社区
  * 版权归硬石嵌入式开发团队所有,请勿商用。
  ******************************************************************************
  */
【1】例程简介
  FSMC:可变静态存储控制器,是STM32系列采用的一种新型的存储器扩展技术。一般可以用FSMC
接口与液晶驱动IC连接,实现数据交换。YS-F1Pro预留16bit的FSMC液晶接口,我们同时提供了
3.5寸TFT液晶模组供选购,该模组的液晶驱动IC型号为ILI9488。
  本例程实现液晶模组显示和测试。
  
【2】跳线帽情况
******* 为保证例程正常运行,必须插入以下跳线帽 **********
丝印编号     IO端口      目标功能引脚        出厂默认设置
  JP1        PA10        TXD(CH340G)          已接入
  JP2        PA9         RXD(CH340G)          已接入
  
【3】操作及现象
把3.5寸TFT液晶模组插入开发板中间液晶接口上,使用开发板配套的MINI USB线连接到开发板标
示“调试串口”字样的MIMI USB接口(需要安装驱动),在电脑端打开串口调试助手工具,设置参
数为115200 8-N-1。下载完程序之后,在串口调试助手窗口可接收到信息,同时液晶屏幕亮起来,
显示为蓝色,等一会循环随机变化显示颜色。


CubeMX_1.jpg
CubeMX_2.jpg
CubeMX_3.jpg
CubeMX_4.jpg
CubeMX_5.jpg
CubeMX_6.jpg

bsp_lcd.h文件内容
  1. #ifndef __BSP_LCD_H__
  2. #define        __BSP_LCD_H__

  3. /* 包含头文件 ----------------------------------------------------------------*/
  4. #include "stm32f1xx_hal.h"

  5. /* 类型定义 ------------------------------------------------------------------*/
  6. typedef enum
  7. {
  8.   USB_FONT_16=16,
  9.   USB_FONT_24=24,
  10. }USB_FONT_Typdef;
  11. #define IS_USB_FONT(FONT)           (((FONT) == USB_FONT_16) || ((FONT) == USB_FONT_24))

  12. /* 宏定义 --------------------------------------------------------------------*/
  13. /******************************************************************************
  14. 2^26 =0X0400 0000 = 64MB,每个 BANK 有4*64MB = 256MB
  15. 64MB:FSMC_Bank1_NORSRAM1:0X6000 0000 ~ 0X63FF FFFF
  16. 64MB:FSMC_Bank1_NORSRAM2:0X6400 0000 ~ 0X67FF FFFF
  17. 64MB:FSMC_Bank1_NORSRAM3:0X6800 0000 ~ 0X6BFF FFFF
  18. 64MB:FSMC_Bank1_NORSRAM4:0X6C00 0000 ~ 0X6FFF FFFF

  19. 选择BANK1-BORSRAM4 连接 TFT,地址范围为0X6C00 0000 ~ 0X6FFF FFFF
  20. YS-F1P开发板选择 FSMC_A0 接LCD的DC(寄存器/数据选择)脚
  21. 寄存器基地址 = 0X6C00 0000
  22. RAM基地址 = 0X6C00 0002 = 0X6C00 0000+(1<<(0+1))
  23. 如果电路设计时选择不同的地址线时,地址要重新计算  
  24. *******************************************************************************/
  25. /******************************* ILI9488 显示屏的 FSMC 参数定义 ***************/
  26. #define FSMC_LCD_CMD                   ((uint32_t)0x6C000000)            //FSMC_Bank1_NORSRAM1用于LCD命令操作的地址
  27. #define FSMC_LCD_DATA                  ((uint32_t)0x6C000002)      //FSMC_Bank1_NORSRAM1用于LCD数据操作的地址      
  28. #define LCD_WRITE_CMD(x)               *(__IO uint16_t *)FSMC_LCD_CMD  = x
  29. #define LCD_WRITE_DATA(x)              *(__IO uint16_t *)FSMC_LCD_DATA = x
  30. #define LCD_READ_DATA()                *(__IO uint16_t *)FSMC_LCD_DATA

  31. #define FSMC_LCD_BANKx                 FSMC_NORSRAM_BANK4

  32. /************************* ILI9488 显示屏8080通讯引脚定义 *********************/
  33. #define FSMC_LCD_CS_GPIO_ClK_ENABLE()  __HAL_RCC_GPIOG_CLK_ENABLE()
  34. #define FSMC_LCD_CS_PORT               GPIOG
  35. #define FSMC_LCD_CS_PIN                GPIO_PIN_12

  36. #define FSMC_LCD_DC_GPIO_ClK_ENABLE()  __HAL_RCC_GPIOF_CLK_ENABLE()
  37. #define FSMC_LCD_DC_PORT               GPIOF
  38. #define FSMC_LCD_DC_PIN                GPIO_PIN_0

  39. #define FSMC_LCD_BK_GPIO_ClK_ENABLE()  __HAL_RCC_GPIOF_CLK_ENABLE()   
  40. #define FSMC_LCD_BK_PORT               GPIOF
  41. #define FSMC_LCD_BK_PIN                GPIO_PIN_10

  42. #define LCD_BK_ON()                    HAL_GPIO_WritePin(FSMC_LCD_BK_PORT, FSMC_LCD_BK_PIN, GPIO_PIN_SET);
  43. #define LCD_BK_OFF()                   HAL_GPIO_WritePin(FSMC_LCD_BK_PORT, FSMC_LCD_BK_PIN, GPIO_PIN_RESET);

  44. /**************** 显示方向选择,可选(1,2,3,4)四个方向 *************************/
  45. #define LCD_DIRECTION                  1  // 原点在屏幕左上角 X*Y=320*480
  46. //#define LCD_DIRECTION                  2  // 原点在屏幕右上角 X*Y=480*320
  47. //#define LCD_DIRECTION                  3  // 原点在屏幕右下角 X*Y=320*480
  48. //#define LCD_DIRECTION                  4  // 原点在屏幕左下角 X*Y=480*320

  49. /******** ILI934 显示屏全屏默认(扫描方向为1时)最大宽度和最大高度*************/
  50. #if (LCD_DIRECTION==1)||(LCD_DIRECTION==3)

  51. #define LCD_DEFAULT_WIDTH                         320  // X轴长度
  52. #define LCD_DEFAULT_HEIGTH                  480  // Y轴长度

  53. #else

  54. #define LCD_DEFAULT_WIDTH                         480  // X轴长度
  55. #define LCD_DEFAULT_HEIGTH                  320  // Y轴长度

  56. #endif

  57. /******************************* 定义 ILI9488 显示屏常用颜色 ********************************/
  58. #define BACKGROUND                                 WHITE     //默认背景颜色


  59. #define BLUE                          (uint16_t)0x001F           //蓝色
  60. #define GREEN                         (uint16_t)0x07E0           //绿色
  61. #define RED                           (uint16_t)0xF800           //红色
  62. #define CYAN                          (uint16_t)0x07FF           //蓝绿色,青色
  63. #define MAGENTA                       (uint16_t)0xF81F           //红紫色,洋红色
  64. #define YELLOW                        (uint16_t)0xFFE0           //黄色
  65. #define LIGHTBLUE                     (uint16_t)0x841F
  66. #define LIGHTGREEN                    (uint16_t)0x87F0
  67. #define LIGHTRED                      (uint16_t)0xFC10
  68. #define LIGHTCYAN                     (uint16_t)0x87FF
  69. #define LIGHTMAGENTA                  (uint16_t)0xFC1F
  70. #define LIGHTYELLOW                   (uint16_t)0xFFF0
  71. #define DARKBLUE                      (uint16_t)0x0010
  72. #define DARKGREEN                     (uint16_t)0x0400
  73. #define DARKRED                       (uint16_t)0x8000
  74. #define DARKCYAN                      (uint16_t)0x0410
  75. #define DARKMAGENTA                   (uint16_t)0x8010
  76. #define DARKYELLOW                    (uint16_t)0x8400
  77. #define WHITE                         (uint16_t)0xFFFF           //白色
  78. #define LIGHTGRAY                     (uint16_t)0xD69A
  79. #define GRAY                          (uint16_t)0x8410           //灰色
  80. #define DARKGRAY                      (uint16_t)0x4208
  81. #define BLACK                         (uint16_t)0x0000           //黑色
  82. #define BROWN                         (uint16_t)0xA145
  83. #define ORANGE                        (uint16_t)0xFD20

  84. /* 扩展变量 ------------------------------------------------------------------*/
  85. extern SRAM_HandleTypeDef hlcd;
  86. /* 函数声明 ------------------------------------------------------------------*/
  87. uint32_t BSP_LCD_Init(void);
  88. void LCD_SetDirection(uint8_t ucOtion);
  89. void LCD_OpenWindow(uint16_t usX,uint16_t usY,uint16_t usWidth,uint16_t usHeight);
  90. void LCD_Clear(uint16_t usX,uint16_t usY,uint16_t usWidth,uint16_t usHeight,uint16_t usColor);
  91. void LCD_SetPointPixel(uint16_t usX,uint16_t usY,uint16_t usColor);
  92. uint16_t LCD_GetPointPixel(uint16_t usX,uint16_t usY);
  93. void LCD_DrawLine(uint16_t usX1,uint16_t usY1,uint16_t usX2,uint16_t usY2,uint16_t usColor);
  94. void LCD_DrawRectangle(uint16_t usX_Start,uint16_t usY_Start, uint16_t usWidth,uint16_t usHeight,uint16_t usColor,uint8_t ucFilled);
  95. void LCD_DrawCircle(uint16_t usX_Center,uint16_t usY_Center,uint16_t usRadius,uint16_t usColor,uint8_t ucFilled);
  96. void LCD_DispChar_EN(uint16_t usX,uint16_t usY,const char cChar,uint16_t usColor_Background,uint16_t usColor_Foreground,USB_FONT_Typdef font);
  97. void LCD_DispString_EN(uint16_t usX,uint16_t usY,const char *pStr,uint16_t usColor_Background,uint16_t usColor_Foreground,USB_FONT_Typdef font);
  98. #endif /* __BSP_LCD_H__ */
复制代码
串口调试助手截图.jpg



收藏 评论2 发布时间:2016-6-11 08:55

举报

2个回答
haohao663 回答时间:2016-6-14 08:58:33
百度云下载链接已被管理员删除,补上附件
YSF1_HAL-037. LCD-液晶显示.zip (5.01 MB, 下载次数: 51)
Ian-392967 回答时间:2016-7-2 07:14:31
多谢分享

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版