#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);

}

micropython stm32f429 tft_基于STM32F429的TFT0.96屏幕驱动相关推荐

  1. 物联网控制卡学习资料第465篇:基于STM32F429多路RS232 物联网控制卡

    基于STM32F429多路RS232 物联网控制卡 一.板卡概述            板卡基于STM32F429核心板进行扩展,包括多路RS232,百兆网络,RS232 可以扩展多路 声避障模块.G ...

  2. [长文干货]MicroPython移植到野火STM32F429开发板

    最近通过参考网上的文章,成功将MicroPython移植到野火STM32F429开发板上,给大家分享一下自己的移植过程,可以作为STM32系列移植MicroPY的参考. 1.移植前准备工作 实验环境: ...

  3. 基于STM32F429和HAL库的CAN收发例程(原子阿波罗F429的CAN)可以依据他参考移植STM32F413程序

    基于STM32F429和HAL库的CAN收发例程 1.CAN协议介绍 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信 协议.在 ...

  4. 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)

    简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...

  5. 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)

    概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...

  6. 基于STM32的0.96寸OLED显示屏显示数据和滚动显示

    文章目录 一.SPI 二.OLED显示屏显示数据 2.1 代码实现 2.2 结果展示 三.0.96寸OLED滚动显示数据 3.1 滚动方式 3.2 对显示文字进行取模 3.3 代码实现 3.4 结果展 ...

  7. 基于STM32F103C8T6的0.96寸OLED显示屏显示数据

    一.了解SPI(串行外设接口) SPI全称是Serial Perripheral Interface,也就是串行外围设备接口.SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工 ...

  8. 关于基于stm32的0.96寸oled显示屏的学习理解心得。

    关于基于stm32的0.96寸oled显示屏的学习理解心得. oled粗了解 如何理解OLED分辨率? 这里0.96寸OLED分辨率是12864;即OLED显示是128行64列; 但是由于OLED不能 ...

  9. 【MicroPython ESP32】1.8“tft ST7735带中文驱动显示示例

    [MicroPython ESP32]1.8"tft ST7735带中文驱动显示示例 本实例基于Thonny平台开发 效果演示 驱动屏幕和开发板 驱动屏幕采用的是合宙1.8"tft ...

最新文章

  1. 只要5分钟用数据可视化带你看遍11月份新闻热点事件
  2. 解决java.lang.UnsupportedClassVersionError
  3. iOS 实现不定参数方法
  4. Linux C : Makefile 的编写和示例
  5. 减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现
  6. elementui vue的html随机点名器软件网页版源码1.1
  7. c语言 多文件 学生系统,编的学生成绩管理系统 从文件中读取保存数据总会多读入一组乱码数据...
  8. 高并发编程知识体系阅读总结
  9. 娓娓道来!那些BERT模型压缩方法(一)
  10. 微信公众号Web页面CSS文件里面的样式不加载
  11. matlab sa函数的傅里叶变换,通信第三章常见函数的傅里叶变换.ppt
  12. 仿Twitter源代码/社交网络源码/基于脉聊二开版本
  13. 【PPT技巧】让PPT背景音乐仅在播放视频时暂停
  14. 3.10Hello,C语言君
  15. 新技术表明通过观察灯泡振动可进行窃听,以后聊天得拉窗帘
  16. 如何修改Bash Shell的提示符的格式和配色
  17. LCD1602显示总结
  18. 免填邀请码解决方案,提高APP推广效率
  19. 会签是什么,何时使用会签,如何设计使用会签
  20. MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library

热门文章

  1. 蓝桥杯 青蛙跳杯子【第八届】【省赛】【C组】 BFS 广搜
  2. 要点初见:从旅行青蛙开始的OpenCV3模板匹配功能探索
  3. Android 2.2 (Froyo) 源码已经公布
  4. saber与matlab,MATLAB与SABER联合仿真(Co-sim)遇到的问题
  5. bootstrap 表单提交验证
  6. css3 nth child 偶数,转载:CSS3 :nth-child(n)方法
  7. ][互动大奖] Webby Awards 2012 第16届威比奖
  8. vulnhub靶场{GoldenEye-v1靶场实战}
  9. 【考研英语语法】五种基本句型
  10. ubuntu18.04 opencv 获取摄像头 (C++/python) 双目摄像头