基于正点原子的IMX6ULL 开发板实现的 SPI LCD 上显示QT 包含设备树,直接可以运行 LCD:MSP2402(驱动IC ILI9341)
2023-03-10 00:33:40 9.58MB IMX6ULL SPILCD QT
1
lcd_qsys(FPGA代码,quartus软件代码,LCD液晶屏驱动代码)
1
lcd_interface.v 的功能大致如下: (一)初起的时候,液晶控制模块对液晶初始化。RAM模块本身也自行初始化。 (二)每隔一段时间,液晶控制模块就会从RAM模块读取图像信息,然后利 用这些信息来驱动液晶的显示。 在51~145行就是液晶控制模块的核心部分。61~114行是 initial_module.v 的部分,然而该功能被使能是在 isStart[1] ,亦即isStart寄存器最高位被拉高的时候才发生。这也就是说,lcd_interface.v 初始化的时候,51~145的“initial function”(液晶初始化功能)就被执行。 在同一个时间20~28行的定时器也开始计数。但是在定时器完成计数之前,在109行,产生了“完成反馈”,亦即“initial fucntion”已经执行完毕。此时在39行,if条件成立 isStart 被清零。 115~145行是“draw function”(液晶绘图功能)。该功能会发生在,当isStart[0],isStart寄存器的最低位被拉高的时候。每隔25ms的时间在20~28行的定时器都会产生定时,isStart的最低位都会被拉高。换句话说,每隔25ms“draw function”就会被执行。 当“draw function”完成后(140行),就会产生一个“完成反馈”。在同一个时间39行的if条件就会成立,isStart会被清零。 在148行的 Read_Addr_Sig 信号是作为“RAM模块”读取的寻址信号。 在前面,笔者显示了该lcd_interface.v 的扫描频率是 40Hz。如果换做公式来表达的话: T = 1 / F = 1 / 40Hz = 25 ms 这也是20~28行的定时器要每隔25ms产生一次定时的原因。因为每隔25ms,isStart寄存器的最低位就会被拉低,然后“draw function”就会被执行。换句话说,定时器的存在是为了充当“仿顺序操作”模块的“Start_Sig”信号。当然也可以这样说“Start_Sig 和 Done_Sig 都是发生在液晶控制模块的内部”(液晶控制模块自己自动使能自己)。
2023-01-12 14:07:43 124KB 液晶控制模块
1
protel99se原创电路图PCB图 串行LCD驱动 .
2022-12-12 15:07:07 36KB lcd 电路 驱动
1
LCD屏幕驱动程序加按键
2022-12-01 21:53:14 61KB LCD驱动
1
Real6410\s3c6410 wxcat43-tgLCD裸机驱动可显图显ascii字符串
1
嵌入式linux液晶显示器LCD的驱动程序源代码和Makefile编译驱动文件源代码
2022-05-27 19:01:10 9KB linux 源码软件 运维 服务器
TFT LCD 2.4寸屏 驱动程序 //头文件配置: #include "stm32f10x_lib.h" #include "Lcdili9320.h" #include "Delay_nus.h" #include "Delay_nms.h" #include "spi_flash.h" //底层硬件相关配置----------------- //--------------------------------- /**************************************************************** 函数名:Lcd配置函数 功能:配置所有和Lcd相关的GPIO和时钟 引脚分配为: PE——16Bit数据总线 PD15——Lcd_rst PD14——Lcd_rs PD13——Lcd_wr PD12——Lcd_rd PD11——Lcd_cs PB10——Lcd_blaklight 背光靠场效应管驱动背光模块 *****************************************************************/ void Lcd_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /*开启相应时钟 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE); /*所有Lcd引脚配置为推挽输出*/ /*16位数据*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOE, &GPIO_InitStructure); /*控制脚*/ GPIO_InitStructure.GPIO_Pin =GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; GPIO_Init(GPIOD, &GPIO_InitStructure); /*背光控制*/ GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5; GPIO_Init(GPIOB, &GPIO_InitStructure); } /************************************** 函数名:Lcd所有引脚变高 功能:与Lcd有关的所有引脚全部变高电平 入口参数:无 返回值:无 ***********************************/ void Lcd_AllPin_H(void) { GPIO_SetBits(GPIOE,GPIO_Pin_All);//16位数据线变高 GPIO_SetBits(GPIOD,GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);//控制脚变高 } void Lcd_Data_All_L(void) { GPIO_ResetBits(GPIOE,GPIO_Pin_All); //16位数据线变高 } void Lcd_Rd_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void Lcd_Rd_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_12); } void Lcd_Rst_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_15); } void Lcd_Rst_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_15); } void Lcd_Cs_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_11); } void Lcd_Cs_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_11); } void Lcd_Rs_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_14); } void Lcd_Rs_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_14); } void Lcd_Wr_L(void) { GPIO_ResetBits(GPIOD,GPIO_Pin_13); } void Lcd_Wr_H(void) { GPIO_SetBits(GPIOD,GPIO_Pin_13); } //通用子程序--------------------- //------------------------------ /********************************************** 函数名:Lcd初始化函数 功能:初始化Lcd 入口参数:无 返回值:无 ***********************************************/ void Lcd_Init(void) { Lcd_Light_ON; Lcd_AllPin_H();//所有引脚变高 Lcd_Rst_H(); Delay_nms(1); Lcd_Rst_L(); Delay_nms(1);//10 Lcd_Rst_H(); Delay_nms(1);//50 //开始初始化 LCD_WR_REG(0x00e5,0x8000);//set the internal vcore voltage不知道干什么的????? LCD_WR_REG(0x0000,0x0001);//开启内部OSC Delay_nms(10);//延时10ms等待晶体稳定 LCD_WR_REG(0x0001,0x0100);//SS=1 S极输出移动方向S720到S1. SM=0 【GS=0】 G极扫描方向从上到下(详细DATASHEET) LCD_WR_REG(0x0002,0x0700);//B/C=1 EOR=1 set the line inversion?不知道干什么???? LCD_WR_REG(0x0003,0x1030);//TFM=0,TRI=0,SWAP=1,16位system interface 写GRAM时翻转RGB数据到BRG数据?翻转干什么????? //HWM=0,高速GRAM写操作禁止???????????????????高速写操作是否是激活RBG或其他动态画面显 //示模式??????? AM=0,ID[1.0]=11 AC由左到右又下到上自增 LCD_WR_REG(0x0004,0x0000);//比例缩放设置 LCD_WR_REG(0x0008,0x0202); LCD_WR_REG(0x0009,0x0000); LCD_WR_REG(0x000a,0x0000); LCD_WR_REG(0x000c,0x0001);//system接口 显示静止画面 LCD_WR_REG(0x000d,0x0000); LCD_WR_REG(0x000f,0x0000);//RBG 接口极性设置 DOTCLK ENABLE HSYNC??????????????????????????? LCD_WR_REG(0x0050,0x0000);//水平 GRAM起始位置 LCD_WR_REG(0x0051,0x00ef);//水平GRAM终止位置 LCD_WR_REG(0x0052,0x0000);//垂直GRAM起始位置 LCD_WR_REG(0x0053,0x013f);//垂直GRAM终止位置 LCD_WR_REG(0x0060,0x2700);//G扫描设置 从G1开始 LCD_WR_REG(0x0061,0x0001);//Enables the grayscale inversion of the image by setting REV=1.?????????????????????????????? LCD_WR_REG(0x006a,0x0000);//不使用卷曲功能 LCD_WR_REG(0x0080,0x0000); LCD_WR_REG(0x0081,0x0000); LCD_WR_REG(0x0082,0x0000); LCD_WR_REG(0x0083,0x0000); LCD_WR_REG(0x0084,0x0000); LCD_WR_REG(0x0085,0x0000); LCD_WR_REG(0x0090,0x0010); LCD_WR_REG(0x0092,0x0000); LCD_WR_REG(0x0093,0x0003); LCD_WR_REG(0x0095,0x0110); LCD_WR_REG(0x0097,0x0000); LCD_WR_REG(0x0098,0x0000); /*电源设置*/ LCD_WR_REG(0x0010,0x0000); LCD_WR_REG(0x0011,0x0000); LCD_WR_REG(0x0012,0x0000); LCD_WR_REG(0x0013,0x0000); Delay_nms(200); LCD_WR_REG(0x0010,0x17b0); LCD_WR_REG(0x0011,0x0137); Delay_nms(50); LCD_WR_REG(0x0012,0x0139); Delay_nms(50); LCD_WR_REG(0x0013,0x1700); LCD_WR_REG(0x0029,0x000c); Delay_nms(50); LCD_WR_REG(0x0020,0x0000);//GRAM水平起始位置 LCD_WR_REG(0x0021,0x0000);// LCD_WR_REG(0x0030,0x0000); LCD_WR_REG(0x0031,0x0507); LCD_WR_REG(0x0032,0x0104); LCD_WR_REG(0x0035,0x0105); LCD_WR_REG(0x0036,0x0404); LCD_WR_REG(0x0037,0x0603); LCD_WR_REG(0x0038,0x0004); LCD_WR_REG(0x0039,0x0007); LCD_WR_REG(0x003c,0x0501); LCD_WR_REG(0x003d,0x0404); //显示开启 LCD_WR_REG(0x0007,0x0073);//写入0173是显示当前GRAM内容 写入0073是不显示当前 }
2022-05-23 17:39:17 17KB TFT LCD 9320
1
LCD12864的串行驱动,仅用三根数据线
2022-05-20 09:26:50 4KB LCD 12864 驱动 串行
1
lib_tft24T 带触摸屏的2.4英寸320x240 SPI LCD-Python驱动程序 2018年5月-原作者不再保留此内容。 如果您觉得有用,请随意进行分叉,复制和改编 该模块目前在eBay上很流行。 标记为TJCTM24024-SPI。 这是一个由ILI9341驱动的LCD显示器,带有用于触摸设备的XPT2046芯片,还包括一个SD卡固定器。 所有部分均为SPI。 我的兴趣是针对LCD和Touch的简单Python库模块。 我将忽略的SD卡。 我的应用程序适用于Raspberry Pi,适用于我签出后的Virtual-GPIO。 我的LCD驱动程序不是帧缓冲方法。 (320x240太小,无法在其上格式化任何普通的台式机显示器。)而且它不是立即直接写入LCD的方法。 相反,它使用Python图像库(PIL)在“画布”或缓冲区上准备所有显示内容。 准备好后,它将总缓冲区传输到
2022-05-13 17:22:00 1.86MB Python
1