MSP432 TFTLCD ILI9481 软件SPI

article/2025/10/25 21:46:18

 下面是我用的LCD屏的图片

 CS :   PF1                                                                       RS  :   PF2

RST:   PF3                                                                       MOSI: PL4

SCK:  PL5

 代码:

SPI.h

#ifndef _SPI_H_
#define _SPI_H_#include <driverlib.h>
#define u32 unsigned int
#define u16 unsigned short
#define u8 unsigned char#define	SPI_MOSI_SET  	MAP_GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_4,GPIO_PIN_4) 
#define	SPI_SCLK_SET  	MAP_GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_5,GPIO_PIN_5)  #define	SPI_MOSI_CLR  	MAP_GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_4,0)   
#define	SPI_SCLK_CLR  	MAP_GPIOPinWrite(GPIO_PORTL_BASE,GPIO_PIN_5,0)     void  SPIv_WriteData(u8 Data);#endif

SPI.c

#include "spi.h"void  SPIv_WriteData(u8 Data)
{unsigned char i=0;for(i=8;i>0;i--){if(Data&0x80)	SPI_MOSI_SET; else SPI_MOSI_CLR;SPI_SCLK_CLR;       SPI_SCLK_SET;Data<<=1; }
}

LCD.h

#include "lcd.h"u16 POINT_COLOR = 0x0000,BACK_COLOR = 0xFFFF;  
u16 DeviceCode;	 /****************************************************************************** @function   :Write an 8-bit command to the LCD screen
******************************************************************************/
void LCD_WR_REG(u8 data)
{ LCD_CS_CLR;     LCD_RS_CLR;	  SPIv_WriteData(data);LCD_CS_SET;	
}/****************************************************************************** @function   :Write an 8-bit data to the LCD screen
******************************************************************************/
void LCD_WR_DATA(u8 data)
{LCD_CS_CLR;LCD_RS_SET;SPIv_WriteData(data);LCD_CS_SET;
}/****************************************************************************** @function   :Write data into registers******************************************************************************/
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{	LCD_WR_REG(LCD_Reg);  LCD_WR_DATA(LCD_RegValue);	    		 
}	   /****************************************************************************** @function   :Write GRAM
******************************************************************************/	 
void LCD_WriteRAM_Prepare(void)
{LCD_WR_REG(lcddev.wramcmd);
}	 /****************************************************************************** @function   :Write an 16-bit command to the LCD screen
******************************************************************************/	 
void Lcd_WriteData_16Bit(u16 Data)
{	//18Bit	LCD_WR_DATA((Data>>8)&0xF8);//REDLCD_WR_DATA((Data>>3)&0xFC);//GREENLCD_WR_DATA(Data<<3);//BLUE
}/****************************************************************************** @function   :Write a pixel data at a specified location
******************************************************************************/	
void LCD_DrawPoint(u16 x,u16 y)
{LCD_SetCursor(x,y);Lcd_WriteData_16Bit(POINT_COLOR); 
}/****************************************************************************** @function   :Full screen filled LCD screen
******************************************************************************/	
void LCD_Clear(u16 Color)
{unsigned int i,m;  LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);   LCD_CS_CLR;LCD_RS_SET;for(i=0;i<lcddev.height;i++){for(m=0;m<lcddev.width;m++){	Lcd_WriteData_16Bit(Color);}}LCD_CS_SET;
} /****************************************************************************** @function   :Reset LCD screen
******************************************************************************/	
void LCD_RESET(void)
{LCD_RST_CLR;delay_ms(100);	LCD_RST_SET;delay_ms(50);
}/****************************************************************************** @function   :Initialization LCD screen
******************************************************************************/	 	 
void LCD_Init(void)
{  LCD_RESET(); LCD_WR_REG(0XF7);LCD_WR_DATA(0xA9);LCD_WR_DATA(0x51);LCD_WR_DATA(0x2C);LCD_WR_DATA(0x82);LCD_WR_REG(0xC0);LCD_WR_DATA(0x11);LCD_WR_DATA(0x09);LCD_WR_REG(0xC1);LCD_WR_DATA(0x41);LCD_WR_REG(0XC5);LCD_WR_DATA(0x00);LCD_WR_DATA(0x0A);LCD_WR_DATA(0x80);LCD_WR_REG(0xB1);LCD_WR_DATA(0xB0);LCD_WR_DATA(0x11);LCD_WR_REG(0xB4);LCD_WR_DATA(0x02);LCD_WR_REG(0xB6);LCD_WR_DATA(0x02);LCD_WR_DATA(0x42);LCD_WR_REG(0xB7);LCD_WR_DATA(0xc6);LCD_WR_REG(0xBE);LCD_WR_DATA(0x00);LCD_WR_DATA(0x04);LCD_WR_REG(0xE9);LCD_WR_DATA(0x00);LCD_WR_REG(0x36);LCD_WR_DATA((1<<3)|(0<<7)|(1<<6)|(1<<5));LCD_WR_REG(0x3A);LCD_WR_DATA(0x66);LCD_WR_REG(0xE0);LCD_WR_DATA(0x00);LCD_WR_DATA(0x07);LCD_WR_DATA(0x10);LCD_WR_DATA(0x09);LCD_WR_DATA(0x17);LCD_WR_DATA(0x0B);LCD_WR_DATA(0x41);LCD_WR_DATA(0x89);LCD_WR_DATA(0x4B);LCD_WR_DATA(0x0A);LCD_WR_DATA(0x0C);LCD_WR_DATA(0x0E);LCD_WR_DATA(0x18);LCD_WR_DATA(0x1B);LCD_WR_DATA(0x0F);LCD_WR_REG(0XE1);LCD_WR_DATA(0x00);LCD_WR_DATA(0x17);LCD_WR_DATA(0x1A);LCD_WR_DATA(0x04);LCD_WR_DATA(0x0E);LCD_WR_DATA(0x06);LCD_WR_DATA(0x2F);LCD_WR_DATA(0x45);LCD_WR_DATA(0x43);LCD_WR_DATA(0x02);LCD_WR_DATA(0x0A);LCD_WR_DATA(0x09);LCD_WR_DATA(0x32);LCD_WR_DATA(0x36);LCD_WR_DATA(0x0F);LCD_WR_REG(0x11);LCD_WR_REG(0x29);LCD_direction(USE_HORIZONTAL);LCD_Fill(0,0,lcddev.width,lcddev.height,WHITE);//LCD_Clear(WHITE);
}/****************************************************************************** @function   :Setting LCD display window
******************************************************************************/ 
void LCD_SetWindows(u16 xStar, u16 yStar,u16 xEnd,u16 yEnd)
{	LCD_WR_REG(lcddev.setxcmd);	LCD_WR_DATA(xStar>>8);LCD_WR_DATA(0x00FF&xStar);		LCD_WR_DATA(xEnd>>8);LCD_WR_DATA(0x00FF&xEnd);LCD_WR_REG(lcddev.setycmd);	LCD_WR_DATA(yStar>>8);LCD_WR_DATA(0x00FF&yStar);		LCD_WR_DATA(yEnd>>8);LCD_WR_DATA(0x00FF&yEnd);LCD_WriteRAM_Prepare();			
}   /****************************************************************************** @function   :Set coordinate value******************************************************************************/ 
void LCD_SetCursor(u16 Xpos, u16 Ypos)
{	  	    			LCD_SetWindows(Xpos,Ypos,Xpos,Ypos);	
} /****************************************************************************** @function   :Setting the display direction of LCD screen******************************************************************************/ 
void LCD_direction(u8 direction)
{ lcddev.setxcmd=0x2A;lcddev.setycmd=0x2B;lcddev.wramcmd=0x2C;switch(direction){		  case 0:						 	 		lcddev.width=LCD_W;lcddev.height=LCD_H;		LCD_WriteReg(0x36,(1<<3)|(0<<6)|(0<<7));//BGR==1,MY==0,MX==0,MV==0break;case 1:lcddev.width=LCD_H;lcddev.height=LCD_W;LCD_WriteReg(0x36,(1<<3)|(0<<7)|(1<<6)|(1<<5));//BGR==1,MY==1,MX==0,MV==1break;case 2:						 	 		lcddev.width=LCD_W;lcddev.height=LCD_H;	LCD_WriteReg(0x36,(1<<3)|(1<<6)|(1<<7));//BGR==1,MY==0,MX==0,MV==0break;case 3:lcddev.width=LCD_H;lcddev.height=LCD_W;LCD_WriteReg(0x36,(1<<3)|(1<<7)|(1<<5));//BGR==1,MY==1,MX==0,MV==1break;	default:break;}		
}	 

其余见(免费):

(48条消息) TFT-LCDSPI显示-硬件开发文档类资源-CSDN文库


http://chatgpt.dhexx.cn/article/UbrWnpw8.shtml

相关文章

MPC5744P-SPI

1.结构 5744的SPI模块支持全双工三线同步传输&#xff0c;可运行在主机或从机模式&#xff0c;分别含有深度为5的FIFO发送和接收缓存区。其结构如下图。SPI配置允许模块发送和接收串行数据&#xff0c;同时也支持带FIFO缓存区的的进行扩展队列操作的数据传输。模块接收和发送的…

SPI协议、MCP2515裸机驱动详解----主流SPI总线接口原理

最近看到一个介绍SPI接口原理的帖子&#xff0c;看完觉得甚好。特来分析给大家一起学习。 SPI概述 Serial Peripheral interface 通用串行外围设备接口 是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM&#xff0c;FLASH&#xff0c;实时时钟&#…

MP2451 使能脚电阻判断

MP2451使能脚(EN)内部接一个稳压管&#xff0c;防止EN所接电压过大。 EN输入的电压范围&#xff1a;从PDF文档中找到EN的开启电压和最高电压。 Enable up Threshold 1.4-1.7 因为计算时需要考虑其极端现象&#xff0c;所以开启电压的临界电压选择最高&#xff0c;1.7v。最高…

CSM3416SF兼容MP2451,MCP16301HT-E,LT1933ES6,AOZ1282CI

CSM3416SF是一颗高耐压DC-DC降压芯片&#xff0c;宽电压范围输入&#xff0c;完美兼容MP2451,MCP16301HT-E,LT1933ES6,AOZ1282CI&#xff0c;助力智能电表市场&#xff0c;赋能车库门驱动系统。

S32K144开发笔记5 - SPI驱动MCP2515

1、接线图 PTB13 — INT 接收数据中断引脚 PTB14 — CLK 时钟 PTB15 — MISO 接收 PTB16 — MOSI 发送 PTB17 — CSN 片选 2、软件SPI 2.1、GPIO口配置 鼠标放在如下位置右击选择Pin Functional Properities&#xff0c;进入引脚属性配置 PTB13引脚配置如下&#xff1a; PT…

nRF52笔记(26)QSPI接口液晶显示屏

1 平台条件 硬件&#xff1a;nrf52840 软件&#xff1a;sdk17.0 2 QSPI概述 QSPI 外设支持使用 SPI 与外部闪存设备进行通信 此处列出了 QSPI 外设的主要特性&#xff1a; • 单/双/四通道 SPI 输入/输出 • 2–32 MHz 可配置时钟频率 • 从/到外部闪存的单字读/写访问 • …

MPC5744-LINFlexD

目录 一、基本介绍1.功能2.时钟源3.外设控制器4.中断向量5.基地址 二、寄存器介绍1.LIN控制寄存器1 LINFlexD_LINCR12.LIN中断使能寄存器LINFlexD_LINIER3.LIN状态寄存器LINFlexD_LINSR4.LIN错误状态寄存器LINFlexD_LINESR5.UART控制寄存器LINFlexD_UARTCR6.UART状态寄存器LINF…

MP2456的芯片的学习

本章将讲述MP2456的特征、性能、参数、应用电路、以及使用时的注意事项。小白总结&#xff0c;如有错误&#xff0c;请大神指教。 目录 一、MP2456的特征 二、MP2456的性能和参数 四、MP2456使用时的注意事项 五、名词解释 一、MP2456的特征 &#xff08;1&#xff09;MP…

硬件电路-MP2451组成的电压反转/极性反转电路设计

板上要集成一个18V供电的模拟信号处理电路&#xff0c;包括线圈驱动、小信号拾取、滤波、二级放大等部分。因此&#xff0c;需要板上提供18V电源。正负电压需要分开控制&#xff0c;因为正电压需要兼作485传感器供电&#xff0c;此时关闭负电压部分节省耗电以及保护模拟端。 b…

MP2451的应用电路

电阻R32和电阻R23是怎么实现的电压&#xff0c;FB口的输出是0.8V。 正确的计算应该是&#xff1a; 0.8/10*(1027)这样就是输出的电压。 SS14是大电流二极管&#xff0c;可以用5819完全替代。还有续流二极管。 SS14是40V的耐压&#xff0c;SS12是20V的耐压。 8050可以替代BC8…

MP2451问题记录

数据手册 https://pan.baidu.com/s/1ggJs0y3 MP2451应用电路如下图 在我自己的应用电路中R1120K&#xff0c;R224k 问题一、 电源输出0.42V V(FB)手册中应等于0.8V&#xff0c;但在测试中发现该引脚电压仅为0.07V 0.07 * (12024) / 24 0.42V 判断是芯片损坏 问题二、FB引脚输…

MP2451的BUCK电路

5V的稳压模块经常会用得到&#xff0c;普通的AMS1117-5.0虽然电压输出非常稳定&#xff0c;但是只适合低压降&#xff0c;小电流的场合。笔者曾经用AMS1117-5.0把8.4V稳压到5V,电流160mA&#xff08;8.4V端&#xff09;&#xff0c;芯片一会儿就非常烫手了&#xff0c;即使并联…

MP2451使用注意事项

MP2451使用注意事项 MP2451是一个高速2M的高效的降压芯片&#xff0c;提供0.6A的电流输出&#xff0c;输入电压范围3.3V-36V可调&#xff0c;有关闭芯片引脚&#xff0c;关闭电流3uA&#xff0c;用起来还不错&#xff0c;分享一下经验&#xff0c;如下原理图已经制成了板子&am…

类间关系和内部类和数组

Final关键词 定义Pepole类&#xff0c;运用了final修饰方法eat()&#xff0c;该方法不能被改写&#xff0c;但可以随类进行继承。 用final修饰的类&#xff0c;不能有子类。 内部成员类定义方式 外部类.成员类 对象名 new 外部类&#xff08;&#xff09;.new 内部类。 局部…

UML六种关系图示(过目不忘版)

图中&#xff0c;从左到右分别是依赖、关联、聚合、组合、实现、继承六种关系在UML图中的画法&#xff0c;有箭头&#xff0c;有菱形&#xff0c;有三角&#xff0c;他们为什么这么画呢&#xff0c;之间有什么联系呢&#xff0c;这要从全局来看。 首先&#xff0c;依赖关联关系…

类图有哪些关系?

此刻是最佳时间&#xff0c;抓住当下&#xff01;最近在学习设计模式的时候&#xff0c;时常要用到类图及它们的关联&#xff0c;所以学习了UML类图及类图之间的关系&#xff0c;转载记录一下。 首先我们需要知道什么是类图。 类图&#xff08;ClassDiagram&#xff09;是UML图…

UML中的六种关系

UML关系 1、依赖关系 是一种使用关系&#xff0c;它是对象之间耦合度最弱的一种关联方式&#xff0c;是临时性的关联。 在代码中&#xff0c;某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类&#xff08;被依赖类&#xff09;中的某些方法来完成一…

UML的六大关系

关联关系 单向关联 双向关联 自关联 聚合关系 聚合关系是关联关系的一种&#xff0c;是强关联关系&#xff0c;是整体和部分之间的关系 聚合关系通过成员对象来实现的&#xff0c;其中成员对象是整体对象的一部分&#xff0c;但是成员对象可以脱离整体对象而独立存在。例如&…

部分和问题

题目来源 挑战程序设计竞赛&#xff08;第二版&#xff09; 语言 C/C 题目 部分和问题 描述 给定整数 a1, a2, ..., an&#xff0c;判断是否可以从中选出若干数&#xff0c;使它们的和恰好为 k。 样例1 输入&#xff1a; n 4 a {1, 2, 4, 7}; k 13 输出&#xff1a…

【UML】2.部分与整体的媒介:关系

UML模块中的任何事物都不是独立存在的&#xff0c;他们之间存在着一定的关系。下面就对这些关系&#xff0c;分类了解一下。 一&#xff0e;概念 【关联】Association 两个类存在某种语义上的联系&#xff0c;关联有单向关联和双向关联。 【聚合】Aggregation 类之间是整体…