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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8723|回復: 1
打印 上一主題 下一主題
收起左側

miniSTM32F103使用DHT11溫度傳感器(教你改引腳)

[復制鏈接]
跳轉到指定樓層
樓主
自己在第一次使用溫度傳感器DHT11時,想不用正點原子的源程序的那個引腳,就自己改了,但是一直沒有成功,自己也移植很多次,但是都沒有成功,今天我來回給大家說說怎么改吧首先

//#define DHT11_IO_IN()  {GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=8<<0;}
//#define DHT11_IO_OUT() {GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=3<<0;}

#define DHT11_IO_IN()   {GPIOA->CRL&=0xFFFFF0FF;GPIOA->CRL|=0x00000800;}
#define DHT11_IO_OUT()  {GPIOA->CRL&=0XFFFF0FF;GPIOA->CRL|=0x00000300;}

在這里一定要改,因為你這里一旦沒有改變,就算后面你改了引腳那些,都不會起作用,所以還請多注意

其次這里的寫法使用的時寄存器,需要對著寄存器一步步的來改


單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "lcd.h"
  6. #include "ds18b20.h"  
  7. #include "dht11.h"

  8.   int main(void)
  9. {
  10.         u8 t=0;                           
  11.         u8 temperature;              
  12.         u8 humidity;               
  13.    u8  key = 0;
  14.         SystemInit();
  15.         delay_init();             //延時初始化
  16. //        NVIC_Configuration();
  17.         uart_init(9600);
  18.          LED_Init();
  19. KEY_Init();
  20.         LCD_Init();
  21.                   TIM3_PWM_Init(899,0);         //不分頻。PWM頻率=72000000/900=80Khz
  22.   
  23.          POINT_COLOR=RED;//設置字體為紅色
  24.         LCD_ShowString(60,50,200,16,16,"Mini STM32");        
  25.         LCD_ShowString(60,70,200,16,16,"DHT11 TEST");        
  26.         LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
  27.         LCD_ShowString(60,200,200,16,16,"modified by Leon");
  28.         LCD_ShowString(60,110,200,16,16,"2018/7/22");         
  29.          while(DHT11_Init())        //DHT11初始化        
  30.         {
  31.                 LCD_ShowString(60,130,200,16,16,"DHT11 Error");
  32.                 delay_ms(200);
  33.                 LCD_Fill(60,130,239,130+16,WHITE);
  34.                  delay_ms(200);
  35.         }                                                                  
  36.         LCD_ShowString(60,130,200,16,16,"DHT11 OK");
  37.         POINT_COLOR=BLUE;//設置字體為藍色
  38.          LCD_ShowString(60,150,200,16,16,"Temp:   . C");         
  39.          LCD_ShowString(60,170,200,16,16,"Humi:  %");         
  40.         while(1)
  41.         {           
  42.                  if(t%10==0)//每100ms讀取一次
  43.                 {                                                                          
  44.                         DHT11_Read_Data(&temperature,&humidity);                //讀取溫濕度值                                            
  45.                         LCD_ShowNum(60+40,150,temperature,2,16);                //顯示溫度                              
  46.                         LCD_ShowNum(60+40,170,humidity,2,16);                        //顯示濕度                    
  47.                 }                                   
  48.                
  49.                
  50.         

  51.                 key=KEY_Scan(0);                //得到鍵值
  52.                 switch(key)
  53.                 {                                 
  54.                         case KEY0_PRES:
  55.                                 LED0=!LED0;

  56.                                 break;
  57.                         case KEY1_PRES:
  58.                                 LED1=!LED1;
  59.                         

  60.                                 break;
  61.                         case WKUP_PRES:                                
  62.                                 LED0=!LED0;
  63.                                 LED1=!LED1;


  64.                                 break;
  65.                         default:
  66.                                 delay_ms(10);        
  67.                 }         
  68.                

  69.         }
  70. }
復制代碼

所有資料51hei提供下載:
mini stm32 f103rDHT11溫濕度實驗.7z (229.45 KB, 下載次數: 109)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:599678 發表于 2020-4-29 08:14 | 只看該作者
這種改變的方法極為不便。以IIC操作可以這樣改,先做好全局定義:
#define IIC_SDA_PORT    GPIOD
#define IIC_SDA_PIN       GPIO_Pin_4
#define IIC_SDA_SOUR    GPIO_PinSource4  
下面是STM32F1的配置方法
#if IIC_SDA_SOUR < 8   //PIN 0-7
#define SDA_IN()  {IIC_SDA_PORT->CRL&=(~((u32)15<<(IIC_SDA_SOUR*4)));\
                    IIC_SDA_PORT->CRL|=(u32)8<<(IIC_SDA_SOUR*4);}
#define SDA_OUT() {IIC_SDA_PORT->CRL&=(~((u32)15<<(IIC_SDA_SOUR*4)));\
                    IIC_SDA_PORT->CRL|=(u32)3<<(IIC_SDA_SOUR*4);}
#else                   //PIN 8-15
#define SDA_IN()  {IIC_SDA_PORT->CRH&=(~((u32)15<<((IIC_SDA_SOUR-8)*4)));\
                    IIC_SDA_PORT->CRH|=(u32)8<<((IIC_SDA_SOUR-8)*4);}
#define SDA_OUT() {IIC_SDA_PORT->CRH&=(~((u32)15<<((IIC_SDA_SOUR-8)*4)));\
                    IIC_SDA_PORT->CRH|=(u32)3<<((IIC_SDA_SOUR-8)*4);}
#endif
下面是F4的配置方法:
#define SDA_IN()  {IIC_SDA_PORT->MODER&=~(3<<(IIC_SDA_SOUR*2));\
                    IIC_SDA_PORT->MODER|=0<<IIC_SDA_SOUR*2;}
#define SDA_OUT() {IIC_SDA_PORT->MODER&=~(3<<(IIC_SDA_SOUR*2));\
                    IIC_SDA_PORT->MODER|=1<<IIC_SDA_SOUR*2;}

調整一個引腳,只需修改對應的全局宏定義即可。關注我,編程不迷路
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久成人国产 | 国产精品我不卡 | 亚洲精品一二区 | 欧美亚洲成人网 | 国产在线精品一区二区三区 | 亚洲狠狠爱一区二区三区 | 成人性视频免费网站 | 国产一区二区三区四区五区加勒比 | 日本中文字幕日韩精品免费 | 午夜精品福利视频 | 欧美在线a| 国产精品日韩欧美 | 成人午夜影院 | 日韩亚洲一区二区 | 国产精品久久久久久久久久免费看 | 超碰人人爱| 久久91精品国产一区二区 | 国产999精品久久久 午夜天堂精品久久久久 | 午夜天堂精品久久久久 | 国产精品视频网 | 中文字幕精品一区 | 日本一区二区三区视频在线 | 中文字幕在线看第二 | 欧美激情综合五月色丁香小说 | 黄色一级大片在线免费看产 | 国产精品久久久久久妇女6080 | 国产欧美日韩精品一区 | 欧美视频福利 | 一级欧美| 国产一区二区在线视频 | 国产精品久久久久久久久久妞妞 | 午夜免费观看网站 | 国产精品久久久久久吹潮 | 免费精品久久久久久中文字幕 | 青青久久久 | 91精品福利 | 国产欧美精品一区二区 | 性做久久久久久免费观看欧美 | 国产精品久久久久久一区二区三区 | 九九热精品在线 | 成人免费看黄 |