电子商务网站的目的,提供网站建设优势,wordpress如何实现微信支付宝,安徽省工程造价信息网背景
最近入手了一块1.8寸的tft屏幕#xff0c;通过学习文档#xff0c;已经掌握了接线#xff0c;显示英文、数字、矩形区域、划线、画点等操作#xff0c; 但是想显示中文的时候操作比较复杂。
问题
1、arduino uno 驱动这款屏幕目前使的是自带的TFT.h 库操作…背景
最近入手了一块1.8寸的tft屏幕通过学习文档已经掌握了接线显示英文、数字、矩形区域、划线、画点等操作 但是想显示中文的时候操作比较复杂。
问题
1、arduino uno 驱动这款屏幕目前使的是自带的TFT.h 库操作比较简单不带中文百度很多内容都是espTFT库对于arduion uno 来说不太适用超内存了。
2、需要引入u8j2库操作复杂。
解决措施
tft屏幕可以实现再对应的坐标画点因此知道中文或者图案的内容再对应的像素点上画点就能实现想要的内容处理如下
1、PCtoLCD2002 完美版进行汉字取模 注意取模配置如上图所示红框所示一个汉字的像素是16*16液晶屏幕上的每个点可以按需求修改。
生成的字模数据如下 我 0x04, 0x40, 0x0E, 0x50, 0x78, 0x48, 0x08, 0x48, 0x08, 0x40, 0xFF, 0xFE, 0x08, 0x40, 0x08, 0x44, 0x0A, 0x44, 0x0C, 0x48, 0x18, 0x30, 0x68, 0x22, 0x08, 0x52, 0x08, 0x8A, 0x2B, 0x06, 0x10, 0x02
一个汉字一共是32个 16进制的数据数组取模逐行的话则两位16进制代表一行例如0x04,0x40 的二进制是 00000100,01000000是一个汉字的第一行。
第一行(16) 0x04,0x40
第一行(2) 00000100,01000000
第二行(16) 0x0E,0x50
第二行(2) 00001110,01010000 讲到这里原理就很明白了把转出来的2进制进行遍历遇到1时 就在屏幕上画点 TFTscreen.point(x, y);但是需要注意的时每处理2个16进制的数据液晶上就需要换行即Y轴坐标1横向扫描时每扫描一个X轴坐标1一个汉字最多加到16就要换行这就是核心逻辑 #include TFT.h/*Arduino TFT text exampleThis example demonstrates how to draw text on theTFT with an Arduino. The Arduino reads the valueof an analog sensor attached to pin A0, and writesthe value to the LCD screen, updating everyquarter second.This example code is in the public domainCreated 15 April 2013 by Scott Fitzgeraldhttp://www.arduino.cc/en/Tutorial/TFTDisplayText*/#include TFT.h // Arduino LCD library
#include SPI.h// pin definition for the Uno
#define cs 10
#define dc 9
#define rst 8// pin definition for the Leonardo
// #define cs 7
// #define dc 0
// #define rst 1// create an instance of the library
TFT TFTscreen TFT(cs, dc, rst);int xPos 80;
int yPos 64;// direction and speed
int xDir 1;
int yDir 1;// variables to keep track of the points location
int xPrev xPos;
int yPrev yPos;int counter 0;
// char array to print time
char printout[4];// 我
const byte wo[] {0x04, 0x40, 0x0E, 0x50, 0x78, 0x48, 0x08, 0x48, 0x08, 0x40, 0xFF, 0xFE, 0x08, 0x40, 0x08, 0x44, 0x0A, 0x44, 0x0C, 0x48, 0x18, 0x30, 0x68, 0x22, 0x08, 0x52, 0x08, 0x8A, 0x2B, 0x06, 0x10, 0x02
};const byte ai[] {0x00, 0x08, 0x01, 0xFC, 0x7E, 0x10, 0x22, 0x10, 0x11, 0x20, 0x7F, 0xFE, 0x42, 0x02, 0x82, 0x04,0x7F, 0xF8, 0x04, 0x00, 0x07, 0xF0, 0x0A, 0x10, 0x11, 0x20, 0x20, 0xC0, 0x43, 0x30, 0x1C, 0x0E
};const byte ni[] {0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x11, 0xFE, 0x11, 0x02, 0x32, 0x04, 0x34, 0x20, 0x50, 0x20,0x91, 0x28, 0x11, 0x24, 0x12, 0x24, 0x12, 0x22, 0x14, 0x22, 0x10, 0x20, 0x10, 0xA0, 0x10, 0x40
};
const byte zhong[] {0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0xF8, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08,0x21, 0x08, 0x21, 0x08, 0x3F, 0xF8, 0x21, 0x08, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
};const byte guo[] {0x00, 0x00, 0x7F, 0xFC, 0x40, 0x04, 0x40, 0x04, 0x5F, 0xF4, 0x41, 0x04, 0x41, 0x04, 0x4F, 0xE4,0x41, 0x04, 0x41, 0x44, 0x41, 0x24, 0x5F, 0xF4, 0x40, 0x04, 0x40, 0x04, 0x7F, 0xFC, 0x40, 0x04
};#define CHAR_WIDTH 16
#define CHAR_HEIGHT 16void setup() {// Put this line at the beginning of every sketch that uses the GLCD:TFTscreen.begin();// clear the screen with a black backgroundTFTscreen.background(0, 0, 0);// write the static text to the screen// set the font color to whiteTFTscreen.stroke(255, 255, 255);//TFTscreen.loadFont(str1);Serial.begin(9600);
}void loop() {// set the font colorTFTscreen.stroke(255, 255, 255);TFTscreen.setTextSize(1);// // write the text to the top left corner of the screen// TFTscreen.text(Hello 2025, 0, 0);// TFTscreen.text(Goodbye 2024 , 1, 20);// // delay(250);// TFTscreen.stroke(0, 128, 0);// TFTscreen.text(cxk, 20, 30);// // 画个线(x,y,end:x,end:y)// TFTscreen.stroke(255, 0, 0);// TFTscreen.line(0, 0, TFTscreen.width(), TFTscreen.height());// TFTscreen.line(0, TFTscreen.height(), TFTscreen.width(), 0);// 画一个正方形// TFTscreen.noStroke(); // dont draw a line around the next rectangle// // 长方形内部填充颜色// TFTscreen.fill(255,255,0); // set the fill color to green// // 长方形大小// TFTscreen.rect(0,20,TFTscreen.width(),10); //draw a rectangle across the screen// delay(1000);// TFTscreen.background(0,0,0); // clear the screen before starting again// delay(1000);// TFTscreen.stroke(255, 0, 0);//TFTscreen.point(-100, 25); // col// TFTscreen.point(100, 50); // col// TFTscreen.point(100, 75); // colSerial.println(***********************************************);displayChineseChar(wo, 0, 0);displayChineseChar(ai, 16, 16);displayChineseChar(ni, 32, 32);displayChineseChar(zhong, 48, 48);displayChineseChar(guo, 64, 64);delay(1000);// chiness();
}// x ,y 显示位置
void displayChineseChar(char *bitmap, int16_t x, int16_t y) {// int chatLen strlen(bitmap);// Serial.print(长度);// Serial.println(chatLen);// int chinessChatLen 16; // 一个汉字32位16进制int xiangsu_y 0; // y坐标for (int row 0; row 32; row) {// Serial.print(hexArray[);// Serial.print(row);// Serial.print(] 0x);// Serial.println(bitmap[row], HEX); // 使用HEX格式打印int i 0;int xiangsu_x 0;int dongtairow 0;if (row % 2 0) {dongtairow 0;xiangsu_y xiangsu_y 1;} else {dongtairow row % 2;}for (i 0; i 8; i) {bool bit (bitmap[row] (7 - i)) 0x01;if (bit 0) {xiangsu_x (dongtairow * 8) i;TFTscreen.stroke(255, 255, 255);TFTscreen.point(xiangsu_x x, xiangsu_y y);}}}
}// 画矩阵团图案
// void drew() {
// xPos xPos xDir;// yPos yPos yDir;// // check if the current location is different than the previous// if (xPos ! xPrev || yPos ! yPrev) {// TFTscreen.stroke(0, 128, 0); // set the stroke color to black// // 画一个点
// TFTscreen.point(xPrev, yPrev); // color in the previous point
// }// // draw a point in the current location// TFTscreen.stroke(255, 255, 255);// TFTscreen.point(xPos, yPos);// // if the x or x position is at the screen edges, reverse direction// if (xPos 160 || xPos 0) {// xDir xDir * -1;
// }// if (yPos 128 || yPos 0) {// yDir yDir * -1;
// }// // update the points previous location// xPrev xPos;// yPrev yPos;// // a 33ms delay means the screen updates 30 times a second// delay(33);
// }鸣谢
1、arduino uno 与tft屏幕配置链接 基于Arduino UNO的1.8寸TFT屏幕使用方法Arduino系列十八_arduino uno tft连线-CSDN博客
https://www.dragonlcm.com/1754.html 文章转载自: http://www.morning.pfggj.cn.gov.cn.pfggj.cn http://www.morning.rfmzs.cn.gov.cn.rfmzs.cn http://www.morning.qtyfb.cn.gov.cn.qtyfb.cn http://www.morning.nwclg.cn.gov.cn.nwclg.cn http://www.morning.qlckc.cn.gov.cn.qlckc.cn http://www.morning.glnfn.cn.gov.cn.glnfn.cn http://www.morning.zmzdx.cn.gov.cn.zmzdx.cn http://www.morning.tklqs.cn.gov.cn.tklqs.cn http://www.morning.bwttj.cn.gov.cn.bwttj.cn http://www.morning.qdlnw.cn.gov.cn.qdlnw.cn http://www.morning.grryh.cn.gov.cn.grryh.cn http://www.morning.hbywj.cn.gov.cn.hbywj.cn http://www.morning.rnlx.cn.gov.cn.rnlx.cn http://www.morning.lcqrf.cn.gov.cn.lcqrf.cn http://www.morning.leyuhh.com.gov.cn.leyuhh.com http://www.morning.tongweishi.cn.gov.cn.tongweishi.cn http://www.morning.nthyjf.com.gov.cn.nthyjf.com http://www.morning.zylrk.cn.gov.cn.zylrk.cn http://www.morning.xdjwh.cn.gov.cn.xdjwh.cn http://www.morning.xkppj.cn.gov.cn.xkppj.cn http://www.morning.hxlpm.cn.gov.cn.hxlpm.cn http://www.morning.pflpb.cn.gov.cn.pflpb.cn http://www.morning.nkjkh.cn.gov.cn.nkjkh.cn http://www.morning.bpmdx.cn.gov.cn.bpmdx.cn http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn http://www.morning.knryp.cn.gov.cn.knryp.cn http://www.morning.qmzwl.cn.gov.cn.qmzwl.cn http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.jyzqn.cn.gov.cn.jyzqn.cn http://www.morning.tknqr.cn.gov.cn.tknqr.cn http://www.morning.lwlnw.cn.gov.cn.lwlnw.cn http://www.morning.ddrdt.cn.gov.cn.ddrdt.cn http://www.morning.srky.cn.gov.cn.srky.cn http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn http://www.morning.zlkps.cn.gov.cn.zlkps.cn http://www.morning.srmdr.cn.gov.cn.srmdr.cn http://www.morning.pzrrq.cn.gov.cn.pzrrq.cn http://www.morning.ccdyc.cn.gov.cn.ccdyc.cn http://www.morning.krzrg.cn.gov.cn.krzrg.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.nydgg.cn.gov.cn.nydgg.cn http://www.morning.thwhn.cn.gov.cn.thwhn.cn http://www.morning.gmmyn.cn.gov.cn.gmmyn.cn http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn http://www.morning.kongpie.com.gov.cn.kongpie.com http://www.morning.mlwpr.cn.gov.cn.mlwpr.cn http://www.morning.nrddx.com.gov.cn.nrddx.com http://www.morning.lmrjn.cn.gov.cn.lmrjn.cn http://www.morning.plkrl.cn.gov.cn.plkrl.cn http://www.morning.nkpml.cn.gov.cn.nkpml.cn http://www.morning.cwfkm.cn.gov.cn.cwfkm.cn http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn http://www.morning.xdmsq.cn.gov.cn.xdmsq.cn http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn http://www.morning.spwm.cn.gov.cn.spwm.cn http://www.morning.tkryt.cn.gov.cn.tkryt.cn http://www.morning.tmrjb.cn.gov.cn.tmrjb.cn http://www.morning.fqsxf.cn.gov.cn.fqsxf.cn http://www.morning.lpqgq.cn.gov.cn.lpqgq.cn http://www.morning.tfznk.cn.gov.cn.tfznk.cn http://www.morning.rwyw.cn.gov.cn.rwyw.cn http://www.morning.msxhb.cn.gov.cn.msxhb.cn http://www.morning.c7513.cn.gov.cn.c7513.cn http://www.morning.kdldx.cn.gov.cn.kdldx.cn http://www.morning.klpwl.cn.gov.cn.klpwl.cn http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn http://www.morning.fkyqm.cn.gov.cn.fkyqm.cn http://www.morning.zwtp.cn.gov.cn.zwtp.cn http://www.morning.gbxxh.cn.gov.cn.gbxxh.cn http://www.morning.addai.cn.gov.cn.addai.cn http://www.morning.pmwhj.cn.gov.cn.pmwhj.cn http://www.morning.xcjbk.cn.gov.cn.xcjbk.cn http://www.morning.lkkkf.cn.gov.cn.lkkkf.cn http://www.morning.lltdf.cn.gov.cn.lltdf.cn http://www.morning.fblkr.cn.gov.cn.fblkr.cn http://www.morning.qnxtz.cn.gov.cn.qnxtz.cn http://www.morning.pgxjl.cn.gov.cn.pgxjl.cn http://www.morning.gfqjf.cn.gov.cn.gfqjf.cn http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com http://www.morning.ntqgz.cn.gov.cn.ntqgz.cn