【雕爷学编程】Arduino动手做(153)---2.4寸TFT液晶触摸屏模块4

news2024/9/20 16:33:53

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 可直插UNO R3 Mega2560开发板

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 可直插UNO R3 Mega2560开发板

项目之六:逐行显示不同字号的英文字符串

实验开源代码:

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

 项目之六:逐行显示不同字号的英文字符串

 模块直插,引脚用法如下:

 LCD_CS LCD_CD LCD_WR LCD_RD LCD_RST SD_SS SD_DI SD_DO SD_SCK

 Arduino Uno A3 A2 A1 A0 A4 10 11 12 13

 LCD_D0 LCD_D1 LCD_D2 LCD_D3 LCD_D4 LCD_D5 LCD_D6 LCD_D7

 Arduino Uno 8 9 2 3 4 5 6 7

*/



#include <LCDWIKI_GUI.h> //导入核心图形库

#include <LCDWIKI_KBV.h> //导入特定硬件库

//如果 IC 模型已知或模块不可读,则可以使用此构造函数

LCDWIKI_KBV mylcd(ILI9341, A3, A2, A1, A0, A4); //模型、CS、CD、WR、RD、重置

//如果 IC 模型未知且模块可读,则可以使用此构造函数

//LCDWIKI_KBV my_lcd(240,320,A3,A2,A1,A0,A4);//屏幕宽度、高度、cs、cd、wr、rd、重置

//定义一些颜色值

#define BLACK  0x0000

#define BLUE  0x001F

#define RED   0xF800

#define GREEN  0x07E0

#define CYAN  0x07FF

#define MAGENTA 0xF81F

#define YELLOW 0xFFE0

#define WHITE  0xFFFF

void setup()

{

 Serial.begin(9600);

 mylcd.Init_LCD();

 Serial.println(mylcd.Read_ID(), HEX);

 mylcd.Fill_Screen(BLACK);

}

void loop()

{

 mylcd.Set_Text_Mode(0);

 //显示 1 次字符串

 mylcd.Fill_Screen(0x0000);

 mylcd.Set_Text_colour(RED);

 mylcd.Set_Text_Back_colour(BLACK);

 mylcd.Set_Text_Size(1);

 mylcd.Print_String("Hello World!", 0, 0);

 mylcd.Print_Number_Float(01234.56789, 2, 0, 8, '.', 0, ' ');

 mylcd.Print_Number_Int(0xDEADBEF, 0, 16, 0, ' ', 16);

 //mylcd.Print_String("DEADBEF", 0, 16);

 delay(166);

 //显示 2 次字符串

 mylcd.Set_Text_colour(GREEN);

 mylcd.Set_Text_Size(2);

 mylcd.Print_String("Hello World!", 0, 40);

 mylcd.Print_Number_Float(01234.56789, 2, 0, 56, '.', 0, ' ');

 mylcd.Print_Number_Int(0xDEADBEF, 0, 72, 0, ' ', 16);

 //mylcd.Print_String("DEADBEEF", 0, 72);

 delay(166);

 //显示 3 次字符串

 mylcd.Set_Text_colour(BLUE);

 mylcd.Set_Text_Size(3);

 mylcd.Print_String("Hello World!", 0, 104);

 mylcd.Print_Number_Float(01234.56789, 2, 0, 128, '.', 0, ' ');

 mylcd.Print_Number_Int(0xDEADBEF, 0, 152, 0, ' ', 16);

 // mylcd.Print_String("DEADBEEF", 0, 152);

 delay(166);

 //显示 4 次字符串

 mylcd.Set_Text_colour(WHITE);

 mylcd.Set_Text_Size(4);

 mylcd.Print_String("Hello!", 0, 192);

 delay(166);

 //显示 5 次字符串

 mylcd.Set_Text_colour(YELLOW);

 mylcd.Set_Text_Size(5);

 mylcd.Print_String("Hello!", 0, 224);

 delay(166);

 //显示 6 次字符串

 mylcd.Set_Text_colour(RED);

 mylcd.Set_Text_Size(6);

 mylcd.Print_String("Hello!", 0, 266);

 delay(666);

}

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

项目之六:逐行显示不同字号的英文字符串

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

项目之七:诊断接触针

实验开源代码:

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

 项目之七:诊断接触针

 模块直插,引脚用法如下:

 LCD_CS LCD_CD LCD_WR LCD_RD LCD_RST SD_SS SD_DI SD_DO SD_SCK

 Arduino Uno A3 A2 A1 A0 A4 10 11 12 13

 LCD_D0 LCD_D1 LCD_D2 LCD_D3 LCD_D4 LCD_D5 LCD_D6 LCD_D7

 Arduino Uno 8 9 2 3 4 5 6 7

*/



void showpins(int A, int D, int value, const char *msg) {

 Serial.print(msg);

 Serial.print(" (A" + String(A - A0) + ", D" + String(D) + ") = ");

 Serial.println(value);

}

void setup() {

 int i, j, value, Apins[2], Dpins[2], Values[2], found = 0;

 Serial.begin(9600);

 Serial.println("Making all control and bus pins INPUT_PULLUP");

 Serial.println("Typical 30k Analog pullup with corresponding pin");

 Serial.println("would read low when digital is written LOW");

 Serial.println("e.g. reads ~25 for 300R X direction");

 Serial.println("e.g. reads ~30 for 500R Y direction");

 Serial.println("");

 for (i = A0; i < A5; i++) pinMode(i, INPUT_PULLUP);

 for (i = 2; i < 10; i++) pinMode(i, INPUT_PULLUP);

 for (i = A0; i < A4; i++) {

  for (j = 5; j < 10; j++) {

   pinMode(j, OUTPUT);

   digitalWrite(j, LOW);

   value = analogRead(i);  // 忽略初读

   value = analogRead(i);

   if (value < 100) {

    showpins(i, j, value, "Testing :");

    if (found < 2) {

     Apins[found] = i;

     Dpins[found] = j;

     Values[found] = value;

     found++;

    }

   }

   pinMode(j, INPUT_PULLUP);

  }

 }

 if (found == 2) {

  Serial.println("Diagnosing as:-");

  for (i = 0; i < 2; i++) {

   showpins(Apins[i], Dpins[i], Values[i], (Values[i] < Values[!i]) ? "XM,XP: " : "YP,YM: ");

  }

 }

}

void loop() {

}

实验串口返回情况

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

项目之八:纵向流动显示字符串

实验开源代码:

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

 项目之八:纵向流动显示字符串

 模块直插,引脚用法如下:

 LCD_CS LCD_CD LCD_WR LCD_RD LCD_RST SD_SS SD_DI SD_DO SD_SCK

 Arduino Uno A3 A2 A1 A0 A4 10 11 12 13

 LCD_D0 LCD_D1 LCD_D2 LCD_D3 LCD_D4 LCD_D5 LCD_D6 LCD_D7

 Arduino Uno 8 9 2 3 4 5 6 7

*/



#include <Adafruit_GFX.h> // 导入特定硬件的库

#include <MCUFRIEND_kbv.h>

MCUFRIEND_kbv tft;

#define BLACK  0x0000

#define BLUE  0x001F

#define RED   0xF800

#define GREEN  0x07E0

#define CYAN  0x07FF

#define MAGENTA 0xF81F

#define YELLOW 0xFFE0

#define WHITE  0xFFFF

// 在行号中工作。 以 16 为单位的字体高度

int16_t ht = 16, top = 3, line, lines = 15, scroll;

void setup() {

 tft.reset();

 uint16_t id = tft.readID();

 tft.begin(id);

 tft.setRotation(0);   //肖像

 tft.fillScreen(BLACK);

 tft.setTextColor(WHITE, BLACK);

 tft.setTextSize(2);   // 系统字体为 8 像素。 ht = 8*2=16

 tft.setCursor(100, 0);

 tft.print("ID = 0x");

 tft.println(id, HEX);

 if (id == 0x9320 || id == 0x9325 || id == 0xB509) {

  top = 0;           // 这些控制器滚动全屏

  lines = tft.height() / ht;  // 我们处于纵向模式

 }

 if (id == 0x7783) {

  tft.println("can NOT scroll");

  while (1);          // 休止

 }

 tft.setCursor(0, 0);

 for (line = 1; line < 21; line++) tft.println(String(line) + ": ");

}

void loop(){

 tft.setCursor(0, (scroll + top) * ht);

 if (++scroll >= lines) scroll = 0;

 tft.vertScroll(top * ht, lines * ht, (scroll) * ht);

 tft.println(String(line) + ": [" + String(scroll) + "] ");

 delay(100);

 line++;

}

Arduino实验场景图

https://imagemc.dfrobot.com.cn/data/attachment/forum/202106/28/125955hrd1ln1n7xrcmg7g.gif

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

项目之九:动态背景四面循环显示字符串

Arduino实验开源代码

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

 项目之九:动态背景四面循环显示字符串

 模块直插,引脚用法如下:

 LCD_CS LCD_CD LCD_WR LCD_RD LCD_RST SD_SS SD_DI SD_DO SD_SCK

 Arduino Uno A3 A2 A1 A0 A4 10 11 12 13

 LCD_D0 LCD_D1 LCD_D2 LCD_D3 LCD_D4 LCD_D5 LCD_D6 LCD_D7

 Arduino Uno 8 9 2 3 4 5 6 7

*/



#include <Adafruit_GFX.h> // 导入基本图形库

#include <MCUFRIEND_kbv.h>

MCUFRIEND_kbv tft;

void setup(){

  Serial.begin(9600);

  tft.reset();

  uint16_t identifier = tft.readID();

  Serial.print("ID = 0x");

  Serial.println(identifier, HEX);

  if (identifier == 0xEFEF) identifier = 0x9486;

  tft.begin(identifier);

  // tft fill Screen (BLACK);

}

char *msg[] = { "PORTRAIT", "LANDSCAPE", "PORTRAIT_REV", "LANDSCAPE_REV" };

uint8_t aspect;

void loop(){

  uint16_t x = 50, y = 100;

  tft.setRotation(aspect);

  tft.fillScreen(0x0000);

  tft.setCursor(0, 0);

  tft.setTextSize(2);

  tft.println(msg[aspect]);

  tft.setCursor(x, y);

  tft.println("[x=" + String(x) + ",y=" + String(y) + "]");

  delay(800);

  tft.println("INVERT ON");

  tft.invertDisplay(true);

  delay(250);

  tft.invertDisplay(false);

  tft.println("INVERT OFF");

  delay(250);

  if (++aspect >= 4) aspect = 0;

}

Arduino实验场景图

https://mc.dfrobot.com.cn/data/attachment/forum/202106/28/135424yzt2775hhjbth8mf.gif

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

项目之十:逐行显示不同字号的英文字符串

Arduino实验开源代码

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

 项目之十:逐行显示不同字号的英文字符串

 模块直插,引脚用法如下:

 LCD_CS LCD_CD LCD_WR LCD_RD LCD_RST SD_SS SD_DI SD_DO SD_SCK

 Arduino Uno A3 A2 A1 A0 A4 10 11 12 13

 LCD_D0 LCD_D1 LCD_D2 LCD_D3 LCD_D4 LCD_D5 LCD_D6 LCD_D7

 Arduino Uno 8 9 2 3 4 5 6 7

*/



#include <Adafruit_GFX.h>  // 导入核心图形库

#include <MCUFRIEND_kbv.h>  // 导入特定硬件库

MCUFRIEND_kbv tft;

#include <Fonts/FreeSans9pt7b.h> //导入字体库

#include <Fonts/FreeSans12pt7b.h>

#include <Fonts/FreeSerif12pt7b.h>

#include <FreeDefaultFonts.h>

#define BLACK  0x0000

#define RED   0xF800

#define GREEN  0x07E0

#define WHITE  0xFFFF

#define GREY  0x8410

void setup(void){

  Serial.begin(9600);

  uint16_t ID = tft.readID();

  Serial.println("Example: Font_simple");

  Serial.print("found ID = 0x");

  Serial.println(ID, HEX);

  Serial.println("The display font is ready OK!");

  if (ID == 0xD3D3) ID = 0x9481; //如果只写显示,则强制 ID

  tft.begin(ID);

  tft.setRotation(0);

}

void loop(void){

  tft.fillScreen(BLACK);

  showmsgXY(20, 10, 1, NULL, "System x1");

  showmsgXY(20, 24, 2, NULL, "System x2");

  showmsgXY(20, 60, 1, &FreeSans9pt7b, "FreeSans9pt7b");

  showmsgXY(20, 80, 1, &FreeSans12pt7b, "FreeSans12pt7b");

  showmsgXY(20, 100, 1, &FreeSerif12pt7b, "FreeSerif12pt7b");

  showmsgXY(20, 120, 1, &FreeSmallFont, "FreeSmallFont");

  showmsgXY(5, 180, 1, &FreeSevenSegNumFont, "01234");

  showmsgXY(5, 190, 1, NULL, "System Font is drawn from topline");

  tft.setTextColor(RED, GREY);

  tft.setTextSize(2);

  tft.setCursor(0, 220);

  tft.print("7x5 can overwrite");

  delay(50);

  tft.setCursor(0, 220);

  tft.print("if background set");

  delay(50);

  showmsgXY(5, 260, 1, &FreeSans9pt7b, "Free Fonts from baseline");

   delay(50);

  showmsgXY(5, 285, 1, &FreeSans9pt7b, "Free Fonts transparent");

  delay(50);

  showmsgXY(5, 310, 1, &FreeSans9pt7b, "erase backgnd with fillRect()");

  delay(300);

}

void showmsgXY(int x, int y, int sz, const GFXfont *f, const char *msg)

{

  int16_t x1, y1;

  uint16_t wid, ht;

  tft.drawFastHLine(0, y, tft.width(), WHITE);

  tft.setFont(f);

  tft.setCursor(x, y);

  tft.setTextColor(GREEN);

  tft.setTextSize(sz);

  tft.print(msg);

  delay(500);

}


实验串口返回情况

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

项目之十:逐行显示不同字号的英文字符串

Arduino实验场景图

在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

项目之十一:四方向满屏动态字符串

实验开源代码:

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

 项目之十一:四方向满屏动态字符串

 模块直插,引脚用法如下:

 LCD_CS LCD_CD LCD_WR LCD_RD LCD_RST SD_SS SD_DI SD_DO SD_SCK

 Arduino Uno A3 A2 A1 A0 A4 10 11 12 13

 LCD_D0 LCD_D1 LCD_D2 LCD_D3 LCD_D4 LCD_D5 LCD_D6 LCD_D7

 Arduino Uno 8 9 2 3 4 5 6 7

*/

#define LCD_CS A3 // Chip Select goes to Analog 3

#define LCD_CD A2 // Command/Data goes to Analog 2

#define LCD_WR A1 // LCD Write goes to Analog 1

#define LCD_RD A0 // LCD Read goes to Analog 0

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

#include <Adafruit_GFX.h> // Hardware-specific library

#include <MCUFRIEND_kbv.h>

MCUFRIEND_kbv tft;

//#include <Adafruit_TFTLCD.h> // Hardware-specific library

//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

//Adafruit_TFTLCD tft;

//为一些常见的 16 位颜色值分配可读的名称

#define    BLACK  0x0000

#define    BLUE  0x001F

#define    RED   0xF800

#define    GREEN  0x07E0

#define CYAN  0x07FF

#define MAGENTA 0xF81F

#define YELLOW 0xFFE0

#define WHITE  0xFFFF

void setup(void);

void loop(void);

uint16_t g_identifier;

void setup(void) {

 tft.reset();

 g_identifier = tft.readID();

 Serial.begin(9600);

 Serial.print("readID = 0x");

 Serial.println(g_identifier, HEX);

 if (g_identifier == 0xFFFF) g_identifier = 0x9341;

 if (g_identifier == 0) {

  Serial.println("Unknown ID");

  while (1);

 }

 tft.begin(g_identifier);

 tft.setRotation(0);

}

uint16_t colors[] = {

 BLACK, BLUE

};

void colordump(uint16_t x, uint16_t y)

{

 uint16_t pixel, pixels[32];

 char i, j, buf[20], dirty;

 uint8_t wid = (tft.width() - 9 * 6) / (5 * 6), ht = (tft.height() / 8) - 1;

 tft.setTextColor(WHITE);

 tft.setTextSize(1);

 for (j = 0; j < ht; j++) {

  sprintf(buf, "%3d,%3d:", x, y + j);

  tft.print(buf);

  dirty = 1;

  for (i = 0; i < wid; i++) {

#if 1 && defined(MCUFRIEND_KBV_H_)

   if (dirty) tft.readGRAM(x, y + j, pixels, wid, 1);

   dirty = 0;

   pixel = pixels[i];

#else

   pixel = tft.readPixel(x + i, y + j);

#endif

   tft.print(" ");

   if (pixel == WHITE) tft.setTextColor(GREEN);

   sprintf(buf, "%04X", pixel);

   tft.print(buf);

   tft.setTextColor(WHITE);

  }

  tft.println();

 }

}

uint16_t bgr(uint16_t color) {

 return ((color & 0xF800) >> 11) | (color & 0x7E0) | (color & 0x1F) << 11;

}

void duffcolor(uint16_t color) {

 uint16_t pixel, x, y;

 char done, buf[20];

 uint16_t BGR = bgr(color);

 for (done = 0, y = 0; y < 320 && !done; y++) {

  for (x = 0; x < 240; x++) {

   //pixel = readxy(x, y);

   pixel = tft.readPixel(x, y);

   if (pixel != BGR) {

    done = 1;

    sprintf(buf, "0x%04X @ %d, %d", pixel, x, y);

    tft.println(buf);

    break;

   }

  }

 }

}

uint8_t aspect;

char *aspectname[] = {

 "PORTRAIT", "LANDSCAPE", "PORTRAIT_REV", "LANDSCAPE_REV"

};

void loop(void) {

 uint16_t iter, color;

 char buf[80];

 aspect = (aspect + 1) & 3;

 tft.setRotation(aspect);

 for (iter = 0; iter < sizeof(colors) / sizeof(uint16_t); iter++) {

  color = colors[iter];

  tft.fillScreen(color);

  tft.setTextColor(WHITE);

  tft.setTextSize(1);

  tft.setCursor(0, 0);

  sprintf(buf, "ID=0x%04X Background=%04X %s",

      tft.readID(), color, aspectname[aspect]);

  tft.println(buf);

  colordump(6 * 6, 0);

  //duffcolor(color);

  delay(400);

 }

}

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十三:2.4寸TFT液晶触摸屏 彩屏模块 TFT-LCD 高清真彩显示屏

项目之十一:四方向满屏动态字符串

实验场景图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/733726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于matlab使用激光雷达检测地平面和障碍物(附源码)

一、前言 此示例演示如何通过分割地平面并查找附近的障碍物来处理来自安装在车辆上的传感器的 3-D 激光雷达数据。这可以促进车辆导航的可驾驶路径规划。该示例还演示如何可视化流式激光雷达数据。 二、创建 Velodyne 文件读取器 本例中使用的激光雷达数据是使用安装在车辆上…

[工业互联-17]:常见EtherCAT主站与实现方法

目录 第1章 EtherCAT入门 1.1 简介 1.2 EtherCAT通信架构 第2章 EtherCAT主站方案 2.1 方案概述 2.2 主站配置步骤 2.3 EtherCAT主站软件 第3章 Windows操作系统支持EtherCAT的基本步骤 第4章 常见主站软件介绍&#xff1a;TwinCAT 4.1 简介 4.2 软件架构 4.3 应…

【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)

文章目录 第三章 数据链路层3.1 数据链路层概述3.2 封装成帧3.3 差错检测3.3.1 奇偶校验3.3.2 循环冗余校验 第三章 数据链路层 3.1 数据链路层概述 数据链路层是计算机网络体系结构中的一层&#xff0c;位于物理层和网络层之间。它负责在相邻节点之间传输数据&#xff0c;并提…

hugging face参数高效微调peft源码解析

大模型参数高效微调(PEFT) - 知乎 让天下没有难Tuning的大模型-PEFT技术简介 - 知乎 大模型参数高效微调技术原理综述&#xff08;三&#xff09;-P-Tuning、P-Tuning v2 - 知乎 你似乎来到了没有知识存在的荒原 - 知乎 大模型参数高效微调技术原理综述&#xff08;六&a…

由LM386构成的3W简易OCL功放电路/由TDA2009构成的1W高保真BTL功率放大器

由LM386构成的3W简易OCL功放电路 该电路是使用低功耗集成功率放大器 LM386 构成的 OCL 功放电路&#xff0c;电路结构简单&#xff0c;容易调试&#xff0c;非常适于自制。 一、电路工作原理 电路原理如图 31 所示。 图中IC1和IC2是两片集成功放LM386&#xff0c;接成OCL电路…

【编程的多线程学习-前章】什么是进程,PCB进程控制块抽象,cup分配,内存分配,虚拟地址,进程的通信,进程的意义

什么是进程 什么是进程/任务&#xff08;Process/Task&#xff09;进程就是一个运行起来的程序PCB 进程控制块抽象(PCB Process Control Block)pcb就是一个进程PCB具体包含的信息 CPU 分配 —— 进程调度&#xff08;Process Scheduling&#xff09;内存分配 —— 内存管理&…

Linux进度条小程序

文章目录 &#x1fa85;1. 回车换行♥1.1 回车♥1.2 换行 &#x1fa86;2. 缓冲区现象&#x1f9f8;3. 进度条实现♟3.1 逻辑♟3.2 进度条样式♟3.3 代码实现 &#x1f0cf;4. 场景使用 &#x1fa85;1. 回车换行 在学习C语言的时候&#xff0c;我们输出的时候&#xff0c;通常…

Linux 安装elasticsearch,kibana,Logstash

1、Elasticsearch 安装 cd /usr/localwget \ https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz \ https://artifacts.elastic.co/downloads/kibana/kibana-7.17.7-linux-x86_64.tar.gz \ https://artifacts.elastic.co/downlo…

BM77-最长的括号子串

题目 给出一个长度为 n 的&#xff0c;仅包含字符 ( 和 ) 的字符串&#xff0c;计算最长的格式正确的括号子串的长度。 例1: 对于字符串 "(()" 来说&#xff0c;最长的格式正确的子串是 "()" &#xff0c;长度为 2 .例2&#xff1a;对于字符串 ")()…

AI Chat 设计模式:5. 策略模式

本文是该系列的第五篇&#xff0c;采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的旁白。 问题列表 Q.1 我想学习一下策略模式A.1Q.2 你先给我简单讲解一下吧A.2Q.3 你举得这个电商平台例子不错&#xf…

青岛大学_王卓老师【数据结构与算法】Week04_09_线性表的应用2_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c;另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础–…

使用 tail -f 实时观测服务器日志输出

在开发阶段, 有 console 端的输出, 总是可以方便实时地看到应用的日志. 可一旦应用部署到服务器上之后呢, 日志被输出到文件中, 在某些情景下需要不停地查看日志文件的输出以定位某些问题, 此时是否还能像开发那样实时查看日志呢? 答案是可以的! 这个命令就是 tail -f . tail…

vue2 element-ui 2.9.1版不支持抽屉el-drawer

一个老项目中想使用抽屉 el-drawer&#xff0c;死活没有反应。 查了下element-ui的版本是2.9.1 再看其他一个正常使用抽屉的项目的element-ui版本。 但是 2.14.1 的element-ui版本又存在菜单管理无法折叠菜单项的问题。 看来还是得抽空解决在2.14.1菜单无法折叠的问题了。

一文了解潜力黑马Infiblue:借力Web3,释放元宇宙价值

2013 年&#xff0c;JDN Dionisio 曾发表了一篇名为《3D Virtual Worlds and the Metaverse: Current Status and Future Possibilities》的论文&#xff0c;深入探讨与归纳了虚拟世界的几个发展阶段&#xff0c;可以简单的归纳为&#xff1a; 第一阶段&#xff1a;基于计算机文…

零代码量化投资:用ChatGPT获取新浪财经上的股票实时行情

现在很多免费的股票数据库&#xff0c;比如akshare&#xff0c;其实是从新浪财经或者东方财富网站上爬取下来的。如果能直接从新浪财经或者东方财富网站上爬取数据&#xff0c;可以获取更全面更即时的信息。 可以在ChatGPT中输入提示词如下&#xff1a; 写一段Python代码&…

探索stable-diffusion技术乐园:活学活用界面参数

开篇 嗨!欢迎踏入我们充满有趣和创新的stable-diffusion技术乐园,让我们一起走进stable-diffusion界面参数的世界,看看怎样如行家袋里取物般自在地活用这些参数! 看了这么多大V、大卡和群粉们使用的英文,提起来有点沉,别急,我会尽量使用轻松的语气带你一起探索这些小秘…

MySQL视图、索引、导入导出、执行计划

目录 一、前言 1.导读 2.学习的好处 二、视图 1.什么是视图 2.视图与数据表的区别 3.使用视图的优点 4.视图的语法 1.创建视图&#xff08;CREATE VIEW&#xff09; 2.查询视图数据 3.更新视图数据 4.修改视图定义(ALTER VIEW) 5.删除视图&#xff08;DROP VIEW&a…

VSCode中打开NodeJS项目自动切换对应版本的配置

这几年搞了不少静态站点&#xff0c;有的是Hexo的&#xff0c;有的是VuePress的。由于不同的主题对于NodeJS的版本要求不同&#xff0c;所以本机上不少NodeJS的版本。 关于如何管理多个NodeJS版本&#xff0c;很早之前就写过用nvm来管理的相关文章&#xff0c;这里就不赘述了&a…

第四范式携「式说」亮相世界人工智能大会 大模型落地进入加速时刻

7月6日-8日&#xff0c;以“智联世界 生成未来”为主题的2023世界人工智能大会&#xff08;WAIC&#xff09;在上海召开&#xff0c;本届大会聚焦通用人工智能发展。第四范式携「式说」大模型亮相现场&#xff0c;更有第四范式「大模型之城」首秀&#xff0c;汇聚了大模型在金融…

Elasticsearch【全文检索、倒排索引、应用场景、对比Solr、数据结构】(一)-全面详解(学习总结---从入门到深化)

目录 Elasticsearch介绍_全文检索 Elasticsearch介绍_倒排索引 Elasticsearch介绍_Elasticsearch的出现 Elasticsearch介绍_Elasticsearch应用场景 Elasticsearch介绍_Elasticsearch对比Solr Elasticsearch介绍_Elasticsearch数据结构 Elasticsearch介绍_全文检索 Elasti…