0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32入门学习笔记之TFTLCD显示实验3

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 11:05 次阅读

(3)SRAM/NOR 闪存写时序寄存器:FSMC_BWTRx(x=1~4)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- ACCMOD DATLAT CLKDIV BUSTURN
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DATAST ADDHLD ADDSET

Bit 29~Bit 28:访问模式(这2位只在FSMC_BCRx寄存器的EXTMOD位为1时起作用)

00:访问模式A

   01:访问模式B

   10:访问模式C

   11:访问模式D

Bit 27~Bit 24:数据保持时间

0000:第一个数据的保持时间为2个CLK时钟周期

   ……

   1111:第一个数据的保持时间为17个CLK时钟周期(默认)

Bit 23~Bit 20:时钟分频比

0000:保留

   0001:1个CLK周期=2个HCLK周期

   0010:1个CLK周期=3个HCLK周期

   ……

   1111:1个CLK周期=16个HCLK周期(默认)

Bit 19~Bit 16:总线恢复时间

0000:总线恢复时间=1个HCLK时钟周期

   ……

   1111:总线恢复时间=16个HCLK时钟周期(默认)

Bit 15~Bit 8:数据保持时间

00000000:保留

   00000001:DATAST保持时间=2个HCLK时钟周期

   00000010:DATAST保持时间=3个HCLK时钟周期

   ……

   11111111:DATAST保持时间=256个HCLK时钟周期(默认)

Bit 7~Bit 4:地址保持时间

0000:ADDHLD保持时间=1个HCLK时钟周期

   ……

   1111:ADDHLD保持时间=16个HCLK时钟周期(默认)

Bit 3~Bit 0:地址建立时间

0000:ADDSET建立时间=1个HCLK时钟周期

   ……

   1111:ADDSET建立时间=16个HCLK时钟周期(默认)

10.4 实验例程

现有一块驱动芯片为5510的LCD驱动芯片,厂家提供初始化例程,使用STM32的FSMC功能驱动屏幕显示字符串,连接关系如下表所示。

片选CS:FSMC_NE4

写控制WR:FSMC_NWE

读控制RD:FSMC_NOE

数据命令控制RS:FSMC_A6

背光:PB0

16位并行数据:FSMC_D15~FSMC_D0

(1)创建lcd.h,并输入以下代码。

#ifndef _LCD_H_
#define _LCD_H_
#include "sys.h"
//LCD地址结构体
typedef struct
{
  vu16 LCD_REG ;
  vu16 LCD_RAM ;
}LCD_TypeDef ;
#define LCD_BASE    ( ( u32 )( 0x6C000000|0x000007FE ))
#define LCD        ( ( LCD_TypeDef* ) LCD_BASE )
//LCD重要参数
typedef struct  
{                        
  u16 width ;                    //LCD宽度
  u16 height ;                    //LCD高度
  u8 dir ;                      //横屏竖屏控制
  u16 wramcmd ;                  //开始写gram指令
  u16 setxcmd ;                    //设置x坐标指令
  u16 setycmd ;                    //设置y坐标指令 
}_lcd_dev ;
extern _lcd_dev lcddev ;                  //管理LCD重要参数
//LCD的画笔颜色和背景色
extern u16 POINT_COLOR ;                  //画笔颜色
extern u16 BACK_COLOR ;                  //背景颜色
#define  LCD_LED PBout(0)                  //LCD背光
//画笔颜色
#define WHITE            0xFFFF
#define BLACK            0x0000    
#define BLUE            0x001F  
#define BRED             0XF81F
#define GRED        0XFFE0
#define GBLUE       0X07FF
#define RED              0xF800
#define MAGENTA          0xF81F
#define GREEN            0x07E0
#define CYAN             0x7FFF
#define YELLOW           0xFFE0
#define BROWN        0XBC40              //棕色
#define BRRED        0XFC07              //棕红色
#define GRAY         0X8430              //灰色
void LCD_Init( void ) ;                    //初始化
void LCD_Clear( u16 Color ) ;                //清屏
void LCD_Fast_DrawPoint( u16 x, u16 y, u16 color ) ;      //快速画点
void LCD_ShowString( u16 x, u16 y, u8 *p ) ;          //显示一个字符串
#endif

注1 :关于LCD_BASE地址的定义部分,其中0x6C000000代表FSMC的SRAM块4的开始地址,0x000007FE则代表A10的偏移地址,7FE H换算成2进制就是01111111 1110,由于FSMC在16位数据总线状态下,地址需要右移一个字节,所以映射到A10A0上的地址数据就是011 1111 1111,A0恰好就是0,如果此时16位地址加1,对应的8位地址就是加2,也就是7FE+2=800,映射到A10A0上的地址就是100 0000 0000,即A10变为了1,这就实现了通过A10来控制RS的效果。我们定义的结构体也可以发现,LCD_REG对应的就是0x6C000000+0x000007FE,而LCD_RAM对应的就变成了0x6C000000+0x000007FE+0x00000002。

注2 :结构体_lcd_dev则定义了一些LCD参数,比如高度,宽度,设置命令,可以通过改变宏定义的方式来改变控制器的输出。

注3 :颜色数据。

目前的颜色数据都有RGB888,RGB666和RGB565格式,代表了R,G和B的分辨率,其中RGB888代表红,绿,蓝都是8位,可以表示16777216种颜色,但是受制于TFTLCD的数据总线宽度只有16位,所以只能够采用RGB565模式,这种模式代表红色和蓝色都是5位分辨率,绿色6位分辨率,这种模式中可以最多表示65536种颜色。文件中宏定义的颜色数据就是根据RGB888格式转换而来,一般都是放弃低2位和低1位,例如RGB888模式中某种颜色为11011110 11011110 11011111,那么转换为RGB565模式就变成了11011 110111 11011,换成16进制就是1101 1110 1111 1011=DEFB H。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22627

    浏览量

    647547
  • 单片机
    +关注

    关注

    6012

    文章

    44173

    浏览量

    624631
  • 数码管
    +关注

    关注

    31

    文章

    1843

    浏览量

    90279
收藏 人收藏

    评论

    相关推荐

    stm32 mini板TFTLCD显示模块源程序

    实验器材:MiniSTM32F103开发板V3版本 实验目的:学习彩色TFTLCD
    发表于 07-02 08:49

    stm32 mini板TFTLCD显示模块源程序

    实验器材:MiniSTM32F103开发板V3版本 实验目的:学习彩色TFTLCD
    发表于 07-06 08:49

    如何使用STM32F1的FSMC接口控制TFTLCD显示

    以前我们用 51 单片机控制 TFTLCD(TFT 液晶屏)时,使用的是 IO 口模拟80 接口时序。这次我们来学习如何使用 STM32F1 的 FSMC(灵活的静态存储控制器)接口控制
    发表于 03-01 07:44

    利用STM32连接ALIENTEK TFTLCD模块实现TFTLCD模块的显示

    实验利用战舰STM32开发板连接ALIENTEK TFTLCD模块,实现TFTLCD模块的显示,下载成功后,通过把LCD模块插入
    发表于 10-07 07:50

    学习笔记12864串行显示

    学习笔记12864串行显示讲解,很好的资料下载吧。
    发表于 01-13 16:09 0次下载

    ALIENTEK_MINISTM32_实验10_TFT_LCD显示

    ALIENTEK MINISTM32 实验10 TFTLCD显示实验,很好的资料,快来下载吧
    发表于 02-19 11:37 45次下载

    STM32各模块学习笔记

    STM32个模块学习笔记 目录 STM32笔记之一 中断优先级.......................................
    发表于 11-30 03:32 3044次阅读

    STM32学习——TFTLCD原理

    STM32学习——TFTLCD原理一.TFTLCD 简介TFT-LCD 即薄膜晶体管液晶显示器(Thin Film Transistor-L
    发表于 12-05 17:21 15次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b>——<b class='flag-5'>TFTLCD</b>原理

    STM32CubeMX系列|TFTLCD显示

    TFTLCD显示1. TFTLCD显示简介2. 硬件设计3. 软件设计3.1 STM32Cube
    发表于 12-17 18:38 18次下载
    <b class='flag-5'>STM32</b>CubeMX系列|<b class='flag-5'>TFTLCD</b><b class='flag-5'>显示</b>

    基于STM32 的直流电机PID调速 及TFTLCD屏幕显示速度值及速度曲线

    学习STM32有一段时间了,完整的做了一套系统,记录一下。开发目标:1、STM32 输出PWM控制直流电机转速。 2、采用增量式PID控制方法调节电机转速。 3
    发表于 01-14 11:27 31次下载
    基于<b class='flag-5'>STM32</b> 的直流电机PID调速 及<b class='flag-5'>TFTLCD</b>屏幕<b class='flag-5'>显示</b>速度值及速度曲线

    UM1766_STM32CubeF3入门STM32F3系列

    UM1766_STM32CubeF3入门STM32F3系列
    发表于 11-22 08:22 6次下载
    UM1766_<b class='flag-5'>STM32CubeF3</b><b class='flag-5'>入门</b><b class='flag-5'>之</b><b class='flag-5'>STM32F3</b>系列

    STM32入门学习笔记TFTLCD显示实验1

    之前在51为核心的系统里面,常用的显示器件有LED,数码管,LCD1602和LCD12864,这些器件都有一个共同的特点,那就是只有一个颜色,没有办法显示彩色图片,为了显示彩色图片,我们引入了TFT
    的头像 发表于 02-16 11:05 3713次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>TFTLCD</b><b class='flag-5'>显示</b><b class='flag-5'>实验</b>1

    STM32入门学习笔记TFTLCD显示实验2

    之前在51为核心的系统里面,常用的显示器件有LED,数码管,LCD1602和LCD12864,这些器件都有一个共同的特点,那就是只有一个颜色,没有办法显示彩色图片,为了显示彩色图片,我们引入了TFT
    的头像 发表于 02-16 11:05 594次阅读

    STM32入门学习笔记TFTLCD显示实验4

    之前在51为核心的系统里面,常用的显示器件有LED,数码管,LCD1602和LCD12864,这些器件都有一个共同的特点,那就是只有一个颜色,没有办法显示彩色图片,为了显示彩色图片,我们引入了TFT
    的头像 发表于 02-16 11:06 870次阅读

    基于STM32单片机TFTLCD显示使用库文件设计源代码

    基于STM32单片机TFTLCD显示使用库文件设计源代码
    发表于 04-26 14:54 1次下载