当前位置:首页 > 单片机 > 单片机
[导读]一。 硬件连接二。 LCD&lcddev结构体LCD结构体在LCD.h中定义访问LCD_REG,地址就是0x6C000000|0x000007FE,此时RS= 0,发送命令访问完LCD_REG后,结构体指针自动加1,访问LCD_RAM,内部地址相应加2,此时RS= 1,发送

一。 硬件连接



二。 LCD&lcddev结构体

LCD结构体在LCD.h中定义




访问LCD_REG,地址就是0x6C000000|0x000007FE,此时RS= 0,发送命令

访问完LCD_REG后,结构体指针自动加1,访问LCD_RAM,内部地址相应加2,此时RS= 1,发送数据

lcd_dev结构体介绍:


width和height为LCD的宽度和高度。

id为LCD的ID,比如9341等。

dir为LCD是竖屏还是横屏的标志,0为竖屏,1为横屏。

wramcmd为开始写gram指令。

setxcm为设置x坐标指令。

setycmd为设置y坐标指令。

例:对于id = 0x9341的LCD

//设置LCD显示方向函数这个函数会在LCD初始化的最后进行调用。

//dir = 0,竖屏,dir = 1,横屏

void LCD_Display_Dir(u8 dir)

{

if (dir == 0) //竖屏

{

lcddev.dir = 0; //竖屏

lcddev.width = 240;

lcddev.height = 320;

lcddev.wramcmd = 0x2C;

lcddev.setxcmd = 0x2A;

lcddev.setycmd = 0x2B;

}

else //横屏

{

lcddev.dir = 1; //横屏

lcddev.width = 320;

lcddev.height = 240;

lcddev.wramcmd = 0x2C;

lcddev.setxcmd = 0x2A;

lcddev.setycmd = 0x2B;

}

}

三。 底层接口函数


写寄存器内容函数是写寄存器值函数+写数据函数

//写寄存器函数

//regval:寄存器值 RS= 0

void LCD_WR_REG(u16 regval)

{

LCD->LCD_REG=regval; //写入要写的寄存器序号

}

//写 LCD 数据函数 RS= 1

//data:要写入的值

void LCD_WR_DATA(u16 data)

{

LCD->LCD_RAM=data;

}

//读 LCD 数据函数

//返回值:读到的值

u16 LCD_RD_DATA(void)

{

return LCD->LCD_RAM;

}

//写寄存器函数

//LCD_Reg:寄存器地址

//LCD_RegValue:要写入的数据

void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)

{ LCD->LCD_REG = LCD_Reg; //写入要写的寄存器序号

LCD->LCD_RAM = LCD_RegValue; //写入数据

}

//读寄存器函数

//LCD_Reg:寄存器地址

//返回值:读到的数据

u16 LCD_ReadReg(u8 LCD_Reg)

{ LCD_WR_REG(LCD_Reg); //写入要读的寄存器序号

delay_us(5);

return LCD_RD_DATA(); //返回读到的值

}

//开始写 GRAM函数

void LCD_WriteRAM_Prepare(void)

{

LCD->LCD_REG=lcddev.wramcmd;

}

//LCD写GRAM

//RGB_Code:颜色值

void LCD_WriteRAM(u16 RGB_Code)

{

LCD->LCD_RAM = RGB_Code;//写十六位GRAM

}

四。 初始化函数


FSMC设置:

readWriteTiming.FSMC_AddressSetupTime = 0x01; //地址建立时间(ADDSET)为2个HCLK 1/36M=27ns

readWriteTiming.FSMC_AddressHoldTime = 0x00; //地址保持时间(ADDHLD)模式A未用到

readWriteTiming.FSMC_DataSetupTime = 0x0f; // 数据保存时间为16个HCLK,因为液晶驱动IC的 读数据的时候,速度不能太快,尤其对1289这个IC。

readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;

readWriteTiming.FSMC_CLKDivision = 0x00;

readWriteTiming.FSMC_DataLatency = 0x00;

readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A; //模式A

writeTiming.FSMC_AddressSetupTime = 0x00; //地址建立时间(ADDSET)为1个HCLK

writeTiming.FSMC_AddressHoldTime = 0x00; //地址保持时间(A

writeTiming.FSMC_DataSetupTime = 0x03; ////数据保存时间为4个HCLK

writeTiming.FSMC_BusTurnAroundDuration = 0x00;

writeTiming.FSMC_CLKDivision = 0x00;

writeTiming.FSMC_DataLatency = 0x00;

writeTiming.FSMC_AccessMode = FSMC_AccessMode_A; //模式A

FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;// 这里我们使用NE4 ,也就对应 BTCR[6],[7]。

FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; // 不复用数 据地址

FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM; //SRAM

FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//存储器数据 宽度为16bit

FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable;

FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;

FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable;

FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;

FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;

FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; // 存储器写 使能

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

7月29日消息,LG Display已将其在美国的70项LCD液晶显示器相关专利转让给三星显示,值得注意的是,三星显示已于三年前退出LCD业务。

关键字: LCD 三星

HT16K24操作电压为2.4V~5.5V,内建I²C通信接口,提供三种LCD显示与按键模式:24SEG × 4COM + 24 KEY;22SEG × 6COM + 22 KEY;20SEG × 8COM + 20 K...

关键字: LCD MCU 蜂鸣器

离线GPS工具:跟踪、保存和查找具有距离和方位的航路点——没有网络,没有云,您的数据,您的规则。

关键字: GPS设备 LCD 微控制器 Arduino Uno

在技术上,LCD和OLED各有其独特之处。液晶电视通过控制液态晶体实现图像显示,其原理是在两片玻璃基板中夹入液态晶体,通过细小的电线控制水晶分子的方向。而OLED凭借自发光二极管带来更优的视角与色彩表现,其RGB色彩信号...

关键字: OLED LCD

双锁系统,通过键盘输入密码开门,客人来了用短信开门

关键字: LCD 双锁系统 L293D 变压器

在汽车显示系统领域,TFT LCD显示屏目前是车载显示面板的主流选择。与此同时,OLED和micro-LED显示屏也逐渐吸引了市场的广泛关注。为了适应不同的显示技术,我们需要开发相应的电源技术。TFT LCD显示屏通常使...

关键字: LCD OLED micro-LED

如今,汽车行业对先进显示屏的需求空前高涨,亟需能够实现更大尺寸、更高亮度、曲面设计、更高分辨率和更高对比度的解决方案。与此同时,各类新型车载显示屏也日益受到青睐。目前,TFT LCD是汽车平板显示技术的主流选择。OLED...

关键字: LCD OLED micro-LED

大家好,欢迎回来。在这个项目中,我们将学习如何使用键盘和LCD显示制作一个安全的基于Arduino的门锁。你可以用它来保护你的办公室、房间或家里的保险箱。要锁门和开锁,你需要在安全系统中输入密码。这确保了只有经过授权的人...

关键字: 键盘 LCD Arduino 电子门锁

April 1, 2025 ---- 乐金显示广州LCD 8.5代线今日(4月1日)正式交割至TCL华星光电,并改名为t11。至此,TCL华星光电将拥有2条6代、4条8.5代、1条8.6代和2条10.5代LCD产线。Tr...

关键字: 电视 PID面板 LCD

将您的树莓派Pico变成带有触摸屏界面的USB-HID设备!在这个项目中,我们将在Arduino IDE中设置编程环境,为3.5”Pico Touch LCD屏蔽配置库,测试基本功能,创建简单的按钮(用于复制和粘贴),显...

关键字: 树莓派 触摸屏 LCD Windows
关闭