亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
多個(gè)DS18B20同時(shí)工作的STM32源程序 GPIO輸入輸出
[打印本頁(yè)]
作者:
44556677
時(shí)間:
2017-11-10 15:21
標(biāo)題:
多個(gè)DS18B20同時(shí)工作的STM32源程序 GPIO輸入輸出
一個(gè)單片機(jī)帶4個(gè)18b20工作,數(shù)據(jù)通過(guò)串口輸出
注意:需要先把DS18B20接到 U16 這個(gè)接口,板子并沒(méi)有板載DS18B20
實(shí)驗(yàn)現(xiàn)象:1、串口打印出序列號(hào)和溫度
2、在打印的同時(shí),D3閃爍
GPIO寄存器描述
1、端口配置低寄存器(GPIOx_CRL)(x = A...E)
2、端口配置高寄存器(GPIOx_CRH)(x = A...E)
3、端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)(x = A...E)
這些位為只讀并只能以字(16位)的形式讀出。讀出的值為對(duì)應(yīng)I/O口的狀態(tài)。
4、端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)(x = A...E)
只能以字(16bit)的形式操作,復(fù)位值全是0。寫(xiě)0即輸出0,寫(xiě)1即輸出1。
5、端口位設(shè)置/清除寄存器(GPIOx_BSRR)(x = A...E)
高16bit寫(xiě)1用于清0,低16bit寫(xiě)1用于置位,同時(shí)寫(xiě)1的話(huà)低16bi有效。
6、端口位清除寄存器(GPIOx_BRR)(x = A...E)
低16位寫(xiě)1用于置位。
7、端口配置鎖定寄存器(GPIOx_LCKR)(x = A...E)
單片機(jī)源程序如下:
/**
******************************************************************************
* @file main.c
* @author fire
* @version V1.0
* @brief systick系統(tǒng)定時(shí)器
******************************************************************************
*
******************************************************************************
*/
#include "stm32f10x.h"
#include "bsp_SysTick.h"
#include "bsp_led.h"
#include "bsp_usart1.h"
#include "bsp_ds18b20.h"
/**
* @brief 主函數(shù)
* @param 無(wú)
* @retval 無(wú)
*/
int main(void)
{
uint8_t uc1, ucDs18b20Id1 [ 8 ];
uint8_t uc2, ucDs18b20Id2 [ 8 ];
uint8_t uc3, ucDs18b20Id3 [ 8 ];
uint8_t uc4, ucDs18b20Id4 [ 8 ];
/* 配置SysTick 為1us中斷一次 */
SysTick_Init();
USARTx_Config(); //初始化串口1
printf("\r\n this is a ds18b20 test demo \r\n");
while( 1 )
{
while( DS18B20_Init() )
printf("\r\n no ds18b20 exit \r\n");
printf("\r\n ds18b20 exit \r\n");
DS18B20_ReadId ( ucDs18b20Id1 ); // 讀取 DS18B20 的序列號(hào)
//printf("\r\nDS18B20的序列號(hào)是: 0x");
//for ( uc1 = 0; uc1 < 8; uc1 ++ ) // 打印 DS18B20 的序列號(hào) 1
//printf ( "%.2x", ucDs18b20Id1 [ uc1 ] );
printf ( "\r\n獲取傳感器一的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom ( ) ); // 打印通過(guò) DS18B20 序列號(hào)獲取的溫度值
Delay_ms(1000); /* 1s 讀取一次溫度值 */
while( DS18B20_Init2() )
DS18B20_ReadId2 ( ucDs18b20Id2 ); // 讀取 DS18B20 的序列號(hào)
//printf("\r\nDS18B20的序列號(hào)是: 0x");
//for ( uc2 = 0; uc2 < 8; uc2 ++ ) // 打印 DS18B20 的序列號(hào) 2
//printf ( "%.2x", ucDs18b20Id2 [ uc2 ] );
printf ( "\r\n獲取傳感器二的的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom2 ( ) ); // 打印通過(guò) DS18B20 序列號(hào)獲取的溫度值
Delay_ms(1000); /* 1s 讀取一次溫度值 */
while( DS18B20_Init3() )
DS18B20_ReadId3 ( ucDs18b20Id3 ); // 讀取 DS18B20 的序列號(hào)
//rintf("\r\nDS18B20的序列號(hào)是: 0x");
//for ( uc3 = 0; uc3 < 8; uc3 ++ ) // 打印 DS18B20 的序列號(hào) 3
//printf ( "%.2x", ucDs18b20Id3 [ uc3 ] );
printf ( "\r\n獲取傳感器三的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom3 ( ) ); // 打印通過(guò) DS18B20 序列號(hào)獲取的溫度值
Delay_ms(1000); /* 1s 讀取一次溫度值 */
while( DS18B20_Init4() )
DS18B20_ReadId4 ( ucDs18b20Id4 ); // 讀取 DS18B20 的序列號(hào)
//printf("\r\nDS18B20的序列號(hào)是: 0x");
//for ( uc4 = 0; uc4 < 8; uc4 ++ ) // 打印 DS18B20 的序列號(hào) 4
//printf ( "%.2x", ucDs18b20Id4 [ uc4 ] );
printf ( "\r\n獲取傳感器四的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom4 ( ) ); // 打印通過(guò) DS18B20 序列號(hào)獲取的溫度值
Delay_ms(1000); /* 1s 讀取一次溫度值 */
}
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
GPIO輸入輸出—DS18B20_多_好.rar
(332.78 KB, 下載次數(shù): 88)
2017-11-10 21:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
wcy1223
時(shí)間:
2017-12-2 21:11
4個(gè)ds18b20要怎么接,我找不到U16
作者:
三觀殘存
時(shí)間:
2018-5-14 12:04
好像對(duì)寄存器不太熟悉
作者:
poisonbee
時(shí)間:
2021-9-24 09:59
現(xiàn)在的你看你當(dāng)初寫(xiě)的代碼是不是想笑
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1