日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

K_A12_022 基于STM32等单片机驱动VL53L0X模块 串口与OLED0.96双显示

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 K_A12_022 基于STM32等单片机驱动VL53L0X模块 串口与OLED0.96双显示 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

K_A12_022 基于STM32等單片機(jī)驅(qū)動(dòng)VL53L0X模塊 串口與OLED0.96雙顯示

  • 一、資源說(shuō)明
  • 二、基本參數(shù)
    • 參數(shù)
    • 引腳說(shuō)明
  • 三、驅(qū)動(dòng)說(shuō)明
    • UART對(duì)應(yīng)程序:
    • IIC對(duì)應(yīng)程序:
  • 四、部分代碼說(shuō)明
    • 1、接線引腳定義
      • 1.1、STC89C52RC+VL53L0X模塊
      • 1.2、STM32F103C8T6+VL53L0X模塊
  • 五、基礎(chǔ)知識(shí)學(xué)習(xí)與相關(guān)資料下載
  • 六、視頻效果展示與程序資料獲取
  • 七、注意事項(xiàng)
  • 八、接線說(shuō)明
    • STC89C52RC
      • UART:
      • IIC:
    • STM32F103C8T6
      • UART:
      • IIC:


注:偏差校準(zhǔn)步驟(均十六進(jìn)制發(fā)送)
1、偏差校準(zhǔn)命令
A5 21 0A D0(此處是在10CM處校準(zhǔn))
2、加載數(shù)據(jù)命令
A5 43 04 EC(斷電重啟后加載偏差補(bǔ)償)
3、保存設(shè)置命令
A5 87 01 2D(保存設(shè)置后生效)

一、資源說(shuō)明

單片機(jī)型號(hào)測(cè)試條件模塊名稱代碼功能
STC89C52RC晶振11.0592MVL53L0X模塊STC89C52RC驅(qū)動(dòng)VL53L0X模塊參數(shù) 串口與OLED0.96雙顯示
STM32F103C8T6晶振8M/系統(tǒng)時(shí)鐘72MVL53L0X模塊STM32F103C8T6驅(qū)動(dòng)VL53L0X模塊參數(shù) 串口與OLED0.96雙顯示

其他資料目錄 直戳跳轉(zhuǎn)

二、基本參數(shù)

參數(shù)

引腳說(shuō)明

VL53L0X模塊引腳說(shuō)明
VCC正極 3.3-5V供電
GND負(fù)極 接GND
CT串口 USART_TX / IIC_SCL
DR串口 USART_RX / IIC_SDA
SET設(shè)置上下限距離報(bào)警值(電壓 0~3.3V)
OUT報(bào)警值狀態(tài)輸出

三、驅(qū)動(dòng)說(shuō)明

UART對(duì)應(yīng)程序:

以51為例

void UartInit(void) {SCON=0x50; //UART方式1:8位UART; REN=1:允許接收 PCON=0x00; //SMOD=0:波特率不加倍 TMOD=0x20; //T1方式2,用于UART波特率 TH1=0xFD; TL1=0xFD; //UART波特率設(shè)置:FDFD,9600;FFFF,57600TR1=1; //允許T1計(jì)數(shù) EA=1;TCON |=0x40;//啟動(dòng)定時(shí)器1IE |=0x90;//打開(kāi)串口中斷,MCU總中斷 }void UartSend(uint8_t dat) {while(send_ok);//等待發(fā)送緩存為空SBUF = dat;send_ok=1;//緩存標(biāo)志置1 }void UartSendStr(uint8_t *p) {uint8_t k=0;while ((*(p+k))!='\0'){UartSend(*(p+k));k++;} }

IIC對(duì)應(yīng)程序:

以51為例

/**@brief IIC總線初始化函數(shù)*@param[in] NULL*@author MrWeng*@date 2020-8-10*/ void VL53L0X_IIC_Init(void) {IIC_SDA = 1;//釋放IIC總線的數(shù)據(jù)線。IIC_SCL = 1;//釋放IIC總線的時(shí)鐘線。} /**************************************************************** 通訊起始信號(hào):當(dāng) SCL 線是高電平時(shí) SDA 線從高電平向低電平切換,表示通訊的開(kāi)始; *****************************************************************/void VL53L0X_IIC_start(void) {IIC_SDA = 1;//拉高IIC_SCL = 1;IIC_Delay();IIC_SDA = 0;IIC_Delay();IIC_SCL = 0; //拉低時(shí)鐘線,準(zhǔn)備開(kāi)始時(shí)鐘} /**************************************************************** 通訊停止信號(hào):當(dāng) SCL 是高電平時(shí) SDA線由低電平向高電平切換,表示通訊的停止。 *****************************************************************/void VL53L0X_IIC_stop(void) {IIC_SCL = 1;IIC_SDA = 0;IIC_Delay();IIC_SDA = 1; //通訊停止IIC_SCL = 0;IIC_Delay(); } /**************************************************************** //接收應(yīng)答信號(hào)函數(shù) *****************************************************************/uint8_t VL53L0X_IIC_Get_ack(void) {uint16_t CNT;IIC_SCL = 0; //拉低時(shí)鐘線。IIC_Delay();IIC_SCL = 1; //拉高時(shí)鐘線。while((IIC_SDA) && (CNT < 100) ){CNT++;if(CNT == 100){return 0;}}IIC_SCL = 0; //拉低時(shí)鐘線。IIC_Delay();return 1;} /**************************************************************** //發(fā)送應(yīng)答信號(hào)函數(shù) *****************************************************************/void VL53L0X_IIC_ACK(void) { IIC_SDA = 0; //拉低數(shù)據(jù)線,應(yīng)答IIC_SCL = 1; //產(chǎn)生第九個(gè)時(shí)鐘信號(hào)。IIC_Delay();IIC_SCL = 0; IIC_Delay(); } //非應(yīng)答void VL53L0X_IIC_NACK(void) { IIC_SDA = 1; //拉高數(shù)據(jù)線,非應(yīng)答IIC_SCL = 1; //產(chǎn)生第九個(gè)時(shí)鐘信號(hào)。IIC_Delay();IIC_SCL = 0; IIC_Delay(); }/**************************************************************** //向IIC總線寫入一個(gè)字節(jié)的數(shù)據(jù) *****************************************************************/void VL53L0X_IIC_write_byte(uint8_t Data) {uint8_t i;for(i=0;i<8;i++)//八位數(shù)據(jù){if((Data & 0x80) == 0x80){IIC_SDA = 1;}else{IIC_SDA = 0;}IIC_Delay();IIC_SCL = 1; //一個(gè)時(shí)鐘信號(hào)送入數(shù)據(jù)IIC_Delay();IIC_SCL = 0;IIC_Delay();Data = Data << 1;//數(shù)據(jù)左移一位,把次高位放在最高位,為寫入次高位做準(zhǔn)備}IIC_SDA = 0; //應(yīng)答處理前拉低,跳過(guò)應(yīng)答IIC_Delay();VL53L0X_IIC_Get_ack(); } /**************************************************************** //從IIC總線讀取一個(gè)字節(jié)的數(shù)據(jù)函數(shù) *****************************************************************/uint8_t VL53L0X_IIC_read_byte(void) {uint8_t i;uint8_t Data = 0; //定義一個(gè)緩沖寄存器。IIC_SCL = 0; //先拉低時(shí)鐘線IIC_SDA = 1; //再拉高數(shù)據(jù)線for(i = 0;i < 8;i++){Data = Data<<1; //將緩沖字節(jié)的數(shù)據(jù)左移一位,準(zhǔn)備讀取數(shù)據(jù)。IIC_SCL = 1; //拉高時(shí)鐘線,開(kāi)始讀取下一位數(shù)據(jù)IIC_Delay();if(IIC_SDA == 1) //如果數(shù)據(jù)線為高平電平。{Data = Data|0x01; //則給緩沖字節(jié)的最低位寫1。}IIC_SCL = 0; //拉低時(shí)鐘線,一位讀取完成IIC_Delay();}return Data; //返回讀取的一個(gè)字節(jié)數(shù)據(jù)。}

四、部分代碼說(shuō)明

1、接線引腳定義

需要自定義引腳可在此處更改,STM32要自定義引腳的話也要注意引腳時(shí)鐘使能的更改

1.1、STC89C52RC+VL53L0X模塊

//VL53L0X模塊引腳定義 IIC: sbit IIC_SDA = P1^0; //數(shù)據(jù)線 sbit IIC_SCL = P1^1; //時(shí)鐘線UART: CT(TX) ---------------P3.0 DR(RX)----------------P3.1//OLED0.96模塊引腳定義 sbit SCL=P1^3; //串行時(shí)鐘 sbit SDA=P1^2; //串行數(shù)據(jù)

1.2、STM32F103C8T6+VL53L0X模塊

//VL53L0X模塊引腳定義 IIC: #define IIC_SDA_PIN GPIO_Pin_8 // #define IIC_SCL_PIN GPIO_Pin_9 // #define IIC_SDA_H GPIO_SetBits(GPIOB,IIC_SDA_PIN) #define IIC_SDA_L GPIO_ResetBits(GPIOB,IIC_SDA_PIN) #define IIC_SCL_H GPIO_SetBits(GPIOB,IIC_SCL_PIN) #define IIC_SCL_L GPIO_ResetBits(GPIOB,IIC_SCL_PIN) UART: #define DEBUG_USART2_TX_GPIO_PORT GPIOA #define DEBUG_USART2_TX_GPIO_PIN GPIO_Pin_2 #define DEBUG_USART2_RX_GPIO_PORT GPIOA #define DEBUG_USART2_RX_GPIO_PIN GPIO_Pin_3//OLED0.96模塊引腳定義 /*STM32F103C8T6芯片的硬件I2C: PB6 -- SCL; PB7 -- SDA */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;//I2C必須開(kāi)漏輸出 GPIO_Init(GPIOB, &GPIO_InitStructure);

五、基礎(chǔ)知識(shí)學(xué)習(xí)與相關(guān)資料下載

1、STC89C52RC程序下載 直戳跳轉(zhuǎn)

2、STM32F103C8T6程序下載
(1)串口下載 直戳跳轉(zhuǎn)
(2)ST-LINK下載 直戳跳轉(zhuǎn)
(3)J-LINK下載 直戳跳轉(zhuǎn)
(4)DAP-LINK下載 直戳跳轉(zhuǎn)

3、OLED0.96程序說(shuō)明 直戳跳轉(zhuǎn)

4、串口助手下載與使用
(1)安信可調(diào)試助手使用 直戳跳轉(zhuǎn)
(2) sscom33串口調(diào)試助手使用 直戳跳轉(zhuǎn)
(3)STC-ISP串口調(diào)試助手使用 直戳跳轉(zhuǎn)

六、視頻效果展示與程序資料獲取

視頻連接 直戳跳轉(zhuǎn)
資料獲取 ( 滑到最后添加個(gè)人號(hào))

七、注意事項(xiàng)

1、VCC GND請(qǐng)勿接反,接反易燒
2、OLED顯示異常時(shí),排除接線接觸不良

八、接線說(shuō)明

STC89C52RC

UART:

/************************************************************************************ // 生成日期 : 2021-6-21 // 最近修改 : 2021-11-21 // 功能描述 : VL53L0X模塊(UART)測(cè)試程序 // 測(cè)試條件 : STC89C52RC 晶振11.0592 接線 VL53L0X(UART)--------------------------STC89C52RC VCC------------------------------------5V GND------------------------------------GND CT(TX) --------------------------------P3.0 DR(RX)---------------------------------P3.1OLED0.96(IIC) -------------------------STC89C52RC VCC------------------------------------5V GND------------------------------------GND SCL------------------------------------P1^3 SDA------------------------------------P1^2 *************************************************************************************/

IIC:

/************************************************************************************ // 生成日期 : 2021-6-21 // 最近修改 : 2021-11-21 // 功能描述 : VL53L0X模塊(IIC)測(cè)試程序 // 測(cè)試條件 : STC89C52RC 晶振11.0592 接線 VL53L0X (IIC)--------------------------STC89C52RC VCC------------------------------------5V GND------------------------------------GND CT(SCL)--------------------------------P1.1 DR(SDA)--------------------------------P1.0OLED0.96(IIC) -------------------------STC89C52RC VCC------------------------------------5V GND------------------------------------GND SCL------------------------------------P1.3 SDA------------------------------------P1.2 *************************************************************************************/

STM32F103C8T6

UART:

/************************************************************************************ // 生成日期 : 2021-6-21 // 最近修改 : 2021-11-21 // 功能描述 : VL53L0X模塊(UART)測(cè)試程序 // 測(cè)試條件 : STM32F103C8T6 晶振8M 系統(tǒng)時(shí)鐘72M 接線 VL53L0X模塊(UART)----------------------STM32F103C8T6 VCC------------------------------------5V GND------------------------------------GND CT(TX) --------------------------------PA3 DR(RX)---------------------------------PA2OLED0.96-------------------------------STM32F103C8T6 VCC------------------------------------3.3V GND------------------------------------GND SCL -----------------------------------PB6 SDA------------------------------------PB7 *************************************************************************************/

IIC:

/************************************************************************************ // 生成日期 : 2021-6-21 // 最近修改 : 2021-11-21 // 功能描述 : VL53L0X模塊(IIC)測(cè)試程序 // 測(cè)試條件 : STM32F103C8T6 晶振8M 系統(tǒng)時(shí)鐘72M 接線 VL53L0X模塊(IIC)-----------------------STM32F103C8T6 VCC------------------------------------5V GND------------------------------------GND CT(SCL) -------------------------------PB9 DR(SDA)--------------------------------PB8OLED0.96-------------------------------STM32F103C8T6 VCC------------------------------------3.3V GND------------------------------------GND SCL -----------------------------------PB6 SDA------------------------------------PB7 *************************************************************************************/

總結(jié)

以上是生活随笔為你收集整理的K_A12_022 基于STM32等单片机驱动VL53L0X模块 串口与OLED0.96双显示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。