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);
}
micropython stm32f429 tft_基于STM32F429的TFT0.96屏幕驱动相关推荐
- 物联网控制卡学习资料第465篇:基于STM32F429多路RS232 物联网控制卡
基于STM32F429多路RS232 物联网控制卡 一.板卡概述 板卡基于STM32F429核心板进行扩展,包括多路RS232,百兆网络,RS232 可以扩展多路 声避障模块.G ...
- [长文干货]MicroPython移植到野火STM32F429开发板
最近通过参考网上的文章,成功将MicroPython移植到野火STM32F429开发板上,给大家分享一下自己的移植过程,可以作为STM32系列移植MicroPY的参考. 1.移植前准备工作 实验环境: ...
- 基于STM32F429和HAL库的CAN收发例程(原子阿波罗F429的CAN)可以依据他参考移植STM32F413程序
基于STM32F429和HAL库的CAN收发例程 1.CAN协议介绍 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信 协议.在 ...
- 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)
简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...
- 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)
概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...
- 基于STM32的0.96寸OLED显示屏显示数据和滚动显示
文章目录 一.SPI 二.OLED显示屏显示数据 2.1 代码实现 2.2 结果展示 三.0.96寸OLED滚动显示数据 3.1 滚动方式 3.2 对显示文字进行取模 3.3 代码实现 3.4 结果展 ...
- 基于STM32F103C8T6的0.96寸OLED显示屏显示数据
一.了解SPI(串行外设接口) SPI全称是Serial Perripheral Interface,也就是串行外围设备接口.SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工 ...
- 关于基于stm32的0.96寸oled显示屏的学习理解心得。
关于基于stm32的0.96寸oled显示屏的学习理解心得. oled粗了解 如何理解OLED分辨率? 这里0.96寸OLED分辨率是12864;即OLED显示是128行64列; 但是由于OLED不能 ...
- 【MicroPython ESP32】1.8“tft ST7735带中文驱动显示示例
[MicroPython ESP32]1.8"tft ST7735带中文驱动显示示例 本实例基于Thonny平台开发 效果演示 驱动屏幕和开发板 驱动屏幕采用的是合宙1.8"tft ...
最新文章
- 只要5分钟用数据可视化带你看遍11月份新闻热点事件
- 解决java.lang.UnsupportedClassVersionError
- iOS 实现不定参数方法
- Linux C : Makefile 的编写和示例
- 减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现
- elementui vue的html随机点名器软件网页版源码1.1
- c语言 多文件 学生系统,编的学生成绩管理系统 从文件中读取保存数据总会多读入一组乱码数据...
- 高并发编程知识体系阅读总结
- 娓娓道来!那些BERT模型压缩方法(一)
- 微信公众号Web页面CSS文件里面的样式不加载
- matlab sa函数的傅里叶变换,通信第三章常见函数的傅里叶变换.ppt
- 仿Twitter源代码/社交网络源码/基于脉聊二开版本
- 【PPT技巧】让PPT背景音乐仅在播放视频时暂停
- 3.10Hello,C语言君
- 新技术表明通过观察灯泡振动可进行窃听,以后聊天得拉窗帘
- 如何修改Bash Shell的提示符的格式和配色
- LCD1602显示总结
- 免填邀请码解决方案,提高APP推广效率
- 会签是什么,何时使用会签,如何设计使用会签
- MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library
热门文章
- 蓝桥杯 青蛙跳杯子【第八届】【省赛】【C组】 BFS 广搜
- 要点初见:从旅行青蛙开始的OpenCV3模板匹配功能探索
- Android 2.2 (Froyo) 源码已经公布
- saber与matlab,MATLAB与SABER联合仿真(Co-sim)遇到的问题
- bootstrap 表单提交验证
- css3 nth child 偶数,转载:CSS3 :nth-child(n)方法
- ][互动大奖] Webby Awards 2012 第16届威比奖
- vulnhub靶场{GoldenEye-v1靶场实战}
- 【考研英语语法】五种基本句型
- ubuntu18.04 opencv 获取摄像头 (C++/python) 双目摄像头