STM32F103C8T6第6天:adc、iic、spi、溫濕度dht11在lcd1602顯示

1. ADC介紹

ADC是什么?

  • Analog-to-Digital Converter,指模擬/數字轉換器
    在這里插入圖片描述

ADC的性能指標

  • 量程:能測量的電壓范圍
  • 分辨率:ADC能辨別的最小模擬量,通常以輸出二進制數的位數表示,比如:8、10、12、16 位等;位數越多,分辨率越高,一般來說分辨率越高,轉化時間越長
  • 轉換時間:從轉換開始到獲得穩定的數字量輸出所需要的時間稱為轉換時間

ADC特性

  • 12 位精度下轉換速度可高達 1MHZ
  • 供電電壓:V SSA :0V,V DDA :2.4V~3.6V
  • ADC 輸入范圍:VREF- ≤ VIN ≤ VREF+(0–3.6V)
  • 采樣時間可配置,采樣時間越長,轉換結果相對越準確,但是轉換速度就越慢
  • ADC 的結果可以左對齊或右對齊方式存儲在 16 位數據寄存器中

ADC通道

  • 總共 2 個 ADC(ADC1,ADC2),每個 ADC 有 18 個轉換通道: 16 個外部通道、 2 個內部通道(溫度傳感器、內
    部參考電壓)。
    在這里插入圖片描述
  • 外部的 16 個通道在轉換時又分為規則通道和注入通道,其中規則通道最多有 16 路,注入通道最多有 4 路。
  • 規則組:正常排隊的人;
  • 注入組:有特權的人(軍人、孕婦)

ADC轉換順序

  • 每個 ADC 只有一個數據寄存器,16 個通道一起共用這個寄存器,所以需要指定規則轉換通道的轉換順序。
  • 規則通道中的轉換順序由三個寄存器控制:SQR1、SQR2、SQR3,它們都是 32 位寄存器。
  • SQR 寄存器控制著轉換通道的數目和轉換順序,只要在對應的寄存器位 SQx 中寫入相應的通道,這個通道就是第 x 個轉換。
    在這里插入圖片描述
  • 和規則通道轉換順序的控制一樣,注入通道的轉換也是通過注入寄存器來控制,只不過只有一個 JSQR 寄存器
    來控制,控制關系如下:
    在這里插入圖片描述
  • 注入序列的轉換順序是從JSQx[ 4 : 0 ](x=4-JL[1:0])開始。只有當JL=4的時候,注入通道的轉換順序才會按
    照JSQ1、JSQ2、JSQ3、JSQ4的順序執行。

ADC觸發方式

  1. 通過向控制寄存器ADC-CR2的ADON位寫1來開啟轉換,寫0停止轉換。
  2. 也可以通過外部事件(如定時器)進行轉換。

ADC轉化時間

  • ADC 是掛載在 APB2 總線(PCLK2)上的,經過分頻器得到 ADC 時鐘(ADCCLK),最高 14 MHz。
  • 轉換時間=采樣時間+12.5個周期
  • 12.5 個周期是固定的,一般我們設置 PCLK2=72M,經過 ADC 預分頻器能分頻到最大的時鐘只能是 12M,
    采樣周期設置為 1.5 個周期,算出最短的轉換時間為 1.17us。

ADC轉化模式

掃描模式

  • 關閉掃描模式:只轉換 ADC_SQRx 或 ADC_JSQR 選中的第一個通道
  • 打開掃描模式:掃描所有被 ADC_SQRx 或 ADC_JSQR 選中的所有通道

單次轉換/連續轉換

  • 單次轉換:只轉換一次
  • 連續轉換:轉換一次之后,立馬進行下一次轉換

2. 使用ADC讀取煙霧傳感器的值(351.55)

  • STM32CubeMx工程配置
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
  • 代碼(21.adc_test/MDK-ARM)
	uint32_t smoke_value = 0;
while (1)
{HAL_ADC_Start(&hadc1);           //啟動ADC單次轉換HAL_ADC_PollForConversion(&hadc1, 50);   //等待ADC轉換完成smoke_value = HAL_ADC_GetValue(&hadc1); //讀取ADC轉換數據printf("smoke_value = %f\r\n", 3.3/4096 * smoke_value);//電壓值//printf("smoke_value = %d \r\n", smoke_value);//多少個刻度HAL_Delay(500);
}

在這里插入圖片描述

3. llC介紹及OLED寫數據函數封裝(352.56)

  • 筆記參照:上官一號筆記第5章節;
  • 視頻參照:上官一號92~103節

函數封裝

  • 用到的庫函數:
HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c,uint16_t DevAddress,uint16_t MemAddress,uint16_t MemAddSize,uint8_t *pData,uint16_t Size,uint32_t Timeout)

參數一:I2C_HandleTypeDef *hi2c,I2C設備句柄
參數二:uint16_t DevAddress,目標器件的地址,七位地址必須左對齊
參數三:uint16_t MemAddress,目標器件的目標寄存器地址
參數四:uint16_t MemAddSize,目標器件內部寄存器地址數據長度
參數五:uint8_t *pData,待寫的數據首地址
參數六:uint16_t Size,待寫的數據長度
參數七:uint32_t Timeout,超時時間
返回值:HAL_StatusTypeDef,HAL狀態(OK,busy,ERROR,TIMEOUT)

  • 向OLED寫命令的封裝:
void Oled_Write_Cmd(uint8_t dataCmd)
{HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT,&dataCmd, 1, 0xff);
}
  • 向OLED寫數據的封裝:
void Oled_Write_Data(uint8_t dataData)
{HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x40, I2C_MEMADD_SIZE_8BIT,&dataData, 1, 0xff);
}
  • STM32CubeMx工程配置
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

4. 重做上官一號的IIC實驗(353.57)

  • 接線:
    • SCL – PB6
    • SDA – PB7
  • 代碼(22.oled_test/MDK-ARM)(重新封裝了Oled_Write_Cmd、Oled_Write_Data,其他和51代碼一樣)

5. SPI及W25Q128介紹(354.58)

SPI 是什么?

  • SP I是串行外設接口(Serial Peripheral Interface)的縮寫,是一種高速的,全雙工,同步的通信總線,并且
    在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為 PCB 的布局上節省空間,提供方便,正是出于這
    種簡單易用的特性,越來越多的芯片集成了這種通信協議,比如 AT91RM9200 。

SPI 物理架構

在這里插入圖片描述

  • SPI 包含 4 條總線,SPI 總線包含 4 條總線,分別為 SS、SCK、MOSI、MISO。它們的作用介紹如下 :
    (1) MISO – Master Input Slave Output,主設備數據輸入,從設備數據輸出
    (2) MOSI – Master Output Slave Input,主設備數據輸出,從設備數據輸入
    (3) SCK – Serial Clock,時鐘信號,由主設備產生
    (4) CS – Chip Select,片選信號,由主設備控制

SPI 工作原理

在這里插入圖片描述

SPI 工作模式

  • 時鐘極性(CPOL):
    • 沒有數據傳輸時時鐘線的空閑狀態電平
    • 0:SCK在空閑狀態保持低電平
    • 1:SCK在空閑狀態保持高電平
  • 時鐘相位(CPHA):
    • 時鐘線在第幾個時鐘邊沿采樣數據
    • 0:SCK的第一(奇數)邊沿進行數據位采樣,數據在第一個時鐘邊沿被鎖存
    • 1:SCK的第二(偶數)邊沿進行數據位采樣,數據在第二個時鐘邊沿被鎖存
      在這里插入圖片描述
  • 模式 0 和模式 3 最常用。
  • 模式 0 時序圖:
    在這里插入圖片描述
  • 模式 3 時序圖:
    在這里插入圖片描述

什么是 W25Q128 ?

  • W25Q128 是華邦公司推出的一款 SPI 接口的 NOR Flash 芯片,其存儲空間為 128 Mbit,相當于 16M 字
    節。
  • Flash 是常用的用于儲存數據的半導體器件,它具有容量大,可重復擦寫、按“扇區/塊”擦除、掉電后數據可
    繼續保存的特性。
  • Flash 是有一個物理特性:只能寫 0 ,不能寫 1 ,寫 1 靠擦除。

W25Q128 存儲架構

在這里插入圖片描述

  • 一般按扇區(4k)進行擦除。
  • 可以按 章 – 節 – 頁 – 字 進行理解。

W25Q128 常用指令

  • W25Q128 全部指令非常多,但常用的如下幾個指令:
    在這里插入圖片描述
  • 寫使能 (06H)
    • 執行頁寫,扇區擦除,塊擦除,片擦除,寫狀態寄存器等指令前,需要寫使能。
    • 拉低 CS 片選 → 發送 06H → 拉高 CS 片選
  • 讀狀態寄存器(05H)
    • 拉低CS片選 → 發送05H→ 返回SR1的值 → 拉高CS片選
  • 讀時序(03H)
    • 拉低CS片選 → 發送03H→ 發送24位地址 → 讀取數據(1~n) → 拉高CS片選
  • 頁寫時序 (02H)
    • 頁寫命令最多可以向FLASH傳輸256個字節的數據。
    • 拉低CS片選 → 發送02H→ 發送24位地址 → 發送數據(1~n) → 拉高CS片選
  • 扇區擦除時序(20H)
    • 寫入數據前,檢查內存空間是否全部都是 0XFF ,不滿足需擦除。
    • 拉低CS片選 → 發送20H→ 發送24位地址 → 拉高CS片選

W25Q128 狀態寄存器

  • W25Q128 一共有 3 個狀態寄存器,它們的作用是跟蹤芯片的狀態。
  • 其中,狀態寄存器 1 較為常用。
    在這里插入圖片描述
  • BUSY:指示當前的狀態,0 表示空閑,1 表示忙碌
  • WEL:寫使能鎖定,為 1 時,可以操作頁/扇區/塊。為 0 時,寫禁止。

W25Q128 常見操作流程

  • 以下流程省略了拉低/拉高片選信號CS。
  • 讀操作:
    在這里插入圖片描述
  • 擦除扇區:
    在這里插入圖片描述
  • 寫操作:
    在這里插入圖片描述

5. 使用SPI通訊讀寫W25Q128模塊(355.59)

硬件接線

  • VCC – 3.3V
  • CS – PA4
  • CLK – PA5
  • DO – PA6
  • DI – PA7

cubeMX配置

在這里插入圖片描述

w25q128_write_nocheck流程圖

在這里插入圖片描述

  • 代碼(27.spi_test/MDK-ARM)

6. LCD1602介紹及實戰(356.60)

項目需求

  • 使用溫濕度傳感器模塊(DHT11)獲取溫度及濕度,并將值顯示在LCD1602上,同時通過藍牙模塊透傳到手
    機。

項目框圖

在這里插入圖片描述

硬件清單

  • DHT11
  • LCD1602
  • HC-08
  • 繼電器
  • 杜邦線

LCD1602硬件接線

  • D0 ~ D7 – A0 ~ A7
  • RS – B1
  • RW – B2
  • EN – B10
  • V0 – GND(正視看不到顯示結果,需要側著看。否則需要接可調電阻)
  • VSS – GND
  • VDD – 5V(工作電源)
  • BLA – 5V(背光燈電源)
  • BLK – GND

cubemx配置

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

引腳封裝

  • RS、RW、EN三根信號線經常需要進行拉高/拉低操作,可以進行封裝
#define RS_GPIO_Port GPIOB
#define RW_GPIO_Port GPIOB
#define EN_GPIO_Port GPIOB
#define RS_Pin GPIO_PIN_1
#define RW_Pin GPIO_PIN_2
#define EN_Pin GPIO_PIN_10
#define RS_HIGH HAL_GPIO_WritePin(RS_GPIO_Port, RS_Pin, GPIO_PIN_SET)
#define RS_LOW HAL_GPIO_WritePin(RS_GPIO_Port, RS_Pin, GPIO_PIN_RESET)
#define RW_HIGH HAL_GPIO_WritePin(RW_GPIO_Port, RW_Pin, GPIO_PIN_SET)
#define RW_LOW HAL_GPIO_WritePin(RW_GPIO_Port, RW_Pin, GPIO_PIN_RESET)
#define EN_HIGH HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_SET)
#define EN_LOW HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_RESET)
  • 如何將一個字節的數據按位一次性發送到GPIOA的8個管腳?
GPIOA->ODR = cmd;

代碼實現

代碼(24.lcd1602_test/MDK-ARM)

#define RS_GPIO_Port GPIOB
#define RW_GPIO_Port GPIOB
#define EN_GPIO_Port GPIOB
#define RS_Pin GPIO_PIN_1
#define RW_Pin GPIO_PIN_2
#define EN_Pin GPIO_PIN_10
#define RS_HIGH HAL_GPIO_WritePin(RS_GPIO_Port, RS_Pin, GPIO_PIN_SET)
#define RS_LOW HAL_GPIO_WritePin(RS_GPIO_Port, RS_Pin, GPIO_PIN_RESET)
#define RW_HIGH HAL_GPIO_WritePin(RW_GPIO_Port, RW_Pin, GPIO_PIN_SET)
#define RW_LOW HAL_GPIO_WritePin(RW_GPIO_Port, RW_Pin, GPIO_PIN_RESET)
#define EN_HIGH HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_SET)
#define EN_LOW HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, GPIO_PIN_RESET)
void Write_Cmd_Func(uint8_t cmd)
{RS_LOW;RW_LOW;EN_LOW;GPIOA->ODR = cmd;HAL_Delay(5);EN_HIGH;HAL_Delay(5);EN_LOW;
}
void Write_Data_Func(uint8_t dataShow)
{RS_HIGH;RW_LOW;EN_LOW;GPIOA->ODR = dataShow;HAL_Delay(5);EN_HIGH;HAL_Delay(5);EN_LOW;
}
void LCD1602_INIT(void)
{
//(1)延時 15msHAL_Delay(15);
//(2)寫指令 38H(不檢測忙信號)Write_Cmd_Func(0x38);
//(3)延時 5msHAL_Delay(5);
//(4)以后每次寫指令,讀/寫數據操作均需要檢測忙信號
//(5)寫指令 38H:顯示模式設置Write_Cmd_Func(0x38);
//(6)寫指令 08H:顯示關閉Write_Cmd_Func(0x08);
//(7)寫指令 01H:顯示清屏Write_Cmd_Func(0x01);
//(8)寫指令 06H:顯示光標移動設置Write_Cmd_Func(0x06);
//(9)寫指令 0CH:顯示開及光標設置}Write_Cmd_Func(0x0c);
}
void LCD1602_showLine(char row, char col, char *string)
{switch(row){case 1:Write_Cmd_Func(0x80+col);while(*string){Write_Data_Func(*string);string++;}break;case 2:Write_Cmd_Func(0x80+0x40+col);while(*string){Write_Data_Func(*string);string++;}break;}
}
//main函數里://char position = 0x80 + 0x05;//char dataShow = 'C';LCD1602_INIT();//Write_Cmd_Func(position);//選擇要顯示的地址//Write_Data_Func(dataShow);//發送要顯示的字符LCD1602_showLine(1,6,"NO.2");LCD1602_showLine(2,0,"Jessie handsome");

7. DHT11介紹及實戰(357.61)

硬件接線

  • VCC – 5V
  • GND – GND
  • DAT – PB7
  • 注意:PB7既作為輸入,也作為輸出,則不能直接在CubeMX里配置,需要自己寫代碼

cubemx配置

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

代碼實現

#define DHT_HIGHT HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET)
#define DHT_LOW HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET)
#define DHT_VALUE HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7)
uint8_t datas[5];
void delay_us(uint16_t cnt)
{uint8_t i;while(cnt){for (i = 0; i < 10; i++){}cnt--;}
}
void DHT_GPIO_Init(uint32_t Mode)
{  GPIO_InitTypeDef GPIO_InitStruct = {0};__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_7;GPIO_InitStruct.Mode = Mode;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
void DHT11_Start(void)
{DHT_GPIO_Init(GPIO_MODE_OUTPUT_PP);DHT_HIGHT;DHT_LOW;HAL_Delay(30);DHT_HIGHT;DHT_GPIO_Init(GPIO_MODE_INPUT);while(DHT_VALUE);while(!DHT_VALUE);while(DHT_VALUE);
}
void Read_Data_From_DHT()
{int i;//輪int j;//每一輪讀多少次char tmp;char flag;DHT11_Start();DHT_GPIO_Init(GPIO_MODE_INPUT);for(i= 0;i < 5;i++){for(j=0;j<8;j++){while(!DHT_VALUE);//等待卡g點delay_us(40);if(DHT_VALUE == 1){flag = 1;while(DHT_VALUE);}else{flag = 0;}tmp = tmp << 1;tmp |= flag;}datas[i] = tmp;}
}
int fputc(int ch, FILE *f)
{   unsigned char temp[1]={ch};HAL_UART_Transmit(&huart1,temp,1,0xffff); return ch;
}
int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();
printf("Jessie handsome\r\n");
HAL_Delay(2000);while (1){Read_Data_From_DHT();printf("Humi: %d.%d%% ", datas[0], datas[1]);printf("Temp: %d.%d\r\n ", datas[2], datas[3]);HAL_Delay(2000);}
}

在這里插入圖片描述

8. 整合DHT11及LCD1602(358.62)

項目設計

  • 繼電器數據線插在PB6上,DHT11及LCD1602接線與上述相同。

項目實現

  • 注意點:
  1. 將Use MicroLIB的勾打上;
  2. 在main函數把串口中斷打開;
  3. 使用藍牙模塊時,將波特率設置為9600
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

9. 溫濕度LCD顯示并占傳服務器項目完結(359.63)

在這里插入圖片描述

char message[16];
while (1)
{Read_Data_From_DHT();if(datas[2] >= 24)HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);elseHAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET);memset(message, 0, sizeof(message));sprintf(message, "Humi: %d.%d%%", datas[0], datas[1]);LCD1602_showLine(1,0, message);sprintf(message, "Temp: %d.%d", datas[2], datas[3]);LCD1602_showLine(2,0, message);HAL_Delay(2000);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164608.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164608.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164608.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Spring篇】Spring注解式開發

本文根據嗶哩嗶哩課程內容結合自己自學所得&#xff0c;用于自己復習&#xff0c;如有錯誤歡迎指正&#xff1b; 我在想用一句話激勵我自己努力學習&#xff0c;卻想不出來什么驚為天人、精妙絕倫的句子&#xff0c;腦子里全是上課老師想說卻沒想起的四個字 “ 唯手熟爾 ”&am…

自動駕駛術語匯總

目錄 智駕級別芯片相關自動駕駛相關輔助駕駛相關預警相關傳感器相關泊車相關安全相關車燈相關 智駕級別 L0-L2屬于輔助駕駛&#xff0c;L4-L5才算自動駕駛 L0&#xff08;Level 0&#xff09;&#xff1a;無自動化。這是大多數傳統汽車的級別&#xff0c;所有的駕駛任務都需要…

C++每日選擇題—Day1

第一題 以下C代碼會輸出什么? #include <iostream> using namespace std; class A { public:A() {}~A() {} private:static int a; }; int main() {cout << sizeof(A) << endl;return 0; } A&#xff1a;0 B&#xff1a;1 C&#xff1a;4 D&#xff1a;8 答…

2023年最新PyCharm環境搭建教程(含Python下載安裝)

文章目錄 寫在前面PythonPython簡介Python生態圈Python下載安裝 PyCharmPyCharm簡介PyCharm下載安裝PyCharm環境搭建 寫在后面 寫在前面 最近博主收到了好多小伙伴的吐槽稱不會下載安裝python&#xff0c;博主聽到后非常的扎心&#xff0c;經過博主幾天的熬夜加班&#xff0c;…

單鏈表實現【隊列】

目錄 隊列的概念及其結構 隊列的實現 數組隊列 鏈式隊列 隊列的常見接口的實現 主函數Test.c 頭文件&函數聲明Queue.h 頭文件 函數聲明 函數實現Queue.c 初始化QueueInit 創建節點Createnode 空間釋放QueueDestroy 入隊列QueuePush 出隊列QueuePop 隊頭元…

Hyper-V系列:Hyper-V啟動、創建虛擬機、與主機傳輸文件

Hyper-V啟動、創建虛擬機、與主機傳輸文件 一. 簡介二. 啟用Hyper-V的方式也很簡單:一、從“任務管理器”的“性能”查看虛擬化是否啟用,未啟用的需要到BIOS開啟:右下角可以看到“虛擬化:已啟用”二、啟用Hyper-v和虛擬機1.電腦左下角右鍵打開應用界面——可選功能2.在可選…

JavaScript 原始數據類型和對應的對象類型(內置對象)之間的關系

JavaScript 原始數據類型和對應的對象類型&#xff08;內置對象&#xff09;之間的關系 JavaScript 的原始&#xff08;primitive&#xff09;數據類型包括包括數字&#xff08;Number&#xff09;、字符串&#xff08;String&#xff09;、布爾值&#xff08;Boolean&#xf…

【數據結構】E : 貨幣套匯(圖路徑)

E : 貨幣套匯&#xff08;圖路徑&#xff09; Description 套匯是指利用貨幣匯兌率的差異將一個單位的某種貨幣轉換為大于一個單位的同種貨幣。例如&#xff0c;假定1 美元可以買0.7 英鎊&#xff0c;1 英鎊可以買9.5 法郎&#xff0c;1法郎可以買到0.16美元。通過貨幣兌換&a…

ELK企業級日志分析平臺——ES集群監控

啟用xpack認證 官網&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/7.6/configuring-tls.html#node-certificates 在elk1上生成證書 [rootelk1 ~]# cd /usr/share/elasticsearch/[rootelk1 elasticsearch]# bin/elasticsearch-certutil ca[rootelk1 ela…

GB/T 29498-2013 木門窗檢測

木門窗是指以木材、木質復合材料為主要材料制作框和扇的門窗。 GB/T 29498-2013 木門窗檢測項目 測試項目 測試標準 外觀質量 GB/T 29498 尺寸 GB/T 29498 裝配質量 GB/T 29498 含水率 GB/T 17657 附著力 GB/T 4893.4 外門窗耐冷熱循環 GB/T 4893.7 耐劃痕 GB/…

Volcano3D繪制3D火山圖

一邊學習&#xff0c;一邊總結&#xff0c;一邊分享&#xff01; 本期教程內容 **注&#xff1a;**本教程詳細內容 Volcano3D繪制3D火山圖 一、前言 火山圖是做差異分析中最常用到的圖形&#xff0c;在前面的推文中&#xff0c;我們也推出了好幾期火山圖的繪制教程&#xff0…

【代數學習題4.2】從零理解范數與跡 —— 求數域元素的范數與跡

從零理解范數與跡 —— 求數域元素的范數與跡 寫在最前面題目解答 2. 范數 N N N思路求解過程python求解 3. 數域 K K K 的范數 N K N_K NK?思路求解過程Python求解分析解題步驟 4. 跡 T T T求解過程共軛元素計算跡 python求解分析解題步驟 5. 數域 K K K 的跡 T K T_K …

讀書筆記——《黑猩猩的政治》

前言 弗朗斯德瓦爾&#xff08;Frans de Waal)的代表作《黑猩猩政治》成書于1982年&#xff0c;是它的首部書籍作品&#xff0c;也是美國國會新任議員的被推薦讀物。之前看的他另一部作品的《萬智有靈》是2016年的作品&#xff0c;時間跨度居然這么大。《萬智有靈》介紹了許多…

代碼隨想錄 135. 分發糖果

題目 n 個孩子站成一排。給你一個整數數組 ratings 表示每個孩子的評分。 你需要按照以下要求&#xff0c;給這些孩子分發糖果&#xff1a; 每個孩子至少分配到 1 個糖果。 相鄰兩個孩子評分更高的孩子會獲得更多的糖果。 請你給每個孩子分發糖果&#xff0c;計算并返回需要準…

SDK廣告類型及其作用與收益分析

在移動應用開發領域&#xff0c;軟件開發工具包&#xff08;SDK&#xff09;廣告已經成為應用開發者們獲取收益的一種重要途徑。不同類型的SDK廣告提供了多樣化的選擇&#xff0c;以滿足開發者的需求。本文將介紹幾種常見的SDK廣告類型&#xff0c;并深入探討它們的作用及對開發…

SPASS-信度分析

信度分析概述 效度 效度指的是量表是否真正反映了我們希望測量的東西。一般來說&#xff0c;有4種類型的效度&#xff1a;內容效度、標準效度、結構效度和區分效度。內容效度是一種基于概念的評價指標&#xff0c;其他三種效度是基于經驗的評價指標。如果一個量表實際上是有效…

【亞太杯前兩問論文】2023年第十三屆APMCM亞太地區大學生數學建模競賽——(文末領取方式)

2023年第十三屆APMCM亞太地區大學生數學建模競賽——論文無償分享&#xff01;&#xff01;&#xff01; C題前兩問論文代碼已出&#xff0c;其他賽題及后續論文代碼會持續更新。 祝各位小伙伴都能在比賽中發揮出色&#xff0c;取得心儀的成績呦&#xff01;一起加油&#xff…

vscode在運行c語言時,無法scanf輸入

問題&#xff1a; 在學習c語言中&#xff0c;我在使用scanf和cin時無法在終端進行輸入(運行了但是無法輸入)&#xff0c;在網上尋找答案&#xff0c;并寫下筆記 解決方法 選擇左上角 文件->首選項&#xff08;preferences&#xff09;->設置&#xff08;settings&#xf…

網關和鏈路追蹤

Spring Cloud的網關 在Spring Cloud中&#xff0c;網關&#xff08;Gateway&#xff09;是一種用于管理和路由微服務請求的中間層服務。它充當了整個微服務架構的入口點&#xff0c;負責將來自外部的請求轉發到相應的微服務上。常見的網關包括Spring Cloud Gateway和Netflix Zu…

Java類加載那些事

Java源文件&#xff08;.java文件&#xff09;被編譯器編譯后變為字節碼形式的類文件&#xff08;.class文件&#xff09;&#xff0c;Java類加載的過程就是JVM加載.class的二進制文件并且放到內存中&#xff0c;將數據放到方法區&#xff0c;并且在堆區構造一個java.lang.clas…