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

查看: 1789|回复: 2

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

[复制链接]

122

主题

129

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-5-28
发表于 2016-6-11 08:55:33 | 显示全部楼层 |阅读模式
本帖最后由 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



<
回复

使用道具 举报

122

主题

129

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-5-28
 楼主| 发表于 2016-6-14 08:58:33 | 显示全部楼层
百度云下载链接已被管理员删除,补上附件
YSF1_HAL-037. LCD-液晶显示.zip (5.01 MB, 下载次数: 45)
回复 支持 反对

使用道具 举报

0

主题

153

回帖

0

蝴蝶豆

中级会员

最后登录
2020-1-5
发表于 2016-7-2 07:14:31 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版