haohao663 发表于 2016-6-13 08:43:57

【HAL库每天一例】第039例: LCD-显示英文(字模在内部Flash)

本帖最后由 haohao663 于 2016-6-14 08:51 编辑

【HAL库每天一例】系列例程从今天开始持续更新。。。。。
我们将坚持每天至少发布一个HAL库例程,
该系列例程将带领大家从零开始使用HAL库,后面会持续添加模块应用例程。
同样的,我们还程序发布基于HAL库的指导文档和视频教程,欢迎持续关注,并提出改进意见。
例程下载:
资料包括程序、相关说明资料以及软件使用截图

/**
******************************************************************************
*                           硬石YS-F1Pro开发板例程功能说明
*
*例程名称: YSF1_HAL-039. LCD-显示英文(字模在内部Flash)
*   
******************************************************************************
* 说明:
* 本例程配套硬石stm32开发板YS-F1Pro使用。
*
* 版权归硬石嵌入式开发团队所有,请勿商用。
******************************************************************************
*/
【1】例程简介
FSMC:可变静态存储控制器,是STM32系列采用的一种新型的存储器扩展技术。一般可以用FSMC
接口与液晶驱动IC连接,实现数据交换。YS-F1Pro预留16bit的FSMC液晶接口,我们同时提供了
3.5寸TFT液晶模组供选购,该模组的液晶驱动IC型号为ILI9488。
本例程实现液晶模组显示英文字符和字符串,提供16号和24号两种字体选择。

【2】跳线帽情况
******* 为保证例程正常运行,必须插入以下跳线帽 **********
丝印编号   IO端口      目标功能引脚      出厂默认设置
JP1      PA10      TXD(CH340G)          已接入
JP2      PA9         RXD(CH340G)          已接入

【3】操作及现象
把3.5寸TFT液晶模组插入开发板中间液晶接口上,使用开发板配套的MINI USB线连接到开发板标
示“调试串口”字样的MIMI USB接口(需要安装驱动),在电脑端打开串口调试助手工具,设置参
数为115200 8-N-1。下载完程序之后,在串口调试助手窗口可接收到液晶模组ID信息,同时液晶屏
幕亮起来,背景为黑色,显示一些英文字符。





英文显示函数实现

/**
* 函数功能: 在 LCD 显示器上显示一个英文字符
* 输入参数: usX:在特定扫描方向下字符的起始X坐标
*         usY :在特定扫描方向下该点的起始Y坐标
*         cChar :要显示的英文字符
*         usColor_Background :选择英文字符的背景色
*         usColor_Foreground :选择英文字符的前景色
*         font:字体选择
*             参数:USB_FONT_16 :16号字体
*                   USB_FONT_24 :24号字体
* 返 回 值: 无
* 说    明:该函数必须与ascii.h内容对应使用
*/
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)
{
      uint8_t ucTemp, ucRelativePositon, ucPage, ucColumn;

/* 检查输入参数是否合法 */
assert_param(IS_USB_FONT(font));

      ucRelativePositon = cChar - ' ';

      if(font==USB_FONT_16)
{
    LCD_OpenWindow(usX,usY,8,16);
    LCD_WRITE_CMD(0x2C);
   
    for(ucPage=0;ucPage<16;ucPage++)
    {
      ucTemp=ucAscii_1608;               
      for(ucColumn=0;ucColumn<8;ucColumn++)
      {
      if(ucTemp&0x01)
          LCD_WRITE_DATA(usColor_Foreground);                        
      else
          LCD_WRITE_DATA(usColor_Background);                                                               
      ucTemp >>= 1;                                       
      }
    }   
}
else
{
    LCD_OpenWindow(usX,usY,12,24);
    LCD_WRITE_CMD(0x2C);
   
    for(ucPage=0;ucPage<48;ucPage++)
    {
      ucTemp=ucAscii_2412;               
      for(ucColumn=0;ucColumn<8;ucColumn++)
      {
      if(ucTemp&0x01)
          LCD_WRITE_DATA(usColor_Foreground);                        
      else
          LCD_WRITE_DATA(usColor_Background);                                                               
      ucTemp >>= 1;                                       
      }      
      ucPage++;
      ucTemp=ucAscii_2412;
      /* 只显示前面4个位,与上面8位总共12位 */
      for(ucColumn=0;ucColumn<4;ucColumn++)
      {
      if(ucTemp&0x01)
          LCD_WRITE_DATA(usColor_Foreground);                        
      else
          LCD_WRITE_DATA(usColor_Background);                                                               
      ucTemp >>= 1;                                       
      }      
    }
}      
}

/**
* 函数功能: 在 LCD 显示器上显示英文字符串
* 输入参数: usX:在特定扫描方向下字符的起始X坐标
*         usY :在特定扫描方向下该点的起始Y坐标
*         pStr :要显示的英文字符串的首地址
*         usColor_Background :选择英文字符的背景色
*         usColor_Foreground :选择英文字符的前景色
*         font:字体选择
*             参数:USB_FONT_16 :16号字体
*                   USB_FONT_24 :24号字体
* 返 回 值: 无
* 说    明:该函数必须与ascii.h内容对应使用
*/
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)
{
/* 检查输入参数是否合法 */
assert_param(IS_USB_FONT(font));

      while ( * pStr != '\0' )
      {
    if(font==USB_FONT_16)
    {
      if ( ( usX +8 ) > LCD_DEFAULT_WIDTH )
      {
      usX = 0;
      usY += 16;
      }      
      if ( ( usY +16 ) > LCD_DEFAULT_HEIGTH )
      {
      usX = 0;
      usY = 0;
      }      
      LCD_DispChar_EN ( usX, usY, * pStr, usColor_Background, usColor_Foreground,font);
      pStr ++;      
      usX += 8;
    }
    else
    {
      if ( ( usX +12 ) > LCD_DEFAULT_WIDTH )
      {
      usX = 0;
      usY += 24;
      }      
      if ( ( usY +24 ) > LCD_DEFAULT_HEIGTH )
      {
      usX = 0;
      usY = 0;
      }      
      LCD_DispChar_EN ( usX, usY, * pStr, usColor_Background, usColor_Foreground,font);
      pStr ++;      
      usX += 12;
    }
      }
}



修改原因:删除百度云下载链接

Ian-392967 发表于 2016-7-2 07:17:58

多谢分享
页: [1]
查看完整版本: 【HAL库每天一例】第039例: LCD-显示英文(字模在内部Flash)