目录

  • 前言
    • 代码下载:
    • 功能介绍:
  • 接线
    • DS18B20
    • DHT11
  • 效果图
    • 普通环境
      • 普通版main.c
      • 升级版
    • 哈热气
      • 普通版
      • 升级版
    • 搓手捂热
  • 核心代码
    • 普通版main.c
    • 升级版main.c
    • bsp_dht11.h
    • bsp_dht11.c
    • ds18b20.h
    • ds18b20.c
  • 参考用图
    • DHT11
    • DS18B20

前言

参考资料:
    YL-47 DHT11 使用说明–.pdf
    DHT11说明书最新版–.pdf
    DHT11模块–.pdf
    DHT11模块使用说明书
    DS18B20.pdf
    ds18b20中文资料详解
源码参考:
    野火dht11温湿度传感器测试实验
    正点原子TFTLCD显示实验
    正点原子18B20数字温度传感器实验
    正点原子按键实验
    正点原子蜂鸣器实验
开发板:正点原子 STM32F103 精英版
语言:C语言
开发环境:Keil5
开发板使用了 LED KEY BEEP TFTLCD USART DHT11模块 DS18B20模块

代码下载:

码云 GitHub

功能介绍:

1、LED0约2秒一闪,表示程序运行中。
2、LCD和串口显示实时的温湿度,2秒一循环。上面一个temp是DS18B20,下面的是DHT11。%RH 相对湿度, CEL 摄氏度(ps:不接入DS18B20的话会循环等待)
3、按键都会翻转LED1,KEY1 开启报警模式,KEY0关闭报警模式。(按键10ms一巡检)
4、报警模式下:当温度不低于85摄氏度或者湿度不低于90%RH,蜂鸣器报警。可以通过按下KEY0关闭报警模式。(报警串口会有打印,LCD也会有提示)

接线

DS18B20

VCC -》 3.3V
DQ -》 PG11
GND -》 GND

DHT11

VCC -》 3.3V
DATA -》 PB10
GND -》 GND

效果图

普通环境

普通版main.c

升级版


哈热气

普通版

我这哈了3下

然后持续手扇风

ok,温湿度降下来了。

升级版

搓手捂热

手有汗,湿度也上来了
(下图是旧的,仅供参考)


最后本来应该整个打火机的,可惜没有。夹咯吱窝下(仅DHT11 旧图)

最后来个鼻息

核心代码

普通版main.c

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "bsp_dht11.h"
#include "ds18b20.h"DHT11_Data_TypeDef DHT11_Data;/*DS18B20供电电压:3 - 5.5V接线:DQ -》 PG11 (IO口)DHT11供电电压:3.3 - 5V接线:DATA -》 PB10 (IO口)
*/int main(void)
{u8 str[100] = {0};// DS18B20用变量short temperature;delay_init();             //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);     //串口初始化为115200LED_Init();                //LED端口初始化LCD_Init();               // LCD初始化DHT11_GPIO_Config();     // 初始化DTT11的引脚 DATA -> PB10LED0 = 0;POINT_COLOR = WHITE;BACK_COLOR = BLACK;LCD_Clear(BLACK); while(DS18B20_Init()) //DS18B20初始化    {LCD_ShowString(10,70,200,16,16,"DS18B20 Error");delay_ms(200);LCD_Fill(10,70,239,130+16,WHITE);delay_ms(200);}LCD_ShowString(10,90,200,16,16,"Temp:   . CEL"); while(1) {POINT_COLOR = WHITE;// DS18B20temperature = DS18B20_Get_Temp();    if(temperature < 0){LCD_ShowChar(10+40, 90, '-', 16, 0);          //显示负号temperature = -temperature;                      //转为正数}else LCD_ShowChar(10+40,90,' ', 16, 0);           //去掉负号LCD_ShowNum(10+40+8, 90, temperature/10, 2, 16);    //显示正数部分        LCD_ShowNum(10+40+32, 90,temperature%10, 1, 16);  //显示小数部分printf("温度为 %u.%u℃ \r\n",temperature/10, temperature%10);// DHT11// 调用Read_DHT11读取温湿度,若成功则输出该信息if( Read_DHT11(&DHT11_Data) == SUCCESS){printf("湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n", DHT11_Data.humi_int, DHT11_Data.humi_deci, DHT11_Data.temp_int, DHT11_Data.temp_deci);sprintf((char*)str, "HUM: %d.%d%%RH  ", DHT11_Data.humi_int, DHT11_Data.humi_deci);LCD_ShowString(10,130,200,24,24, str);sprintf((char*)str, "TEMP: %d.%dCEL ", DHT11_Data.temp_int, DHT11_Data.temp_deci);LCD_ShowString(10,170,200,24,24, str);//printf("\r\n 湿度:%d,温度:%d \r\n" ,DHT11_Data.humi_int,DHT11_Data.temp_int);}else{printf("Read DHT11 ERROR!\r\n");}LED0 = !LED0;// 采样周期不得低于1秒,否则会读取失败delay_ms(1000);delay_ms(1000);}
}

升级版main.c

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "bsp_dht11.h"
#include "ds18b20.h"
#include "key.h"
#include "beep.h"DHT11_Data_TypeDef DHT11_Data;/*DS18B20供电电压:3 - 5.5V接线:DQ -》 PG11 (IO口)DHT11供电电压:3.3 - 5V接线:DATA -》 PB10 (IO口)
*/int main(void)
{u8 str[100] = {0};// 蜂鸣器报警标志位u8 flag = 0;// 报警模式u8 mode = 0;vu8 key = 0;// 循环计数u8 time = 0;// DS18B20用变量short temperature;delay_init();            //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);      //串口初始化为115200LED_Init();               //LED端口初始化LCD_Init();               // LCD初始化KEY_Init();                // KEY初始化BEEP_Init();           // BEEP初始化DHT11_GPIO_Config();     // 初始化DTT11的引脚 DATA -> PB10LED0 = 0;LED1 = 0;POINT_COLOR = WHITE;BACK_COLOR = BLACK;LCD_Clear(BLACK); while(DS18B20_Init())  //DS18B20初始化    {LCD_ShowString(10,70,200,16,16,"DS18B20 Error");delay_ms(200);LCD_Fill(10,70,239,130+16, BLACK);delay_ms(200);}LCD_ShowString(10,90,200,16,16,"Temp:   . CEL"); LCD_ShowString(10,220,220,12,12,"TOUCH KEY0 CLOSE ALARM MODE"); LCD_ShowString(10,240,220,12,12,"TOUCH KEY1 OPEN ALARM MODE"); POINT_COLOR = RED;LCD_ShowString(10,260,100,12,12,"ALARM MODE: OFF"); POINT_COLOR = WHITE;while(1) {flag = 2;POINT_COLOR = WHITE;key = KEY_Scan(0); //得到键值if (key){switch (key){case WKUP_PRES: LED1 = !LED1;break;// KEY1 按下 开启报警模式case KEY1_PRES: mode = 1;LED1 = !LED1;LCD_ShowString(80,260,100,12,12,"ON  "); printf("开启报警模式\r\n");break;// KEY1 按下 关闭报警模式case KEY0_PRES: mode = 0;LED1 = !LED1;LCD_ShowString(80,260,100,12,12,"OFF "); printf("关闭报警模式\r\n");break;}}// 约2秒一次if(time % 200 == 0){// DS18B20temperature = DS18B20_Get_Temp();  if(temperature < 0){LCD_ShowChar(10+40, 90, '-', 16, 0);          //显示负号temperature = -temperature;                      //转为正数}else LCD_ShowChar(10+40,90,' ', 16, 0);           //去掉负号LCD_ShowNum(10+40+8, 90, temperature/10, 2, 16);    //显示正数部分        LCD_ShowNum(10+40+32, 90,temperature%10, 1, 16);  //显示小数部分printf("温度为 %u.%u℃ \r\n",temperature/10, temperature%10);// DHT11// 调用Read_DHT11读取温湿度,若成功则输出该信息 采样周期不得低于1秒,否则会读取失败if( Read_DHT11(&DHT11_Data) == SUCCESS){printf("湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n", DHT11_Data.humi_int, DHT11_Data.humi_deci, DHT11_Data.temp_int, DHT11_Data.temp_deci);sprintf((char*)str, "HUM: %d.%d%%RH  ", DHT11_Data.humi_int, DHT11_Data.humi_deci);LCD_ShowString(10,130,200,24,24, str);sprintf((char*)str, "TEMP: %d.%dCEL ", DHT11_Data.temp_int, DHT11_Data.temp_deci);LCD_ShowString(10,170,200,24,24, str);//printf("\r\n 湿度:%d,温度:%d \r\n" ,DHT11_Data.humi_int,DHT11_Data.temp_int);}else{printf("Read DHT11 ERROR!\r\n");}// 判断温度是否不低于85摄氏度if(temperature >= 850 || DHT11_Data.temp_int >= 85){printf("温度过高!!!\r\n");flag++;}else{flag--;}// 判断湿度是否高于90%RHif(DHT11_Data.humi_int >= 90){printf("湿度过高!!!\r\n");flag++;}else{flag--;}// 判断是否需要报警if(flag >= 2 && mode == 1){LCD_ShowString(10,200,200,16,16,"BEEP!!!(>__<)"); printf("BEEP!!!(>__<)\r\n");BEEP = 1;}if(flag < 2){LCD_ShowString(10,200,200,16,16,"     (- v -)    "); BEEP = 0;}// 重新置零time = 0;LED0 = !LED0;}if(mode == 0){LCD_ShowString(10,200,200,16,16,"     (- v -)    "); BEEP = 0;}time++;delay_ms(10);}
}

bsp_dht11.h

#ifndef __DHT11_H
#define __DHT11_H#include "stm32f10x.h"
#include "delay.h"#define HIGH  1
#define LOW   0#define DHT11_CLK     RCC_APB2Periph_GPIOB
#define DHT11_PIN     GPIO_Pin_10
#define DHT11_PORT      GPIOB //带参宏,可以像内联函数一样使用,输出高电平或低电平
#define DHT11_DATA_OUT(a)   if (a)  \GPIO_SetBits(GPIOB,GPIO_Pin_10);\else      \GPIO_ResetBits(GPIOB,GPIO_Pin_10)//读取引脚的电平
#define  DHT11_DATA_IN()       GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)typedef struct
{uint8_t  humi_int;     //湿度的整数部分uint8_t  humi_deci;        //湿度的小数部分uint8_t  temp_int;     //温度的整数部分uint8_t  temp_deci;        //温度的小数部分uint8_t  check_sum;        //校验和}DHT11_Data_TypeDef;void DHT11_GPIO_Config(void);
static void DHT11_Mode_IPU(void);
static void DHT11_Mode_Out_PP(void);
uint8_t Read_DHT11(DHT11_Data_TypeDef *DHT11_Data);
static uint8_t Read_Byte(void);#endif /* __DHT11_H */

bsp_dht11.c

#include "bsp_dht11.h"/** 函数名:DHT11_GPIO_Config* 描述  :配置DHT11用到的I/O口* 输入  :无* 输出  :无*/
void DHT11_GPIO_Config(void)
{       /*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启DHT11_PORT的外设时钟*/RCC_APB2PeriphClockCmd(DHT11_CLK, ENABLE); /*选择要控制的DHT11_PORT引脚*/                                                               GPIO_InitStructure.GPIO_Pin = DHT11_PIN;    /*设置引脚模式为通用推挽输出*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   /*设置引脚速率为50MHz */   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*调用库函数,初始化DHT11_PORT*/GPIO_Init(DHT11_PORT, &GPIO_InitStructure);         /* 拉高GPIOB10  */GPIO_SetBits(DHT11_PORT, GPIO_Pin_10);
}/** 函数名:DHT11_Mode_IPU* 描述  :使DHT11-DATA引脚变为上拉输入模式* 输入  :无* 输出  :无*/
static void DHT11_Mode_IPU(void)
{GPIO_InitTypeDef GPIO_InitStructure;/*选择要控制的DHT11_PORT引脚*/ GPIO_InitStructure.GPIO_Pin = DHT11_PIN;/*设置引脚模式为浮空输入模式*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; /*调用库函数,初始化DHT11_PORT*/GPIO_Init(DHT11_PORT, &GPIO_InitStructure);
}/** 函数名:DHT11_Mode_Out_PP* 描述  :使DHT11-DATA引脚变为推挽输出模式* 输入  :无* 输出  :无*/
static void DHT11_Mode_Out_PP(void)
{GPIO_InitTypeDef GPIO_InitStructure;/*选择要控制的DHT11_PORT引脚*/                                                            GPIO_InitStructure.GPIO_Pin = DHT11_PIN;    /*设置引脚模式为通用推挽输出*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   /*设置引脚速率为50MHz */   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/*调用库函数,初始化DHT11_PORT*/GPIO_Init(DHT11_PORT, &GPIO_InitStructure);
}/* * 从DHT11读取一个字节,MSB先行*/
static uint8_t Read_Byte(void)
{uint8_t i, temp=0;for(i=0;i<8;i++)    {  /*每bit以50us低电平标置开始,轮询直到从机发出 的50us 低电平 结束*/  while(DHT11_DATA_IN()==Bit_RESET);/*DHT11 以26~28us的高电平表示“0”,以70us高电平表示“1”,*通过检测 x us后的电平即可区别这两个状 ,x 即下面的延时 */delay_us(40); //延时x us 这个延时需要大于数据0持续的时间即可         if(DHT11_DATA_IN()==Bit_SET)/* x us后仍为高电平表示数据“1” */{/* 等待数据1的高电平结束 */while(DHT11_DATA_IN()==Bit_SET);temp|=(uint8_t)(0x01<<(7-i));  //把第7-i位置1,MSB先行 }else   // x us后为低电平表示数据“0”{              temp&=(uint8_t)~(0x01<<(7-i)); //把第7-i位置0,MSB先行}}return temp;
}
/** 一次完整的数据传输为40bit,高位先出* 8bit 湿度整数 + 8bit 湿度小数 + 8bit 温度整数 + 8bit 温度小数 + 8bit 校验和 */
uint8_t Read_DHT11(DHT11_Data_TypeDef *DHT11_Data)
{  /*输出模式*/DHT11_Mode_Out_PP();/*主机拉低*/DHT11_DATA_OUT(LOW);/*延时18ms*/delay_ms(18);/*总线拉高 主机延时30us*/DHT11_DATA_OUT(HIGH); delay_us(30);   //延时30us/*主机设为输入 判断从机响应信号*/ DHT11_Mode_IPU();/*判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行*/   if(DHT11_DATA_IN() == Bit_RESET)     {/*轮询直到从机发出 的80us 低电平 响应信号结束*/  while(DHT11_DATA_IN()==Bit_RESET);/*轮询直到从机发出的 80us 高电平 标置信号结束*/while(DHT11_DATA_IN()==Bit_SET);/*开始接收数据*/   DHT11_Data->humi_int= Read_Byte();DHT11_Data->humi_deci= Read_Byte();DHT11_Data->temp_int= Read_Byte();DHT11_Data->temp_deci= Read_Byte();DHT11_Data->check_sum= Read_Byte();/*读取结束,引脚改为输出模式*/DHT11_Mode_Out_PP();/*主机拉高*/DHT11_DATA_OUT(HIGH);/*检查读取的数据是否正确*/if(DHT11_Data->check_sum == DHT11_Data->humi_int + DHT11_Data->humi_deci + DHT11_Data->temp_int+ DHT11_Data->temp_deci)return SUCCESS;else return ERROR;}else{        return ERROR;}
}

ds18b20.h

#ifndef __DS18B20_H
#define __DS18B20_H
#include "sys.h"
//
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK战舰STM32开发板
//DS18B20驱动代码
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2012/9/12
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved
////IO方向设置
#define DS18B20_IO_IN()  {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}
#define DS18B20_IO_OUT() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;}
IO操作函数
#define DS18B20_DQ_OUT PGout(11) //数据端口 PA0
#define DS18B20_DQ_IN  PGin(11)  //数据端口 PA0 u8 DS18B20_Init(void);//初始化DS18B20
short DS18B20_Get_Temp(void);//获取温度
void DS18B20_Start(void);//开始温度转换
void DS18B20_Write_Byte(u8 dat);//写入一个字节
u8 DS18B20_Read_Byte(void);//读出一个字节
u8 DS18B20_Read_Bit(void);//读出一个位
u8 DS18B20_Check(void);//检测是否存在DS18B20
void DS18B20_Rst(void);//复位DS18B20
#endif

ds18b20.c

#include "ds18b20.h"
#include "delay.h"
//
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK精英STM32开发板
//DS18B20驱动代码
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2012/9/12
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved
////复位DS18B20
void DS18B20_Rst(void)
{                 DS18B20_IO_OUT();     //SET PG11 OUTPUTDS18B20_DQ_OUT=0;     //拉低DQdelay_us(750);        //拉低750usDS18B20_DQ_OUT=1;     //DQ=1 delay_us(15);       //15US
}
//等待DS18B20的回应
//返回1:未检测到DS18B20的存在
//返回0:存在
u8 DS18B20_Check(void)
{   u8 retry=0;DS18B20_IO_IN();    //SET PG11 INPUT     while (DS18B20_DQ_IN&&retry<200){retry++;delay_us(1);};    if(retry>=200)return 1;else retry=0;while (!DS18B20_DQ_IN&&retry<240){retry++;delay_us(1);};if(retry>=240)return 1;      return 0;
}
//从DS18B20读取一个位
//返回值:1/0
u8 DS18B20_Read_Bit(void)
{u8 data;DS18B20_IO_OUT();  //SET PG11 OUTPUTDS18B20_DQ_OUT=0; delay_us(2);DS18B20_DQ_OUT=1; DS18B20_IO_IN(); //SET PG11 INPUTdelay_us(12);if(DS18B20_DQ_IN)data=1;else data=0;  delay_us(50);           return data;
}
//从DS18B20读取一个字节
//返回值:读到的数据
u8 DS18B20_Read_Byte(void)
{        u8 i,j,dat;dat=0;for (i=1;i<=8;i++) {j=DS18B20_Read_Bit();dat=(j<<7)|(dat>>1);}                          return dat;
}
//写一个字节到DS18B20
//dat:要写入的字节
void DS18B20_Write_Byte(u8 dat)     {             u8 j;u8 testb;DS18B20_IO_OUT();   //SET PG11 OUTPUT;for (j=1;j<=8;j++) {testb=dat&0x01;dat=dat>>1;if (testb) {DS18B20_DQ_OUT=0;   // Write 1delay_us(2);                            DS18B20_DQ_OUT=1;delay_us(60);             }else {DS18B20_DQ_OUT=0; // Write 0delay_us(60);             DS18B20_DQ_OUT=1;delay_us(2);                          }}
}
//开始温度转换
void DS18B20_Start(void)
{                                          DS18B20_Rst();      DS18B20_Check();  DS18B20_Write_Byte(0xcc);  // skip romDS18B20_Write_Byte(0x44);    // convert
} //初始化DS18B20的IO口 DQ 同时检测DS的存在
//返回1:不存在
//返回0:存在
u8 DS18B20_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);  //使能PORTG口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;               //PORTG.11 推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOG, &GPIO_InitStructure);GPIO_SetBits(GPIOG,GPIO_Pin_11);    //输出1DS18B20_Rst();return DS18B20_Check();
}
//从ds18b20得到温度值
//精度:0.1C
//返回值:温度值 (-550~1250)
short DS18B20_Get_Temp(void)
{u8 temp;u8 TL,TH;short tem;DS18B20_Start ();           // ds1820 start convertDS18B20_Rst();DS18B20_Check();    DS18B20_Write_Byte(0xcc);  // skip romDS18B20_Write_Byte(0xbe);    // convert      TL=DS18B20_Read_Byte();    // LSB   TH=DS18B20_Read_Byte();   // MSB  if(TH>7){TH=~TH;TL=~TL; temp=0;                   //温度为负  }else temp=1;              //温度为正        tem=TH;                  //获得高八位tem<<=8;    tem+=TL;                    //获得底八位tem=(float)tem*0.625;       //转换     if(temp)return tem;        //返回温度值else return -tem;
}

参考用图

DHT11




DS18B20





STM32F103+DHT11模块+DS18B20模块 显示实时温湿度并高温高湿报警相关推荐

  1. 6. 毕业设计温湿度监控系统(ESP8266 + DHT11 +OLED 实时上传温湿度数据给公网服务器并在OLED显示屏上显示实时温湿度)

    文章目录 硬件环境 软件环境 1. WiFi联网和HttpPost配置 2. DHT11温湿度读取和OLED显示配置 3. Web服务器配置(用于接收HTTP数据请求) 实验过程 1. ESP8266 ...

  2. 用STM32F103达成基于I2C协议的AHT20温湿度传感器和OLED屏显示汉字

    目录 一 I2C协议简介 硬件I2C与软件I2C 二 代码和ATH20芯片实现温湿度的串口显示 三 用stm32f103芯片的SPI和IIC接口接上OLED屏显示中文姓名温湿度 1 先用文字字模生成器 ...

  3. html中模块怎么创建,在Joomla中创建一个自定义HTML模块,不显示

    我有几个Joomla!我感到有信心的网站.我的Joomla!网站有一个artisteer模板. 我最近做了一个"戳出"的图片,突出了纸张的边缘,并展示了一个android" ...

  4. STM32F103驱动VL53L0X激光测距模块

    STM32F103驱动VL53L0X激光测距模块 简介 引脚定义 STM32F103ZET6开发板与VL53L0X模块接线 测试代码 实验结果 简介 TOF 是飞行时间(Tlme of Flight) ...

  5. 51单片机DS18B20+DS1302+LCD12864实时显示时间日期温度

    文章目录 介绍 Proteus仿真运行效果 源程序 主函数 DS1302时钟函数 DS18B20函数 LCD12864(不带字库) sharing函数 mine头文件 介绍 DS18B20采集温度 D ...

  6. boost::math模块实现图表显示使用 Lambert W 函数计算电流的测试程序

    boost::math模块实现图表显示使用 Lambert W 函数计算电流的测试程序 实现功能 C++实现代码 实现功能 boost::math模块实现图表显示使用 Lambert W 函数计算电流 ...

  7. python单行动态刷新不了_python 解决tqdm模块不能单行显示的问题

    python 解决tqdm模块不能单行显示的问题 OS: Windows 10 IDE: Anaconda Spyder (Python3.6) 代码如下: from tqdm import tqdm ...

  8. python progressbar 倒计时_Python使用progressbar模块实现的显示进度条功能

    本文实例讲述了Python使用progressbar模块实现的显示进度条功能.分享给大家供大家参考,具体如下: progressbar安装: pip install progressbar 用法一 # ...

  9. 嵌入式单片机基础篇(二十七)之Stm32F103单片机给蓝牙模块发送AT指令程序

    Stm32F103单片机给蓝牙模块发送AT指令程序 #include "stm32f10x.h" #include "string.h" #include &q ...

最新文章

  1. 怎么一个好的短信验证码接口接入到自己的企业网站和APP程序当中选择
  2. [转]你在修佛,还是在修魔
  3. postgresql根据字符分割数据为多列
  4. Linux两个进程交换信息,如何在Linux中的进程之间交换二进制数据
  5. 2017年第八届蓝桥杯 - 国赛 - C/C++大学B组 - A. 36进制
  6. C#语言使用多态(接口与override) ——帮您剔除对面向对象多态性的疑惑
  7. 小米mysql安装教程_小米 SOAR 开源SQL优化工具安装
  8. MAC共享目录让WINDOWS访问
  9. Office 2007中的config.xml个性定制说明
  10. css字体库免费下载使用(带网址)
  11. 2020年最新世界地图_2020世界地图下载
  12. 有道词典pc离线包打包下载_【超福利】安卓手机上最好用的离线词典
  13. 自己收集的全国行政区划,具体到县级,不包括过直辖市和特别行政区
  14. 未来教育计算机题库三合一,未来教育-全国计算机等级考试真考题库、高频考点、模拟考场三合一(二级MS Office高级应用)...
  15. linux安装wine
  16. 蓝牙耳机Priority设置流程
  17. CV 经典主干网络 (Backbone) 系列: 开篇
  18. Hibernate【映射】续篇
  19. ELK7.1.1之插件安装
  20. 改变的不仅仅是货币——区块链技术的深层意义

热门文章

  1. HTML-基础知识总结与快速回顾
  2. Visual C++实现贪吃蛇游戏项目实战三:核心算法设计与实现(附源码和资源 可用于大作业)
  3. STM32+MPU6050设计便携式Mini桌面时钟(自动调整时间显示方向)
  4. 郑州市人才交流中心档案管理处
  5. php旅行社系统开题报告,旅行社管理系统毕业及设计开题报告范文.doc
  6. 解决Visual Studio Code 热键冲突
  7. 向何志强学习什么(母校学报)
  8. 荒野乱斗手游怎么在电脑上玩 荒野乱斗手游模拟器教程
  9. 轮式机器人的电机选型
  10. 香港数据中心供电,你知道多少?