(备份)常用ASCII 8*8 点阵 以及查询显示字符的点阵

news2024/11/13 14:51:24

图片b7fb10e5cc8840a9ab304b8bbddd0b49.jpg

 

#include "driver/spi_master.h"
#include "driver/gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "string.h"
#include "driver/i2c.h"
#include "esp_rom_sys.h"
#include "sdkconfig.h"
#include <stdio.h>
#include "esp_system.h"
#include "esp_log.h"

//------------------------------------------
#define I2C_MASTER_SCL_IO           14
#define I2C_MASTER_SDA_IO           26
#define I2C_MASTER_NUM              I2C_NUM_0
#define I2C_MASTER_FREQ_HZ          100000
#define I2C_MASTER_TX_BUF_DISABLE   0
#define I2C_MASTER_RX_BUF_DISABLE   0
#define DS3231_ADDRESS              0x68  // 68
//--------------------------------------
#define PIN_NUM_MOSI 2
#define PIN_NUM_CLK  15
#define PIN_NUM_CS   5
#define PIN_NUM_DC   19
#define PIN_NUM_RST  18

//--------------------------------------------------------------------------

void i2c_master_init()
{
    i2c_config_t conf = {
        .mode = I2C_MODE_MASTER,
        .sda_io_num = I2C_MASTER_SDA_IO,
        .sda_pullup_en = GPIO_PULLUP_ENABLE,
        .scl_io_num = I2C_MASTER_SCL_IO,
        .scl_pullup_en = GPIO_PULLUP_ENABLE,
        .master.clk_speed = I2C_MASTER_FREQ_HZ,
    };
    ESP_ERROR_CHECK(i2c_param_config(I2C_MASTER_NUM, &conf));
    ESP_ERROR_CHECK(i2c_driver_install(I2C_MASTER_NUM, conf.mode, 0, 0, 0));
}

uint8_t dec_to_bcd(uint8_t val)
{
    return ((val / 10 * 16) + (val % 10));
}

uint8_t bcd_to_dec(uint8_t val)
{
    return ((val / 16 * 10) + (val % 16));
}

esp_err_t ds3231_set_time(uint8_t sec, uint8_t min, uint8_t hour, uint8_t day, uint8_t date, uint8_t month, uint8_t year)
{
    uint8_t time_data[7] = {dec_to_bcd(sec), dec_to_bcd(min), dec_to_bcd(hour), dec_to_bcd(day), dec_to_bcd(date), dec_to_bcd(month), dec_to_bcd(year)};

    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, (DS3231_ADDRESS << 1) | I2C_MASTER_WRITE, true);
    i2c_master_write_byte(cmd, 0x00, true);
    i2c_master_write(cmd, time_data, sizeof(time_data), true);
    i2c_master_stop(cmd);
    esp_err_t ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);
    i2c_cmd_link_delete(cmd);

    return ret;
}

//---------------------------------------------------------------------------------
//-----------------------------------------------------------
spi_device_handle_t spi;

void spi_init() {
    spi_bus_config_t buscfg = {
        .mosi_io_num = PIN_NUM_MOSI,
        .miso_io_num = -1,
        .sclk_io_num = PIN_NUM_CLK,
        .quadwp_io_num = -1,
        .quadhd_io_num = -1,
        .max_transfer_sz = 4096,
    };

    spi_bus_initialize(HSPI_HOST, &buscfg, 1);

    spi_device_interface_config_t devcfg = {
        .clock_speed_hz = 25 * 1000 * 1000,   // 10 MHz
        .mode = 0,                            // SPI mode 0
        .spics_io_num = PIN_NUM_CS,           // CS pin
        .queue_size = 7,
    };

    spi_bus_add_device(HSPI_HOST, &devcfg, &spi);
}

void st7735_send_cmd(uint8_t cmd) {
    gpio_set_level(PIN_NUM_DC, 0); // Command mode
    spi_transaction_t t;
    memset(&t, 0, sizeof(t));
    t.length = 8;
    t.tx_buffer = &cmd;
    spi_device_transmit(spi, &t);
}

void st7735_send_data(uint8_t data) {
    gpio_set_level(PIN_NUM_DC, 1); // Data mode
    spi_transaction_t t;
    memset(&t, 0, sizeof(t));
    t.length = 8;
    t.tx_buffer = &data;
    spi_device_transmit(spi, &t);
}

void st7735_reset() {
    gpio_set_level(PIN_NUM_RST, 0);
    vTaskDelay(1 / portTICK_PERIOD_MS);
    gpio_set_level(PIN_NUM_RST, 1);
    vTaskDelay(200 / portTICK_PERIOD_MS);
}

void st7735_init() {
    // Reset the display
    st7735_reset();
        // Initialization commands for ST7735S
    st7735_send_cmd(0x01); // Software reset
    vTaskDelay(150 / portTICK_PERIOD_MS);
 
    st7735_send_cmd(0x11); // Sleep out
    vTaskDelay(120 / portTICK_PERIOD_MS);
	
	st7735_send_cmd(0xB1);
	st7735_send_data(0x01);
	st7735_send_data(0x2c);
	st7735_send_data(0x2D);
	
	st7735_send_cmd(0xB2);
	st7735_send_data(0x01);
	st7735_send_data(0x2c);
	st7735_send_data(0x2D);
	
	st7735_send_cmd(0xB3);
	st7735_send_data(0x01);
	st7735_send_data(0x2c);
	st7735_send_data(0x2D);
	st7735_send_data(0x01);
	st7735_send_data(0x2c);
	st7735_send_data(0x2D);
	
	st7735_send_cmd(0xB4);
	st7735_send_data(0x00);
	
	st7735_send_cmd(0xc0);
	st7735_send_data(0xa2);
	st7735_send_data(0x02);
	st7735_send_data(0x84);
	st7735_send_cmd(0xc1);
	st7735_send_data(0xc5);
	
	st7735_send_cmd(0xc2);
	st7735_send_data(0x0d);
	
	st7735_send_cmd(0xc3);
	st7735_send_data(0x8d);
	st7735_send_data(0x2a);
	
	st7735_send_cmd(0xc4);
	st7735_send_data(0x8d);
	st7735_send_data(0xee);
	
	st7735_send_cmd(0xc5);
	st7735_send_data(0x0e);
	
	st7735_send_cmd(0x36);
	st7735_send_data(0b01000000);   //40
	
	st7735_send_cmd(0xe0);
	st7735_send_data(0x0f);
	st7735_send_data(0x1a);
	st7735_send_data(0x0f);
	st7735_send_data(0x18);
	st7735_send_data(0x2f);
	st7735_send_data(0x28);
	st7735_send_data(0x20);
	st7735_send_data(0x22);
	st7735_send_data(0x1f);
	st7735_send_data(0x1b);
	st7735_send_data(0x23);
	st7735_send_data(0x37);
	st7735_send_data(0x00);
	st7735_send_data(0x07);
	st7735_send_data(0x02);
	st7735_send_data(0x10);
    
	st7735_send_cmd(0xe1);
	st7735_send_data(0x0f);
	st7735_send_data(0x1b);
	st7735_send_data(0x0f);
	st7735_send_data(0x17);
	st7735_send_data(0x33);
	st7735_send_data(0x2c);
	st7735_send_data(0x29);
	st7735_send_data(0x2e);
	st7735_send_data(0x30);
	st7735_send_data(0x30);
	st7735_send_data(0x39);
	st7735_send_data(0x3f);
	st7735_send_data(0x00);
	st7735_send_data(0x07);
	st7735_send_data(0x03);
	st7735_send_data(0x10);
	
	st7735_send_cmd(0x2a);
	st7735_send_data(0x00);
	st7735_send_data(0x00);
	st7735_send_data(0x00);
	st7735_send_data(127);
	
	st7735_send_cmd(0x2b);
	st7735_send_data(0x00);
	st7735_send_data(0x00);
	st7735_send_data(0x00);
	st7735_send_data(160);

	st7735_send_cmd(0xf0);
	st7735_send_data(0x01);
	st7735_send_cmd(0xf6);
	st7735_send_data(0x00);
	
	st7735_send_cmd(0x3a);
	st7735_send_data(0x05);
   
     st7735_send_cmd(0x29); // Display on
     vTaskDelay(100 / portTICK_PERIOD_MS);
}

void qp(uint8_t xs, uint8_t xe,uint8_t ys,uint8_t ye) {
    // Set 列
    st7735_send_cmd(0x2A);
    st7735_send_data(0x00);
    st7735_send_data(xs);
    st7735_send_data(0x00);
    st7735_send_data(xe);

    // Set 行
    st7735_send_cmd(0x2B);
    st7735_send_data(0x00);
    st7735_send_data(ys);
    st7735_send_data(0x00);
    st7735_send_data(ye);
    // Write memory
    st7735_send_cmd(0x2C);       
}
    void cls(){
       qp(0,127,0,159);                              // lcd  全屏刷成白屏
       for (uint16_t a = 0; a < 159; a++) {
		   for(uint8_t b=0;b<127;b++){
             st7735_send_data(0xff);
			 st7735_send_data(0xff);
		}
	   }  
	}	
	
	
	uint8_t font[][8] ={ 
	     {0x1C, 0x22, 0x26, 0x2A, 0x32, 0x22, 0x1C, 0x00},   // '0'
	     {0x04, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x0E, 0x00}, // 数字 '1'
	     {0x0E, 0x11,  0x01,  0x06,   0x08, 0x10,  0x1F,  0x00 },  // 2 
	     {0x1C, 0x22, 0x02, 0x1C, 0x02, 0x22, 0x1C, 0x00}, // '3'
         {0x08, 0x18, 0x28, 0x48, 0x7E, 0x08, 0x08, 0x00},  // '4'
         {0x3E, 0x20, 0x3E, 0x02, 0x02, 0x22, 0x1C, 0x00},  // '5'
	     {0x1C, 0x22, 0x20, 0x3C, 0x22, 0x22, 0x1C, 0x00},  // '6'
         {0x3E, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x00}, // '7'
         {0x1C, 0x22, 0x22, 0x1C, 0x22, 0x22, 0x1C, 0x00},  // '8'
         {0x1C, 0x22, 0x22, 0x1E, 0x02, 0x22, 0x1C, 0x00},  // '9'
		 
		 {0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00},  // :
		 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},         //空格
		 //--------------
		 {0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00},    //中间短横线-
		{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},  //下横线_
		{ 0x00,0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30}, //逗号
		{    0x3C, 0x42, 0x02, 0x0C, 0x10, 0x10, 0x00,0x10},//问号
		{  0x10, 0x10, 0x10, 0x10, 0x10,0x00,0x10, 0x00},//感叹号
		{  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,0x18},//句号
		{   0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30},// 分号
		
		//-------------------
		{0x00,0x00, 0x3C, 0x02,  0x3E, 0x42, 0x3E, 0x00 },  //a

		{ 0x40, 0x40, 0x7C,  0x42,  0x42, 0x42,  0x7C,  0x00},//         
		{0x00, 0x00, 0x3E,  0x40,   0x40,   0x40,  0x3E,   0x00},//         
		{0x02, 0x02, 0x3E, 0x42, 0x42, 0x42, 0x3E, 0x00},//         
		{0x00, 0x00, 0x3C, 0x42, 0x7E, 0x40, 0x3C,  0x00},//         
		{0x1C, 0x22, 0x20, 0x7C, 0x20, 0x20, 0x20,  0x00},//         
		{0x00, 0x00, 0x3E, 0x42, 0x3E, 0x02, 0x3C, 0x00},//         
		{0x40, 0x40,  0x7C,  0x42, 0x42, 0x42, 0x42, 0x00},//         
		{0x00, 0x10,  0x00, 0x30, 0x10, 0x10,0x10, 0x00},//         
		{0x00, 0x08, 0x00, 0x08, 0x08, 0x48, 0x30, 0x00},//         
		{0x40, 0x44, 0x48,0x70,  0x48, 0x44,  0x42,  0x00},         
		{0x30, 0x10, 0x10, 0x10,   0x10, 0x10, 0x10, 0x00},//         
		{0x00, 0x00, 0x66, 0x5A,  0x42, 0x42, 0x42, 0x00},//         
		{ 0x00,0x00, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x00},//         
		{0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x3C,  0x00},//         
		{0x00, 0x00, 0x7C, 0x42, 0x42, 0x7C, 0x40, 0x40},//  *      
		{0x00, 0x00, 0x3E, 0x42, 0x42, 0x3E, 0x02, 0x02},//       * 
		{0x00, 0x00,  0x7C, 0x42, 0x40, 0x40, 0x40,  0x00},//       
		{0x00, 0x00, 0x3C, 0x40, 0x3C,0x02, 0x7C,  0x00},//         
		{0x00,   0x10,0x7C, 0x10, 0x10, 0x12,  0x0C, 0x00},//       
		{0x00, 0x00,  0x42, 0x42, 0x42, 0x42, 0x3E,   0x00},//         
		{ 0x00, 0x00,0x42, 0x42,   0x24, 0x24, 0x18, 0x00},//         
		{0x00, 0x00, 0x42, 0x42, 0x5A, 0x5A, 0x24,  0x00},//         
		{0x00, 0x00, 0x42, 0x24, 0x18, 0x24, 0x42, 0x00},//         
		{0x00, 0x00, 0x42, 0x42, 0x3E, 0x02, 0x3C, 0x00},//         
		{0x00, 0x00, 0x7E, 0x04, 0x18, 0x20, 0x7E, 0x00},//      z   
};


	char asc[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,':',0x20,
	         '-','_',',','?','!','.',';',
			 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',			 
	};
	
	void xs(uint8_t ls,uint8_t le,uint8_t hs,uint8_t he,uint8_t *ci,uint8_t ys){
		qp(127-le,127-ls,hs,he);
		for (uint16_t a = 0; a < 8; a++) {
		for(uint8_t b=0;b<8;b++){
			     if((int)(((ci[a]>>b)&0b00000001))==1){   //如果像素点为1
                     st7735_send_data(ys);
			         st7735_send_data(0x00);
				 }else{
					   st7735_send_data(0xff);
			           st7735_send_data(0xff); 
		
			 }
	
		}
	  }
	}
	
	void  hxs(uint8_t lc,uint8_t hc,char *i,size_t cd,uint8_t ys){    //在一行中显示字符
		  uint16_t len=(int)cd;
	      for(uint8_t a=0;a<len;a++){
		        uint8_t ls=lc;
		        uint8_t le=ls+7;
		        uint8_t hs=hc;     
		        uint8_t he=hs+7;	
  
                int asc_len=(int)sizeof(asc);
                for(int n=0;n<asc_len;n++){
					if(memcmp(&i[a],&asc[n],1)==0){        //查表
						xs(ls,le,hs,he,&font[n][0],ys);
                        lc=le;		                    //列自动加7,相当于光标后移一个字符
						break;
					}
				}					     
          }	  
		  
	}
//=========================================================================================================	
	
void app_main() {
    i2c_master_init();
 
    gpio_set_direction(PIN_NUM_DC, GPIO_MODE_OUTPUT);
    gpio_set_direction(PIN_NUM_RST, GPIO_MODE_OUTPUT);

    spi_init();
    st7735_init();                             //lcd 初始化后是花屏
	cls();
	
    uint8_t data[7];              // 0-255 无符号数组
	char i[8];                    //字符串数组
    for(;;){
		
        //  uint8_t  i[]={6,1,8,3,7,3,6,7,8,7,1,7};  
    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, (DS3231_ADDRESS << 1) | I2C_MASTER_WRITE, true);
    i2c_master_write_byte(cmd, 0x00, true);
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, (DS3231_ADDRESS << 1) | I2C_MASTER_READ, true);
    i2c_master_read(cmd,data, sizeof(data), I2C_MASTER_LAST_NACK);
    i2c_master_stop(cmd);
    esp_err_t ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_PERIOD_MS);
    i2c_cmd_link_delete(cmd);

	if (ret == ESP_OK) {
		
		 uint8_t so=data[2];                      //时
		 uint8_t soh=(so>>4)&0b00001111;
	     i[0]=soh+0x30;                       //转为ascii 字符
	     uint8_t sol=so&0b00001111;
		 i[1]=sol+0x30;                         //转为ascii 字符
		  
		  i[2]=':';
		   uint8_t fo=data[1];                   //分
		 uint8_t foh=(fo>>4)&0b00001111;
	     i[3]=foh+0x30;
	     uint8_t fol=fo&0b00001111;
		 i[4]=fol+0x30;
		 i[5]=':';
		 
		 uint8_t mo=data[0];                      //秒
		 uint8_t moh=(mo>>4)&0b00001111;
	     i[6]=moh+0x30;
	     uint8_t mol=mo&0b00001111;
		 i[7]=mol+0x30;
		
	
		 hxs(65,2,i,sizeof(i),0xf8);
		 
		 char i2[]="1;42,5:7_8.?!7a bcde";
		 hxs(0,50,i2,sizeof(i2),0xf8);
		  
	     vTaskDelay(pdMS_TO_TICKS(100));
	}
	}
}
 

 

 

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

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

相关文章

【postman如何生成python代码】

postman如何生成python代码 https://jingyan.baidu.com/article/86fae3461577c27d48121ad1.html

【大模型系列篇】词向量 - 从Word2Vec到ELMo

&#x1f525;&#x1f525;&#x1f525;首先安利一个比较不错的忍不住就想一键三连的大模型科普: 大模型科普专栏 - AI老兵文哲&#xff08;哔哩哔哩&#xff09; 词向量&#xff08;又叫词嵌入&#xff09;已经成为NLP领域各种任务的必备一步&#xff0c;而且随着BERT、GPT等…

JS打造一款你自己的专用字体:使用p5.js与JavaScript实现

前言 在最近的生成艺术项目中遇到一个小问题&#xff1a;如何在作品中优雅地添加文本元素&#xff0c;同时避免使用网络字体&#xff0c;要么侵权要么花钱~~给项目增加不必要的负担&#xff0c;我决定不走寻常路&#xff0c;自己动手&#xff0c;丰衣足食&#xff0c;用JS打造…

C++11 新特性基础

前言 C11是继&#xff0c;C98/03之后的最大的一次更新&#xff0c;这次更新虽然花了很长的时间&#xff0c;但是真的推出了很多的干货&#xff01;本期内容开始我们将介绍C11常用的操作&#xff01; 目录 前言 一、C11介绍 二、统一的列表初始化 1、{}初始化 2、std::in…

【机器学习】循环神经网络(RNN)介绍

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 循环神经网络(RNN)介绍什么是RNN?RNN的基本原理递归神经网络单元前向传播反向传…

Ubuntu下安装和配置MQTT服务器Mosquitto

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的通信协议&#xff0c;设计用于物联网设备之间的低带宽、不稳定网络环境下的高效通信。MQTT允许设备通过发布&#xff08;publish&#xff09;和订阅&#xff08;subscribe&#xff09;模式进行消…

清华2024内地录取3500人,其中900多人是走这个政策进来的... ...

2024年&#xff0c; 清华大学共录取本科新生3800余人&#xff0c;其中内地学生3500余人&#xff0c;覆盖全国31个省份1000 多所生源中学;港澳台学生60余人&#xff0c;国际学生约230人。 大李露个脸 清华大学2024年新生数据 普通批提前批共录取1549人&#xff0c;占比44% 强基计…

火龙果检测-目标检测数据集(包括VOC格式、YOLO格式)

火龙果检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式&#xff09; 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1NdRBsHnYCK9xZd7bzQoN5w?pwd779l 提取码&#xff1a;779l 数据集信息介绍&#xff1a; 共有 1106 张图像和一一对应的标注文件 标注…

macos OneNote 2016 for Mac 官方pkg下载地址 - macos 10.15 Catalion 可用Onenote版本官方下载地址

macos 10.15 Catalion 版本的系统已经无法正常从应用商店下载到可用的Onenote 应用,原因是版本不受支持, 而且onenote官方链接的应用商店地址https://apps.apple.com/us/app/microsoft-onenote/id784801555?mt12在中国地区也无法访问, 所以中国地区用户如果想使用onenote应用…

【云原生系列之SkyWalking的部署】

1、分布式链路追踪 1.1概念 在较大的web集群和微服务环境中&#xff0c;客户端的一次请求需要经过不同的模块&#xff0c;多个不同中间件&#xff0c;多个不同机器一起相互协作才能处理完成客户端的请求&#xff0c;而在这一系列的请求过程之中,处理流程可能是串行执行,也可能…

华为云征文|基于Flexus云服务器X实例之安装长亭雷池waf教程

&#x1f534;大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 先看这里 写在前面何为长亭雷池waf安装社区版雷池雷池环境要求查看华为云Flexus云服务器X实例的配置一条命令安装雷池waf检查查看是否安装成功 雷池使用登录雷池配置站点 写在…

51单片机.之ADC数字模拟转换

1、数字转模拟电路&#xff0c;输出波形&#xff0c;示波器采集来显示波形 单片机通过i2c给&#xff0c;模数转换器&#xff0c;写入数字信号&#xff0c;定时器1s扫描按键的切换 1、key.c 切换波形 #include <reg52.h>sbit KEY_IN_1 P2^4; sbit KEY_IN_2 P2^5; …

五、Selenium操作指南(一)

文章目录 一、基本用法&#xff08;一&#xff09;初始化浏览器对象&#xff08;二&#xff09;访问页面&#xff08;三&#xff09;设置浏览器大小&#xff08;四&#xff09;刷新页面&#xff08;五&#xff09;前进后退 二、获取页面基础属性三、定位页面元素&#xff08;一…

【QNX+Android虚拟化方案】112 - 获取 88Q5152 Switch Port1、Port2 端口的主从模式 / 传输速率 / 链路状态

【QNX+Android虚拟化方案】112 - 获取 88Q5152 Switch Port1、Port2 端口的主从模式 / 传输速率 / 链路状态 1. 读取 P1、P2 端口 主从模式 / 传输速率2. 读取 P1、P2 端口 Link Status3. 读取 P1、P2 端口 Duplex 全双工/半双工模式4. 读取 P1、P2 链路信号SQI质量5. 完整代码…

基于单片机的肺活量检测仪设计

本设计主要对其中的一种测量方法和原理进行介绍与运用&#xff0c;设计了一款基于STC12C5A60S2单片机的肺活量检测仪&#xff0c;包括供电模块、气流检测模块、按键模块、显示模块、语音输出模块和蓝牙模块&#xff0c;实现对肺活量的数值检测&#xff0c;并对数据进行语音播报…

linux固定ip

背景 VMware&#xff0c;centos7 查询 网关 linux指执行 ip addr 命令 拿到自动分配的ip : 192.168.150.102 [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ 执行: cd /etc/sysconfig/network-scripts/ 进入到network-scripts文件中 执行: vi ifcfg-ens33 编辑ifc…

PPT到PDF转换器:一个功能强大的Python GUI应用(unzip,convert,replace,merge)

在当今的数字时代,文档格式转换已成为一项常见需求。特别是将PowerPoint演示文稿转换为PDF格式,这不仅可以确保文档的一致性,还能方便分享和打印。今天,我们将深入探讨一个使用Python开发的强大GUI应用程序,它不仅可以将PPT转换为PDF,还具备文本替换、PDF处理和文件合并等多项功…

TDesign 微信小程序组件库配置

文章目录 1.安装 npm 包2. 构建 npm3. 构建完成后即可使用 npm 包。4.修改 app.json5.修改 tsconfig.json6.使用组件 1.安装 npm 包 在小程序 package.json 所在的目录中执行命令安装 npm 包&#xff1a; npm install结果报错 PS C:\WeChatProjects\miniprogram-1> npm i…

七、库存管理——调拨、预留业务

1、库存管理业务总览 2、转储过账和库存转移 3、转储过账 3.1 库存状态到库存状态&#xff08;类型较多&#xff09; 3.1.1 从质检库存转移到非限制使用库存 转储模式&#xff1a;事务类型A08&#xff08;转移过账&#xff09;凭证类型R10&#xff08;其他&#xff09;移动类…

Having trouble using OpenAI API

题意&#xff1a;"使用OpenAI API遇到困难" 问题背景&#xff1a; I am having trouble with this code. I want to implement AI using OpenAI API in my React.js project but I cannot seem to get what the issue is. I ask it a question in the search bar in…