micropython stm32f429 tft_基于STM32F429的TFT0.96屏幕驱动

#include "lcd.h"#include"stm32f4xx.h"

//默认为竖屏//_lcd_dev lcddev;//SPI_HandleTypedef hSPIx;//画笔颜色,背景颜色

uint16_t POINT_COLOR = 0x0000,BACK_COLOR = 0xFFFF;

_lcd_dev lcddev_2;

SPI_HandleTypedef hSPIx;void vSPI_LCD_Handle_Init(void)

{//引脚 Pin:

hSPIx.pSCK_Port= SPI_SCK_GPIO_Port; //SCK

hSPIx.uSCK_Pin =SPI_SCK_Pin;

hSPIx.pMOSI_Port= SPI_SDA_GPIO_Port; //MOSI

hSPIx.uMOSI_Pin =SPI_SDA_Pin;

}//STM32_模拟SPI写一个字节数据底层函数

voidSPIv_WriteData(uint8_t Data)

{

unsignedchar i=0;for ( i = 8; i > 0; i --)

{

LCD_SCL_CLR;if ( Data & 0x80)

{ LCD_SDA_SET; }//输出数据

else{

LCD_SDA_CLR;

}

LCD_SCL_SET;

Data<<= 1;

}

}//向液晶屏总线写入写8位数据

voidTFT_WR_DATA(uint8_t data)

{

LCD_CS_CLR;//软件控制片选信号

LCD_RS_SET;

SPIv_WriteData(data);

LCD_CS_SET;//软件控制片选信号

}//向液晶屏总线写入写16位指令

voidTFT_WR_REG(uint16_t data)

{

LCD_CS_CLR;//软件控制片选信号

LCD_RS_CLR;

SPIv_WriteData(data);

LCD_CS_SET;//软件控制片选信号

}//写寄存器数据

voidTFT_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue)

{

TFT_WR_REG(LCD_Reg);

TFT_WR_DATA(LCD_RegValue);

}//开始写GRAM 在给液晶屏传送RGB数据前,应该发送写GRAM指令

void TFT_WriteRAM_Prepare(void)

{

TFT_WR_REG(lcddev_2.wramcmd);

}void TFT_RESET(void) //液晶屏复位

{

LCD_RST_SET;

TFT_WR_REG(0x01);

HAL_Delay(50);

}//设置LCD参数//方便进行横竖屏模式切换

void TFT_SetParam(void)

{

lcddev_2.wramcmd=0x2C;

lcddev_2.dir=0;//竖屏

lcddev_2.width=200;

lcddev_2.height=200;

lcddev_2.setxcmd=0x2A;

lcddev_2.setycmd=0x2B;

TFT_WriteReg(0x36,0xC8);

}voidTFT_SetWindows(uint16_t xStar, uint16_t yStar,uint16_t xEnd,uint16_t yEnd)

{

TFT_WR_REG(lcddev_2.setxcmd);

TFT_WR_DATA(xStar>>8);

TFT_WR_DATA(0x00FF&xStar+2);

TFT_WR_DATA(xEnd>>8);

TFT_WR_DATA(0x00FF&xEnd+2);

TFT_WR_REG(lcddev_2.setycmd);

TFT_WR_DATA(yStar>>8);

TFT_WR_DATA(0x00FF&yStar+3);

TFT_WR_DATA(yEnd>>8);

TFT_WR_DATA(0x00FF&yEnd+3);

TFT_WriteRAM_Prepare();//开始写入GRAM

}//8位总线下如何写入一个16位数据

voidTFT_WR_DATA_16Bit(uint16_t data)

{

LCD_CS_CLR;

LCD_RS_SET;

SPIv_WriteData(data>>8);

SPIv_WriteData(data);

LCD_CS_SET;

}//LCD全屏填充清屏函数

voidTFT_Clear(uint16_t Color)

{

uint16_t i,j;

TFT_SetWindows(0, 0, lcddev_2.width-1, lcddev_2.height-1);for (i = 0; i < lcddev_2.width; i ++)

{for (j = 0; j < lcddev_2.height; j ++)

TFT_WR_DATA_16Bit(Color);//写入数据

}

}void TFT_Init(void)

{

TFT_RESET();//液晶屏复位//************* Start Initial Sequence **********//

//开始初始化液晶屏

TFT_WR_REG(0x11);//Sleep exit

HAL_Delay(120);//ST7735R Frame Rate

TFT_WR_REG(0xB1);

TFT_WR_DATA(0x01);

TFT_WR_DATA(0x2C);

TFT_WR_DATA(0x2D);

TFT_WR_REG(0xB2);

TFT_WR_DATA(0x01);

TFT_WR_DATA(0x2C);

TFT_WR_DATA(0x2D);

TFT_WR_REG(0xB3);

TFT_WR_DATA(0x01);

TFT_WR_DATA(0x2C);

TFT_WR_DATA(0x2D);

TFT_WR_DATA(0x01);

TFT_WR_DATA(0x2C);

TFT_WR_DATA(0x2D);

TFT_WR_REG(0xB4); //Column inversion

TFT_WR_DATA(0x07);//ST7735R Power Sequence

TFT_WR_REG(0xC0);

TFT_WR_DATA(0xA2);

TFT_WR_DATA(0x02);

TFT_WR_DATA(0x84);

TFT_WR_REG(0xC1);

TFT_WR_DATA(0xC5);

TFT_WR_REG(0xC2);

TFT_WR_DATA(0x0A);

TFT_WR_DATA(0x00);

TFT_WR_REG(0xC3);

TFT_WR_DATA(0x8A);

TFT_WR_DATA(0x2A);

TFT_WR_REG(0xC4);

TFT_WR_DATA(0x8A);

TFT_WR_DATA(0xEE);

TFT_WR_REG(0xC5); //VCOM

TFT_WR_DATA(0x0E);

TFT_WR_REG(0x36); //MX, MY, RGB mode

TFT_WR_DATA(0xC8);//ST7735R Gamma Sequence

TFT_WR_REG(0xe0);

TFT_WR_DATA(0x0f);

TFT_WR_DATA(0x1a);

TFT_WR_DATA(0x0f);

TFT_WR_DATA(0x18);

TFT_WR_DATA(0x2f);

TFT_WR_DATA(0x28);

TFT_WR_DATA(0x20);

TFT_WR_DATA(0x22);

TFT_WR_DATA(0x1f);

TFT_WR_DATA(0x1b);

TFT_WR_DATA(0x23);

TFT_WR_DATA(0x37);

TFT_WR_DATA(0x00);

TFT_WR_DATA(0x07);

TFT_WR_DATA(0x02);

TFT_WR_DATA(0x10);

TFT_WR_REG(0xe1);

TFT_WR_DATA(0x0f);

TFT_WR_DATA(0x1b);

TFT_WR_DATA(0x0f);

TFT_WR_DATA(0x17);

TFT_WR_DATA(0x33);

TFT_WR_DATA(0x2c);

TFT_WR_DATA(0x29);

TFT_WR_DATA(0x2e);

TFT_WR_DATA(0x30);

TFT_WR_DATA(0x30);

TFT_WR_DATA(0x39);

TFT_WR_DATA(0x3f);

TFT_WR_DATA(0x00);

TFT_WR_DATA(0x07);

TFT_WR_DATA(0x03);

TFT_WR_DATA(0x10);

TFT_WR_REG(0x2a);

TFT_WR_DATA(0x00);

TFT_WR_DATA(0x00);

TFT_WR_DATA(0x00);

TFT_WR_DATA(0x7f);

TFT_WR_REG(0x2b);

TFT_WR_DATA(0x00);

TFT_WR_DATA(0x00);

TFT_WR_DATA(0x00);

TFT_WR_DATA(0x9f);

TFT_WR_REG(0xF0); //Enable test command

TFT_WR_DATA(0x01);

TFT_WR_REG(0xF6); //Disable ram power save mode

TFT_WR_DATA(0x00);

TFT_WR_REG(0x3A); //65k mode

TFT_WR_DATA(0x05);

TFT_WR_REG(0x29);//Display on

TFT_SetParam();//设置LCD参数

LCD_LED_SET;//点亮背光//LCD_Clear(WHITE);

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值