久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5527|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

多個DS18B20同時工作的STM32源程序 GPIO輸入輸出

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:246497 發(fā)表于 2017-11-10 15:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一個單片機(jī)帶4個18b20工作,數(shù)據(jù)通過串口輸出

注意:需要先把DS18B20接到 U16 這個接口,板子并沒有板載DS18B20

實驗現(xiàn)象:1、串口打印出序列號和溫度
          2、在打印的同時,D3閃爍

GPIO寄存器描述

1、端口配置低寄存器(GPIOx_CRL)(x = A...E)
2、端口配置高寄存器(GPIOx_CRH)(x = A...E)

3、端口輸入數(shù)據(jù)寄存器(GPIOx_IDR)(x = A...E)
   這些位為只讀并只能以字(16位)的形式讀出。讀出的值為對應(yīng)I/O口的狀態(tài)。
   
4、端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)(x = A...E)
   只能以字(16bit)的形式操作,復(fù)位值全是0。寫0即輸出0,寫1即輸出1。
   
5、端口位設(shè)置/清除寄存器(GPIOx_BSRR)(x = A...E)
   高16bit寫1用于清0,低16bit寫1用于置位,同時寫1的話低16bi有效。
   
6、端口位清除寄存器(GPIOx_BRR)(x = A...E)
   低16位寫1用于置位。
   
7、端口配置鎖定寄存器(GPIOx_LCKR)(x = A...E)

單片機(jī)源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @brief   systick系統(tǒng)定時器
  7.   ******************************************************************************
  8.   *
  9.   ******************************************************************************
  10.   */
  11.   
  12. #include "stm32f10x.h"
  13. #include "bsp_SysTick.h"
  14. #include "bsp_led.h"
  15. #include "bsp_usart1.h"
  16. #include "bsp_ds18b20.h"



  17. /**
  18.   * @brief  主函數(shù)
  19.   * @param  無  
  20.   * @retval 無
  21.   */
  22. int main(void)
  23. {       
  24.         uint8_t uc1, ucDs18b20Id1 [ 8 ];
  25.         uint8_t uc2, ucDs18b20Id2 [ 8 ];
  26.         uint8_t uc3, ucDs18b20Id3 [ 8 ];
  27.         uint8_t uc4, ucDs18b20Id4 [ 8 ];
  28.         /* 配置SysTick 為1us中斷一次 */
  29.         SysTick_Init();
  30.         USARTx_Config();        //初始化串口1

  31.        
  32.        
  33.        
  34.        
  35.         printf("\r\n this is a ds18b20 test demo \r\n");
  36.                         while( 1 )
  37.         {
  38.         while( DS18B20_Init() )       
  39.                
  40.        
  41.        
  42.         printf("\r\n no ds18b20 exit \r\n");
  43.         printf("\r\n ds18b20 exit \r\n");

  44.        
  45.         DS18B20_ReadId ( ucDs18b20Id1  );           // 讀取 DS18B20 的序列號
  46.         //printf("\r\nDS18B20的序列號是: 0x");
  47.         //for ( uc1 = 0; uc1 < 8; uc1 ++ )             // 打印 DS18B20 的序列號  1
  48.         //printf ( "%.2x", ucDs18b20Id1 [ uc1 ] );
  49.         printf ( "\r\n獲取傳感器一的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom (  ) );                // 打印通過 DS18B20 序列號獲取的溫度值       
  50.         Delay_ms(1000);                /* 1s 讀取一次溫度值 */

  51.        
  52.         while( DS18B20_Init2() )
  53.         DS18B20_ReadId2 ( ucDs18b20Id2  );           // 讀取 DS18B20 的序列號
  54.         //printf("\r\nDS18B20的序列號是: 0x");
  55.         //for ( uc2 = 0; uc2 < 8; uc2 ++ )             // 打印 DS18B20 的序列號  2
  56.         //printf ( "%.2x", ucDs18b20Id2 [ uc2 ] );
  57.         printf ( "\r\n獲取傳感器二的的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom2 (  ) );                // 打印通過 DS18B20 序列號獲取的溫度值       
  58.         Delay_ms(1000);                /* 1s 讀取一次溫度值 */
  59.        
  60.        
  61.        
  62.         while( DS18B20_Init3() )
  63.         DS18B20_ReadId3 ( ucDs18b20Id3  );           // 讀取 DS18B20 的序列號
  64.         //rintf("\r\nDS18B20的序列號是: 0x");
  65.         //for ( uc3 = 0; uc3 < 8; uc3 ++ )             // 打印 DS18B20 的序列號  3
  66.         //printf ( "%.2x", ucDs18b20Id3 [ uc3 ] );
  67.         printf ( "\r\n獲取傳感器三的溫度: %.1f\r\n", DS18B20_GetTemp_SkipRom3 (  ) );                // 打印通過 DS18B20 序列號獲取的溫度值       
  68.         Delay_ms(1000);                /* 1s 讀取一次溫度值 */
  69.        
  70.        
  71.         while( DS18B20_Init4() )
  72.   DS18B20_ReadId4 ( ucDs18b20Id4  );           // 讀取 DS18B20 的序列號
  73.         //printf("\r\nDS18B20的序列號是: 0x");
  74.         //for ( uc4 = 0; uc4 < 8; uc4 ++ )             // 打印 DS18B20 的序列號  4
  75.         //printf ( "%.2x", ucDs18b20Id4 [ uc4 ] );       
  76.         printf ( "\r\n獲取傳感器四的溫度: %.1f\r\n",  DS18B20_GetTemp_SkipRom4 (  ) );                // 打印通過 DS18B20 序列號獲取的溫度值       
  77.         Delay_ms(1000);        /* 1s 讀取一次溫度值 */
  78.        
  79. }
  80. ……………………

  81. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
GPIO輸入輸出—DS18B20_多_好.rar (332.78 KB, 下載次數(shù): 88)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:256568 發(fā)表于 2017-12-2 21:11 | 只看該作者
4個ds18b20要怎么接,我找不到U16
回復(fù)

使用道具 舉報

板凳
ID:252860 發(fā)表于 2018-5-14 12:04 | 只看該作者
好像對寄存器不太熟悉
回復(fù)

使用道具 舉報

地板
ID:632994 發(fā)表于 2021-9-24 09:59 | 只看該作者
現(xiàn)在的你看你當(dāng)初寫的代碼是不是想笑
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人一区二区三区吃奶 | 国产日韩一区 | 午夜在线| 嫩草视频入口 | 久久久久久91 | 男人的天堂亚洲 | 香蕉大人久久国产成人av | 免费在线一区二区三区 | 精品在线免费观看视频 | 国产成人免费网站 | 国产91九色 | 久久久久亚洲精品 | 国产精品有限公司 | 欧美日韩免费在线 | 日韩国产在线 | 久久99蜜桃综合影院免费观看 | 久久国产精品一区二区三区 | 成人a视频片观看免费 | 亚洲精品福利视频 | 亚洲欧美日韩在线不卡 | 特黄特色大片免费视频观看 | www网站在线观看 | 日日碰碰 | 91国内产香蕉| 欧美成人精品一区二区三区 | 亚洲国产成人av好男人在线观看 | 亚洲国产高清高潮精品美女 | 免费成人av网站 | 久久久成人网 | 精品国产第一区二区三区 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 在线免费观看亚洲 | 欧美成人精品一区二区男人看 | 成人精品视频99在线观看免费 | 伊人伊人 | www.99re5.com| 免费毛片网站在线观看 | 中国一级特黄真人毛片免费观看 | 欧美性网站 | 久久天天 | 免费毛片www com cn|