STM32F4 Discovery 使用FSMC驱动ILI9481 3.5寸 信利屏

对于主函数来数,只需要

int main(void)
{
	SystemInit();
	SysTick_Init();
	LCD_Init();
	while(1){
		Delay(10);
	}
}
即可,初始化系统,系统时钟,初始化LCD屏。

system_stm32f4xx.c文件中有SystemInit()函数,里面的内容不用改,直接拿来可以用。

SysTick_Init函数是自己实现的

void SysTick_Init(void)
{
	while(SysTick_Config(SystemCoreClock/1000000)!=0);    //设置系统节拍时钟为1us中断一次
}
下面是关键的LCD初始化函数

首先,需要知道,硬件是如何连接的,下面是我的连接线方式:

PD14 -----FSMC_D0  ----D0
PD15 -----FSMC_D1  ----D1
PD0   -----FSMC_D2  ----D2
PD1   -----FSMC_D3  ----D3
PE7    -----FSMC_D4  ---D4
PE8    -----FSMC_D5  ---D5
PE9    -----FSMC_D6  ---D6
PE10  -----FSMC_D7   ----D7
PE11  -----FSMC_D8   ----D8
PE12  -----FSMC_D9   ----D9
PE13  -----FSMC_D10   ----D10
PE14  -----FSMC_D11   ----D11
PE15  -----FSMC_D12   ----D12
PD8   -----FSMC_D13   ----D13
PD9   -----FSMC_D14   ----D14
PD10 -----FSMC_D15   ----D15
PD4   -----FSMC_NOE -----RD
PD5   -----FSMC_NWE ----WR
PD7    -----FSMC_NE1  ----CS
PE3 -----FSMC_A19   ----RS

没有背光控制,我直接让背光常亮,RESET引脚我连接到了单片机RESET引脚上了。使用了NE1。

#define LCD_RAM   *(vu16*)((u32)0x60100000)  //disp Data ADDR
#define LCD_REG   *(vu16*)((u32)0x60000000) //disp Reg  ADDR

下面是我的能用的 初始化 函数

void LCD_Init(void)
{ 
  LCD_FSMC_Config();
  delay_nms(50); 
		
	LCD_WR_REG(0x0011);          //退出睡眠模式,0x0010为进入
  delay_nms(50);
  LCD_WR_REG(0x0013);          //进入普通显示模式 
	
  LCD_WR_REG(0x00D0);          //设置电源参数,后续3个参数
  LCD_WR_DATA(0x0007);         //1.0xVci 07
  LCD_WR_DATA(0x0042);         //40
  LCD_WR_DATA(0x0018);         //1c 
	
  LCD_WR_REG(0x0
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于驱动ILI9800液晶,您可以使用STM32F4系列的FSMC(Flexible Static Memory Controller)来进行驱动。首先,确保您已经正确配置并初始化了FSMC,包括设置相应的时序参数和引脚映射。 下面是一个简单的示例代码,演示如何使用FSMC驱动ILI9800液晶: ```c // 定义FSMC寄存器地址 #define FSMC_BANK1_BASE_ADDR 0x60000000 #define FSMC_BANK1_RS_ADDR (FSMC_BANK1_BASE_ADDR + 0x0000) // RS引脚地址 #define FSMC_BANK1_RW_ADDR (FSMC_BANK1_BASE_ADDR + 0x0800) // RW引脚地址 #define FSMC_BANK1_DATA_ADDR (FSMC_BANK1_BASE_ADDR + 0x1000) // 数据引脚地址 // 写命令到ILI9800 void ILI9800_WriteCommand(uint16_t command) { *(volatile uint16_t*)FSMC_BANK1_RS_ADDR = 0; // RS引脚置低表示写命令 *(volatile uint16_t*)FSMC_BANK1_RW_ADDR = 0; // RW引脚置低表示写入 *(volatile uint16_t*)FSMC_BANK1_DATA_ADDR = command; // 写入命令数据 } // 写数据到ILI9800 void ILI9800_WriteData(uint16_t data) { *(volatile uint16_t*)FSMC_BANK1_RS_ADDR = 1; // RS引脚置高表示写数据 *(volatile uint16_t*)FSMC_BANK1_RW_ADDR = 0; // RW引脚置低表示写入 *(volatile uint16_t*)FSMC_BANK1_DATA_ADDR = data; // 写入数据 } // 初始化ILI9800 void ILI9800_Init() { // 进行ILI9800的初始化操作,具体根据液晶规格进行配置 } int main() { // 进行FSMC的初始化配置 // 初始化ILI9800 ILI9800_Init(); while (1) { // 更新ILI9800显示内容 // 进行其他操作 } } ``` 请注意,以上代码仅为示例,具体的液晶初始化和显示操作需要根据您使用的ILI9800液晶具体规格和驱动要求进行配置。 希望这可以帮助到您!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值