ArduinoTFTLCD应用
ArduinoTFTLCD应用
- ArduinoTFTLCD应用
- 硬件连接
- 软件
- 导入库
- 显示数字、字符
- 显示汉字
- 方案1
- 方案2
- 显示图片
- 总结
ArduinoTFTLCD应用
对于手工喜欢DIY的人来说,Arduino驱动的TFTLCD被很多人使用,此处就总结一下,使用的是VScode的PlatformIO插件驱动的Arduino,芯片使用的是ESP32。
硬件连接
这里采用的是10PIN的ST7789驱动的TFTLCD屏幕,是硬件SPI驱动的。
TFTLCD硬件管脚

ESP32硬件管脚

我们连接的是ESP32的HSPI引脚。
| 功能 | TFTLCD引脚 | ESP32引脚 |
|---|---|---|
| 数据输出 | MOSI | 13 |
| 时钟 | SCLK | 14 |
| 片选 | CS | 15 |
| 选择端口 | DC | 2 |
| 复位引脚 | RST | 4 |
| 背光正 | BL | 12 |
| 电源地 | GND | GND |
| 背光负 | GND | GND |
| 电压正 | VCC | VCC |
有些SPI是这样标注的,引脚都是一样的。
| 字符1 | 字符2 | 功能 |
|---|---|---|
| CS | CS | 片选,低电平使能 |
| DC | RS | 数据/命令选择端口,DC端口为低时,写入的是命令;为高时,写入的是数据 |
| RST | RESET | 复位信号,低电平复位 |
| MISO | SDA | 从设备数据输出 |
| MOSI | SDI | 主设备数据输出 |
| SCLK | SCL | 时钟,由主设备发出 |
按照如图所示进行硬件连接。
软件
使用的是VScode的PlatformIO插件驱动的Arduino,芯片使用的是ESP32。
导入库
安装TFT_eSPI库:TFT_eSPI 是一个用于 ESP32 和 ESP8266 上的基于图形显示控制器的开源软件库。它提供了一种简单且高效的方式来与 TFT LCD 显示器进行交互并创建令人惊叹的图形界面。
在左侧文件目录中\.pio\libdeps\esp32dev\TFT_eSPI\User_Setup.h文件中。
驱动要选择
// Only define one driver, the other ones must be commented out
//#define ILI9341_DRIVER // Generic driver for common displays
//#define ILI9341_2_DRIVER // Alternative ILI9341 driver, see https://github.com/Bodmer/TFT_eSPI/issues/1172
//#define ST7735_DRIVER // Define additional parameters below for this display
//#define ILI9163_DRIVER // Define additional parameters below for this display
//#define S6D02A1_DRIVER
//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
//#define HX8357D_DRIVER
//#define ILI9481_DRIVER
//#define ILI9486_DRIVER
//#define ILI9488_DRIVER // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)
#define ST7789_DRIVER // Full configuration option, define additional parameters below for this display
//#define ST7789_2_DRIVER // Minimal configuration option, define additional parameters below for this display
//#define R61581_DRIVER
//#define RM68140_DRIVER
//#define ST7796_DRIVER
//#define SSD1351_DRIVER
//#define SSD1963_480_DRIVER
//#define SSD1963_800_DRIVER
//#define SSD1963_800ALT_DRIVER
//#define ILI9225_DRIVER
//#define GC9A01_DRIVER
屏幕尺寸
// For ST7789, ST7735, ILI9163 and GC9A01 ONLY, define the pixel width and height in portrait orientation
// #define TFT_WIDTH 80
// #define TFT_WIDTH 128
// #define TFT_WIDTH 172 // ST7789 172 x 320
// #define TFT_WIDTH 170 // ST7789 170 x 320
#define TFT_WIDTH 240 // ST7789 240 x 240 and 240 x 320
// #define TFT_HEIGHT 160
// #define TFT_HEIGHT 128
// #define TFT_HEIGHT 240 // ST7789 240 x 240
#define TFT_HEIGHT 320 // ST7789 240 x 320
// #define TFT_HEIGHT 240 // GC9A01 240 x 240
IO口
// For ESP32 Dev board (only tested with GC9A01 display)
// The hardware SPI can be mapped to any pins
#define TFT_MOSI 13 // In some display driver board, it might be written as "SDA" and so on.
#define TFT_SCLK 14
#define TFT_CS 15 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
#define TFT_RST 4 // Reset pin (could connect to Arduino RESET pin)
#define TFT_BL 12 // LED back-light
其他不做修改。
在main.app文件中。导入头文件在这里插入代码片。#include <TFT_eSPI.h>
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI(); // 创建TFT对象
void setup()
{Serial.begin(115200);tft.init(); // 初始化// tft.fillScreen(TFT_BLACK); // 设置屏幕背景颜色// analogWrite(BLK, 150); // 调节屏幕亮度,0最亮,255最暗
}
void loop() {}
显示数字、字符
tft.setTextColor(TFT_WHITE, TFT_BLACK); // 参数1:字体颜色,参数2:背景色tft.setTextFont(2); // 字体大小16*16
tft.println("Hello,world");
tft.drawString("I want to eat something", 0, 50, 2);tft.setTextFont(4); // 字体大小26*26
tft.drawNumber(1234, 0, 70);
tft.drawFloat(3.14159, 5, 0, 90);
显示汉字
方案1
利用OLED显示汉字方法,去驱动TFTLCD显示汉字。利用
PCtoLCD2002.exe进行取模,然后导入文件中,利用点阵进行显示。如图所示取模方式。
新建文件Chinese_32.h并导入数组。
/***************************16*16的点阵字体取模方式:共阴——列行式——逆向输出*********/
unsigned char character[] = "第二一三四五";
uint8_t F16x16[] ={0x08, 0x04, 0x93, 0x92, 0x96, 0x9A, 0x92, 0xFA, 0x94, 0x93, 0x92, 0x96, 0xFA, 0x02, 0x02, 0x00,0x40, 0x40, 0x47, 0x24, 0x24, 0x14, 0x0C, 0xFF, 0x04, 0x04, 0x24, 0x44, 0x24, 0x1C, 0x00, 0x00, // 第",0/* (16 X 16 , 宋体 )*/0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, // 二",2/* (16 X 16 , 宋体 )*/0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 一",1/* (16 X 16 , 宋体 )*/0x00, 0x04, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x04, 0x00, 0x00,0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // 三",3/* (16 X 16 , 宋体 )*/0x00, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0x04, 0x04, 0x04, 0xFC, 0x00, 0x00,0x00, 0x7F, 0x28, 0x24, 0x23, 0x20, 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x22, 0x7F, 0x00, 0x00, // 四",4/* (16 X 16 , 宋体 )*/0x00, 0x02, 0x42, 0x42, 0x42, 0xC2, 0x7E, 0x42, 0x42, 0x42, 0x42, 0xC2, 0x02, 0x02, 0x00, 0x00,0x40, 0x40, 0x40, 0x40, 0x78, 0x47, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x40, 0x40, 0x40, 0x00, // 五",5/* (16 X 16 , 宋体 )*/
};
在main.app函数
#include <TFT_eSPI.h>
#include "Chinese_32.h"TFT_eSPI tft = TFT_eSPI(); // 创建TFT对象
#include <TJpg_Decoder.h>#define BLK 5 // 亮度控制引脚//--------------------------------------------------------------
// Prototype : void OLED_ShowCN(unsigned char x, unsigned char y, unsigned char N)
// Calls :
// Parameters : x,y -- 起始点坐标(x:0~127, y:0~7); N:汉字在codetab.h中的索引
// Description : 显示codetab.h中的汉字,16*16点阵
//--------------------------------------------------------------// 显示汉字
void OLED_ShowCN(uint8_t x, uint8_t y, uint8_t no)
{uint8_t t, j;uint16_t k;for (t = 0; t < 16; t++){k = F16x16[no * 32 + t];for (j = 0; j < 8; j++){if ((k >> j) & 0x01)tft.drawPixel(x + t, y + j, TFT_WHITE);}}for (t = 0; t < 16; t++){k = F16x16[no * 32 + 16 + t];for (j = 0; j < 8; j++){if ((k >> j) & 0x01)tft.drawPixel(x + t, y + j + 8, TFT_WHITE);}}
}uint8_t OLED_findoneCN(uint8_t ch1, uint8_t ch2, uint8_t ch3)
{uint8_t j = 0;while (character[j] != '\0'){if (ch1 == character[j] && ch2 == character[j + 1] && ch3 == character[j + 2])return j / 3 + 1;j += 3;}return 0;
}void OLED_Show(unsigned char x, unsigned char y, char ch[])
{int j = 0, k;while (ch[j] != '\0'){Serial.println(ch[j]);if (ch[j] > 0x80) // 汉字{k = OLED_findoneCN(ch[j], ch[j + 1], ch[j + 2]);if (k != 0)OLED_ShowCN((j / 3 * 2) * 8 + x, y, k - 1);j += 3;}else // ASCLL{tft.drawString((String)ch[j], (j / 3 * 2) * 8 + x, y, 2);j++;}}
}void TFT_Init()
{tft.init(); // 初始化// tft.fillScreen(TFT_BLACK); // 设置屏幕背景颜色// analogWrite(BLK, 150); // 调节屏幕亮度,0最亮,255最暗
}void TFT_Display()
{tft.setTextColor(TFT_WHITE, TFT_BLACK); // 参数1:字体颜色,参数2:背景色tft.setTextFont(2); // 字体大小16*16tft.println("Hello,world");tft.drawString("I want to eat something", 0, 50, 2);tft.setTextFont(4); // 字体大小26*26tft.drawNumber(1234, 0, 70);tft.drawFloat(3.14159, 5, 0, 90);tft.setTextColor(TFT_WHITE, TFT_BLACK); // 参数1:字体颜色,参数2:背景色OLED_Show(0, 120, (char*)"第二一三四五");
}void setup()
{Serial.begin(115200);TFT_Init();TFT_Display();
}void loop() {}
如图所示结果。

方案2
导入字库。
目录\.pio\libdeps\esp32dev\TFT_eSPI\Tools\Create_Smooth_Font文件下有三个文件。
其中Create_font.pde:代码,通过该代码来制作字库文件。
FontFiles : 存放我们制作出来的字库文件,制作出来后是vlw结尾的。
data : 存放我们的字体文件,用ttf结尾的。- 去https://processing.org/ 下载
processing软件(资料中都放有)。 - 去自己的电脑中C:\Windows\Font文件中找到你想要的字体,放到data文件夹下。
- 在https://www.osgeo.cn/app/sa906网站中,将需要转化的汉字转成unicode编码,然后将
\u转化成0x。 - 使用processing打开Create_font.pde文件。
- 修改以下内容:将需要转化的的汉字的
unicode编码放到specificUnicodes数组中。String fontName = "simkai"; // 你的字库的文件名字。 在130行 String fontType = ".ttf"; //String fontType = ".otf";// Define the font size in points for the TFT_eSPI font file int fontSize = 20; // Font size to use in the Processing sketch display window that pops up (can be different to above) int displayFontSize = 20; static final int[] unicodeBlocks = {//0x0030, 0x0039, //Example custom range (numbers 0-9)//0x0041, 0x005A, //Example custom range (Upper case A-Z)//0x0061, 0x007A, //Example custom range (Lower case a-z) }; static final int[] specificUnicodes = { 0x56e0,0x6709,0x7740,0x4f60,0x8ddf,0x5728,0x4e00,0x8d77,0x6211,0x7231,0x683e,0x8c46,0x5f20,0x5b66,0x806a }; - 点击运行,正确的话会弹出一个对话框,然后会在
FontFiles文件夹中生成一个.h的字库。 - 将生成的字库文件放入
src文件夹中。 - 然后在主函数中:
#include "KT_20_A.h" //导入字库。 tft.loadFont(KT_20_A); //指定tft屏幕对象载入font_12字库,KT_20_A为生成字库的数组名字。 tft.drawString("武汉",0,0) //在坐标0,0位置处写武汉2个字,就可以在tft显示出来了。 tft.unloadFont(); //释放字库文件,节省资源。
显示图片
- 用
Image2Lcd打开一张BMP或者JPG格式的图片。 - 设置成如图所示,点击保存,注意输出图像位置的数字
(238,320)。

- 程序中加入:
#include <TFT_eSPI.h> #include "Chinese_32.h" #include "BMP1.h"TFT_eSPI tft = TFT_eSPI(); // 创建TFT对象 #include <TJpg_Decoder.h>void TFT_Display() {tft.pushImage(0, 0, 238, 320, (uint16_t*)gImage_demo_image1); }void setup() {tft.init(); // 初始化// tft.fillScreen(TFT_BLACK); // 设置屏幕背景颜色// analogWrite(BLK, 150); // 调节屏幕亮度,0最亮,255最暗tft.fillScreen(TFT_BLACK);TFT_Display(); } void loop() {} - 如图所示的效果。

总结
以上所有资料和应用我都放在文件中了。
资料地址:https://download.csdn.net/download/weixin_42320020/88901719
禁止转载!
相关文章:
ArduinoTFTLCD应用
ArduinoTFTLCD应用 ArduinoTFTLCD应用硬件连接软件导入库显示数字、字符显示汉字方案1方案2 显示图片 总结 ArduinoTFTLCD应用 对于手工喜欢DIY的人来说,Arduino驱动的TFTLCD被很多人使用,此处就总结一下,使用的是VScode的PlatformIO插件驱动…...
《秦时明月》IP新高度:与陕西历史博物馆共同书写文化传承新篇章!
在IP产业风起云涌的今天,如何以创意和匠心为传统文化注入新的活力,成为了摆在每一位文化工作者面前的重要课题。近日,《秦时明月》作为一部深受观众喜爱的国产动画IP,在迎来其十七周年之际,联手陕西历史博物馆…...
2、事件机制、DOM操作、jquery对尺寸操作、jquery添加和删除
一、事件机制 1、事件源.事件类型(事件处理程序) $(this)中的this不能加引号 $(#box).click(function () {$(this).css(background-color,blue)//点击颜色变为蓝色 })2、事件源.on/bind(事件类型,事件处理程序) $("#box").on(dbclick,function () {$(…...
YOLOv6-Openvino和ONNXRuntime推理【CPU】
1 环境: CPU:i5-12500 Python:3.8.18 2 安装Openvino和ONNXRuntime 2.1 Openvino简介 Openvino是由Intel开发的专门用于优化和部署人工智能推理的半开源的工具包,主要用于对深度推理做优化。 Openvino内部集成了Opencv、Tens…...
C语言:结构体(自定义类型)知识点(包括结构体内存对齐的热门知识点)
和黛玉学编程呀,大家一起努力呀............. 结构体类型的声明 回顾一下 struct tag { member-list; }variable-list; 创建和初始化 我们知道,在C语言中,对于一些数据是必须初始化的,但是结构体怎么创建并且初始化呢࿱…...
springboot240基于Spring boot的名城小区物业管理系统
基于Spring boot的名城小区物业管理系统的设计与实现 摘要 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于物业信息的管理和控制,采用人工登记的方式保存相关数…...
Day13:信息打点-JS架构框架识别泄漏提取API接口枚举FUZZ爬虫插件项目
目录 JS前端架构-识别&分析 JS前端架构-开发框架分析 前端架构-半自动Burp分析 前端架构-自动化项目分析 思维导图 章节知识点 Web:语言/CMS/中间件/数据库/系统/WAF等 系统:操作系统/端口服务/网络环境/防火墙等 应用:APP对象/API接…...
AJAX 学习笔记(Day1)
「写在前面」 本文为黑马程序员 AJAX 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。 目录 0 课程介绍 1 AJAX 入门 1.1 AJAX 概念和 axios 使用 1.2 认识 URL 1.3 URL 查询参数 1.4 常用请求方法和数据提交 1.5 HT…...
leetcode 740.删除并活得点数
这道题和打家劫舍得思路很像。 思路:首先我们看到题目的意思,就是说我们如果选择了一个数,那么它相邻的数就会不得选入,也就是删除。这就是上一个题那个相邻的家不能偷的问题呗! 我们从那个地方转换一下,…...
寻找峰值[中等]
优质博文IT-BLOG-CN 一、题目 峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设nums[-1] nums[n] -∞。 你…...
【ESP32 IDF】key按键与EXTI中断
文章目录 前言一、按键的使用1.1 按键的简介1.2 读取按键的高低电平1.3 读取按键具体代码 二、中断二、EXIT外部中断2.1 EXIT外部中断简介2.2 外部中断基础知识2.3 设置外部中断注册外部中断服务函数设置触发方式添加中断函数 2.4 示例代码 总结 前言 在嵌入式系统开发中&…...
Find My运动相机|苹果Find My技术与相机结合,智能防丢,全球定位
运动相机设计用于在各种运动和极限环境中使用,如徒步、登山、攀岩、骑行、滑翔、滑雪、游泳和潜水等,它们通常具有防抖防震、深度防水和高清画质的特点,能够适应颠簸剧烈的环境,甚至可以承受一定程度的摔落,一些运动相…...
零拷贝技术深入分析
一、零拷贝 在前面的文章“深浅拷贝、COW及零拷贝”中对零拷贝进行过分析,但没有举例子,也没有深入进行展开分析。本文将结合实际的例程对零拷贝进行更深入的分析和说明。 在传统的IO操作中,以文件通过网络传输为例 ,一般会经历以…...
Android 基础入门 基础简介
1. 观察App运行日志 2.Android 开发设计的编程语言 koltin Java c c 3.工程目录结构 4.Gradle 5.build.gradle 文件解析 plugins {id("com.android.application")//用了哪些插件 主配置文件版本控制 所以这里不用写版本 }android {namespace "com.tiger.myap…...
HUAWEI 华为交换机 配置基于VLAN的MAC地址学习限制接入用户数量 配置示例
组网需求 如 图 2-15 所示,用户网络 1 通过 LSW1 与 Switch 相连, Switch 的接口为 GE0/0/1 。用户网络2通过 LSW2 与 Switch 相连, Switch 的接口为 GE0/0/2 。 GE0/0/1 、 GE0/0/2 同属于 VLAN2。为控制接入用户数,对 VLAN2 进…...
编程笔记 Golang基础 042 文件处理
编程笔记 Golang基础 042 文件处理 一、文件处理二、Go语言文件处理创建文件和写入内容打开文件并按模式读写读取文件内容更高级的文件和IO操作改变文件权限目录操作 小结 一、文件处理 文件处理是指在计算机科学中,对存储在磁盘或其他持久性存储介质上的文件进行的…...
linuxlsof详解
lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息,我们都知道,在Linux中,一切皆文件,lsof命令可以查看所有已经打开了的文件,比如: 普通文件,目录,特殊的块文件,…...
学习JAVA的第十二天(基础)
目录 算法 查找算法 基本查找(顺序查找) 二分查找(折半查找) 分块查找 排序算法 冒泡排序 选择排序 插入排序 快速排序 递归算法 算法 算法(Algorithm)是指解题方案的准确而完整的描述ÿ…...
Vector集合源码分析
Vector集合源码分析 文章目录 Vector集合源码分析一、字段分析二、方法分析三、总结 内容如有错误或者其他需要注意的知识点,欢迎指正或者探讨补充,共同进步。 一、字段分析 //用于存储该集合中的所有数据对象,所以是基于数组实现的 protec…...
Unity引擎中光源都有哪几种,都有什么作用
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com Unity 引擎为了实现游戏场景的明暗和光影效果,提供了四种类型的光源,分别是方向光(Directional Lights)、点光源(Point Lights)、聚光灯…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

