DHT11 - 温湿度传感器

DHT11原理分析以及常见问题解析(附:32 51源码) DHT11原理分析,常见问题解析,51 32源码 阅读详情
AI摘要

本文详细介绍了DHT11传感器的工作原理、数据格式以及C51编程中的时序分析,包括数据传输逻辑和检测模块存在的方法。还展示了如何配合LCD1602进行实时数据显示和风扇控制,以及如何处理串口通信和定时延迟。

DHT11基础:

特点: 
- 相对温湿度测量
- 长期稳定性 -- 多次校验
- 超长信号传输距离
- 超低能耗: 休眠
-完全转换 -- 直接出结果,不用转换

接线:
VCC
GND 
DATA -- 自己选

数据传送逻辑:
只有一根数据线bit -- C51发送序列指令给DHT11, 模块一次完整的数据传输为40bit,高位先出

数据格式:
16 16 8: 湿度 温度 校验和
8为bit 湿度整数数据 + 8位bit 湿度小数数据 + 8为bit 温度度整数数据 + 8位bit 温度小数数据 + 8位bit校验和


================================

时序分析1


分析时序图:
主要看 3 要素: 开始 结束  转折

观察时序图  
时序分析:

A=1
B=0
延时>=18ms  -- 20,ms

C=1
可能情况C+D:
20+80us
40+80us
一定可以的情况(可能 的 交集): 40 ~ 100 us  -- 取60 us
延时60us  

检测 D=0 , if 成立 说明是模块存在,模块拉低了他的电平

注意: DHT11 的 供电电压 为 3-5.5V。 传感器上电后需要等待 1s 以越过不稳定状态在此期间无需发送任何指令


=============================


代码实现判断DHT11模块是否存在


#include"reg52.h"
#include"intrins.h"

sbit dnt=P3^3; // 模块的data数据线
sbit led=P3^7;
void Delay30ms()        //@11.0592MHz
{
    unsigned char i, j;

    i = 54;
    j = 199;
    do
    {
        while (--j);
    } while (--i);
}


void Delay60us()        //@11.0592MHz
{
    unsigned char i;

    i = 25;
    while (--i);
}

void Delay1000ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 8;
    j = 1;
    k = 243;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

void check()
{

//A=1
    dnt=1;
//B=0
    dnt=0;
//延时>=18ms  -- 30ms
 Delay30ms();
//C=1
    dnt=1;
/*可能情况C+D:
20+80us
40+80us
一定可以的情况(可能 的 交集): 40 ~ 100 us  -- 取60 us
延时60us*/  
    Delay60us();

//检测 D=0 , if 成立 说明是模块存在,模块拉低了他的电平
if(dnt == 0){
led=0; //把灯点亮说明 模块存在
}
    
    
    
    
}

void main()
{
led = 1;
    // 上电后先稳定1s ,再给1s缓冲
    Delay1000ms();
    Delay1000ms();
check();
while(1); // 防止程序退出只能观察到灯是闪了一下
    
}

========================

时序分析2


继续分析后面的时序图 :


怎么从 D点卡到 E点 --由低电平到高电平,我们不去计算80us --
只需要while(!dnt); //卡着,/当电平跳转的时候就是到E点了

同理: E->F: while(dnt); //当1 -->0 的时候就到F点了,就可发送数据了

//值得注意: DHT11的 有效数据都是高电平,只是持续的时间不一样

比如 表示数字0 高电平持续 的时间是 26 ~ 28us
        表示数字1 高电平持续 的时间是  70 us

//so 我们区一个没有二者交集的时间作为判断依据  28 ~ 70 us  -- 取50us
if 这时候是 高电平 -- 发送的是1  else 发送的是 0(已经到下一个bit了 -- 电位拉低了0)


// 40 bit  = 5char     --  在C51中的 1char =8bit  
每个char分别代表下面 5 个数据: 
湿度整数
湿度小数

温度整数
温度小数

校验和

所以我们需要读 5 轮,每一轮读8 次 ,没8次形成一个数据,才能读完全部数据

=================================================
由ASCLL 码表 知道 数字0 -- > 字符0 需要 + 48 == 0x30  --- 这样就完成字符和数字的转化


LCD  上面显示 湿度 和 温度 ,并且加装 继电器 控制风扇

#include"reg52.h"
#include"intrins.h"

sbit dnt=P3^3; // 模块的data数据线
sbit led=P3^7;
sbit led2=P3^6;
sbit fengshan=P1^6;
sfr AUXR = 0x8E;
char datas[5];


#define dataBuffer  P0 // 定义8位数据线,P0端口

sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P1^4;

char temp[8];
char hum[8];


void check_busy() // 检查是否繁忙 -- 读时序操作
{
    char tmp=0x80;
    dataBuffer=0x80;
    // 1000 0000  -- 0x80  只更新 bit7
    while(tmp &= 0x80){//只要tmp -- 数据位的高位 1 的时候就是一直忙的状态,只有不忙的时候才跳出while循环
  RS=0;
  RW=1;

    EN=0;
    _nop_();
    EN=1;
    _nop_();    
    _nop_();
    tmp=dataBuffer;//读取总线上面的数
  EN=0;
    _nop_();
    }

}

void Write_Cmd_Func(char cmd) // 写入地址 -- 写时序操作
{
    check_busy(); //先检查是否繁忙
  RS=0; //写内容
  RW=0;

    EN=0;
    _nop_(); // 给一个微秒 
    dataBuffer=cmd; 
    _nop_(); // 数据建立时间 --tsp 
    EN=1;
    _nop_(); // tpw tf
    EN=0;
    _nop_();
}

void Write_Data_Func(char dataShow) //写入内容 --  写时序操作
{
    check_busy(); 
 RS=1;//写地址 -- 指令
    
 RW=0;

    EN=0;
    _nop_(); // 给一个微秒 
    dataBuffer=dataShow;
    _nop_(); 
    EN=1;
    _nop_(); // tpw tf
    EN=0;
    _nop_();

}

void Delay15ms()        //@11.0592MHz
{
    unsigned char i, j;

    i = 27;
    j = 226;
    do
    {
        while (--j);
    } while (--i);
}


void Delay5ms()        //@11.0592MHz
{
    unsigned char i, j;

    i = 9;
    j = 244;
    do
    {
        while (--j);
    } while (--i);
}


void UartInit(void)        //9600bps@11.0592MHz
{
    AUXR=0x01; //减少定时器辐射 -- 抗干扰
    SCON =0x40; //配置 串口口工作方式1,REN不使能接收
    //不配 PCON  -- 不设置倍数关系
    //配置定时器1为 8位自动重装
    TMOD &=0xF0; //高位清零
  TMOD |=0x20;  //00 10  -- 配置为定时器1为: 1 0 模式 -- 8位自动重装
  
    //定义初值
  TL1=0xFD;
    TH1=0xFD; // 9600 波特率的初值
  TR1= 1; // 定时器 -- 启动
}

void Delay30ms()        //@11.0592MHz
{
    unsigned char i, j;

    i = 54;
    j = 199;
    do
    {
        while (--j);
    } while (--i);
}


void Delay60us()        //@11.0592MHz
{
    unsigned char i;

    i = 25;
    while (--i);
}

void Delay1000ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 8;
    j = 1;
    k = 243;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void Delay40us()        //@11.0592MHz
{
    unsigned char i;

    _nop_();
    i = 15;
    while (--i);
}

void Dht11_Start()
{

//A=1
    dnt=1;
//B=0
    dnt=0;
//延时>=18ms  -- 30ms
 Delay30ms();
//C=1
    dnt=1;
    
//怎么从 D点卡到 E点 --由低电平到高电平,我们不去计算80us --
//只需要while(!dnt); //卡着,/当电平跳转的时候就是到E点了
while(dnt);// 卡C-D
while(!dnt); //卡D -E

//同理: E->F: while(dnt); //当1 -->0 的时候就到F点了,就可发送数据了
while(dnt); // 看E -F

    
}

void Read_Data_From_Dnt()
{
  int i,j;
    char flag;
    char tmp;
    Dht11_Start(); //每次发送数据都重启,不然就是 低功耗模式
    for(i=0;i<5;++i){
     for(j=0;j<8;j++){
    while(!dnt); //卡G点 -- 发送数据前一个点
     Delay40us();// 先延时后读
         if(dnt == 1){
             flag=1;
             while(dnt); // 等待70 us  高电平结束
         }
     else{
             flag=0;
      }
            tmp<<=1;
            tmp |=flag; // 读取flag的数据 0|1 =1 0|0=0
   }
      datas[i]=tmp; // 拿到一个数据

 }


}

void sendByte(char a)
{
SBUF = a;
while(!TI);
TI=0;    
}


void sendString(char *str)
{

 while(*str!='\0')
 {
 sendByte(*str);
 str++;
 } 


}


void LCD1602_INIT()
{
  //LCD1602 初始化过程(8bit)
  //(1)延时 15ms
    Delay15ms();
//(2)写指令 38H(不检测忙信号)
  Write_Cmd_Func(0x38);    
    //(3)延时 5ms
    Delay5ms();
//(4)以后每次写指令,读/写数据操作均需要检测忙信号
//(5)写指令 38H:显示模式设置
      Write_Cmd_Func(0x38);    
//(6)写指令 08H:显示关闭
      Write_Cmd_Func(0x08);    
//(7)写指令 01H:显示清屏
      Write_Cmd_Func(0x01);    
//(8)写指令 06H:显示光标移动设置
      Write_Cmd_Func(0x06);    
//(9)写指令 0CH:显示开及光标设置
  Write_Cmd_Func(0x0C);    

}


void  LCD1602_ShowLine(char line,char row,char *string)
{
switch(line){
 case 1:
     Write_Cmd_Func(0x80 +  row); //选择开始位置
   while(*string){
   Write_Data_Func(*string);
   string++;
   }
 
    break;

 case 2:
     Write_Cmd_Func(0x80 + 0x40 +row); //选择开始位置
   while(*string){
   Write_Data_Func(*string);
   string++;
   } 
 
    break;

}

}

void Build_Datas()
{
    //直接打表 输入
hum[0]='H';
hum[1]=datas[0]/10 +0x30;
hum[2]=datas[0]%10 +0x30;    
hum[3]='.';
hum[4]=datas[1]/10 +0x30;
hum[5]=datas[1]%10 +0x30;
hum[6]='%';
hum[7]='\0';

temp[0]='T';
temp[1]=datas[2]/10 +0x30;
temp[2]=datas[2]%10 +0x30;    
temp[3]='.';
temp[4]=datas[3]/10 +0x30;
temp[5]=datas[3]%10 +0x30;
temp[6]='C';
temp[7]='\0';

}

void main()
{
    Delay1000ms();
    led2=1;
    UartInit();
    // 上电后先稳定1s ,再给1s缓冲
    LCD1602_INIT();
    Delay1000ms();
    Delay1000ms();
  led = 0; // 初始化完成 后灯被点亮
    
while(1){ // 不断的读取数据
Delay1000ms();
Read_Data_From_Dnt();
Build_Datas(); // 创建数据
    if(datas[2]>28){
  fengshan=0;// 温度超过28 就开启风扇 
        led2=0; // 开灯作为标志位
  }
    else{ //温度降下来就复位
    fengshan=1;
        led2=1; 
  }
        
    
    //在串口打印出来
sendString(hum);    
sendString("\r\n");
sendString(temp);
sendString("\r\n");
    //在LCD打印出来
LCD1602_ShowLine(1,2,hum);
LCD1602_ShowLine(2,2,temp);
}
    
}

===========================


分文件:

1.先main 里面恶毒内容拿出来


    Delay1000ms();
    led2=1;
    UartInit();
    // 上电后先稳定1s ,再给1s缓冲
    LCD1602_INIT();
    Delay1000ms();
    Delay1000ms();
  led = 0; // 初始化完成 后灯被点亮
    
while(1){ // 不断的读取数据
Delay1000ms();
Read_Data_From_Dnt();
Build_Datas(); // 创建数据
    if(datas[2]>28){
  fengshan=0;// 温度超过28 就开启风扇 
        led2=0; // 开灯作为标志位
  }
    else{ //温度降下来就复位
    fengshan=1;
        led2=1; 
  }
        
    
    //在串口打印出来
sendString(hum);    
sendString("\r\n");
sendString(temp);
sendString("\r\n");
    //在LCD打印出来
LCD1602_ShowLine(1,2,hum);
LCD1602_ShowLine(2,2,temp);
}

2.创建几个发文件,进行分类,如串口的所有函数 放在 uart.c立马

3.创建分文件的头文件,只放函数定义

4.整理函数变量之间的关系,一句句把之前拿出的main内容放回去,一个个消去报错

extern关键字

参考自:【C语言】extern关键字的作用_extern在c语言中作用-优快云博客

前提:

跨文件 调佣变量 操作 很容易出错 -- 我们需要extern 关键字声明 来 让全局 函数都能调用

定义:

声明一个变量或函数具有外部链接性(external linkage),即这些变量或函数可以被其他文件访问。

使用注意:

1. 声明和定义分离:使用"extern"关键字声明一个变量或函数并不等于定义它。"extern"只是在当前文件中声明该变量或函数是在其他地方定义的。定义通常发生在其他文件中。

2. 变量和函数的重复声明:避免在多个地方重复声明同一变量或函数。多次使用"extern"关键字声明同一变量或函数可能会导致编译器发出警告或错误。

3. 外部实现的可见性:使用"extern"关键字可以访问外部定义的变量和函数,但前提是它们在其他文件中具有合适的可见性。确保所需的变量和函数在其他文件中是可见的(例如,通过使用适当的头文件包含)。

4. 数据类型和函数签名的一致性:在使用"extern"关键字声明变量或函数时,确保其数据类型和函数签名与实际定义的变量或函数的数据类型和函数签名一致。否则,可能会导致编译器错误或运行时错误。

5. 避免重复定义:避免在多个文件中同时定义同一变量或函数。只需要在一个文件中定义,然后在其他文件中使用"extern"关键字声明。

6. 声明在适当的位置:"extern"关键字的声明通常放置在函数外部的全局区域,或者放置在函数内部的局部区域。根据需要和上下文,选择适当的位置。

7. 尽量避免全局变量:虽然"extern"关键字可以让我们在多个文件中共享变量,但过度使用全局变量可能导致代码可读性、可维护性和可测试性的问题。考虑使用更局部化的变量和传递参数的方式来避免过多使用全局变量。

DHT11通过串口打印数值实验【基于stm32f103RCT6】 1.硬件:正点原子mini stm32f103RCT6开发板,DHT11温湿度传感器,j-link仿真器,T口USB线。 2.参数:DHT11技术参数   供电电压: 3.3~5.5V DC  输 出: 单总线数字信号   测量范围: 湿度20-90%RH, 温度0~50℃   测量精度: 湿度+-5%RH, 温度+-2℃   分 辨 率: 湿度1%RH, 温度1℃ 3.连接:DHT11... 阅读详情

相关推荐

51单片机DHT11温湿度传感器

DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。一.电路连接分析1.引脚图2.接线图DHT11 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。单总线通常要求外接一个约 5.1kΩ 的上拉电阻,这样,当总线闲置时,其状态为高电平。由于它们是主从结极,只有主机呼叫从机时,从机

Line 13万+

DHT11详细介绍(内含51和STM32代码)

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。

安赫' 的博客 24万+

Arduino Uno 实验13——DHT11温湿度传感器

DHT11温湿度传感器模块简介 DHT11概述   数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。   传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。  

weixin_42645653的博客 1万+

DHT11 温湿度传感器

DHT11 是一款湿温度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个 NTC测温元件,并与一个高性能 8 位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11 与单片机之间能采用简单的单总线进行通信,仅仅需要一个 I/O 口。传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11 功耗很低,5V 电源电压下,工作平均最大电流 0.5mA。...

Bit_Dong的博客 5万+

arduino学习系列——DHT11温湿度传感器的使用

一、器材 arduino UNO、面包板、DHT11温湿度传感器、连接线 这里说一下DHT11的基本情况: (1)引脚说明: 1、VDD 供电 3.5V-5.5V DC 2、DATA 串行数据,单总线 3、GND 接地,电源负极。 (2)DHT11data数据格式: 一次传输40位数据=8bit湿度整数数据 + 8bit湿度小数数据 + 8bint温度整数数据

wgj99991111的博客 9万+

DHT11数字温湿度传感器

DHT11数字温湿度传感器 简单介绍: DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。产品为 4 针单排引脚封装 接口说明: 建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。 电源引脚: DHT11的供电电压为 3-5.5V。传感器上电后,要等待1s 以越过不稳定状态在

问鼎63的博客 3万+

DHT11温湿度传感器(详细)

DHT11温度传感器——使用LCD1602显示 先上效果图,以及简单的和室内温度对比图,相交而言测量的值还是非常准的。 原理讲解 ◎外设读取步骤 主机和从机之间的通信可通过如下几个步骤完成(外设(如微处理器)读取DHT11的数据 步骤一: DHT11上电后(DHT11上电后要等待1S以越过不稳定状态在此期间不能发送任何指令),测 试环境温湿度数据,并记录数据,同时DHT11的DATA数据线由上拉电阻拉高一直保持高电平; 此时DHT11的DATA引脚处于输入状态,时刻检测外部信号。 步骤二: 微处理器的I/O

qq_44972915的博客 7万+

Arduino基础入门之十三 温湿度传感器DHT11

一 硬件 DHT11这款温湿度传感器,精度湿度±5%RH, 温度±2℃,如下图所示【1】 4个引脚接线一目了然,2号data用于传感器与微控制器之间的通信,接UNO的某数字引脚,3号NC空置即可。目前我对新引入的硬件都是知道表面功能和连线方式就行了,硬件内部的一些机制还不求甚解。比如搜索DHT11就发现其他博主写的都是通信过程、高低电平时序图什么的【2,3】,看不懂呀! 另外参见【3】,是将2号Data外接上拉电阻,保证总线空闲时是高电平,接线如下图 ...

u013978070的专栏 9432

STM32之DHT11温湿度传感器

DHT11是一种数字温湿度传感器,具有高精度和快速响应的特点。它可以测量环境的温度和湿度,并通过数字信号输出结果。DHT11传感器采用单线数字信号传输,安装简单方便,适用于各种温度湿度监测场合。该传感器广泛应用于温室农业、气象监测、智能家居等领域。通过读取传感器输出的数据,可以实时监测环境的温湿度情况,为生产和生活提供参考和便利。

qq_50749196的博客 4万+

DHT11温湿度传感器(zigbee)

DHT11温湿度传感器(zigbee)DHT11简介电路连接时序图详解数据格式 DHT11简介 DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数 字模块采集技术和温湿度传感技术,确保产品具有枀高的可靠性与卓越的长期稳定性。传感器包括一 个电阻式感湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接。 电路连接 VDD 供电 3.5-5....

qq_39206199的博客 8007

dht11温湿度传感器_DHT11温湿度传感器的使用

来源:百问网_嵌入式Linux wiki_jz2440 新1期视频维基教程 (视频文字版)作者:韦东山本文字数:2379,阅读时长:4分钟这节课开始讲解DH11温湿度传感器的使用,首先查看芯片手册,里面的典型应用电路如下:MCU通过一条数据线与DH11连接,MCU通过这条线发命令给DH11,DH11再通过这条线把数据发送给MCU。因此,温湿度模块的核心就是 MCU发给DH11的命令格式和DH11返...

weixin_36267013的博客 3328

详解DHT11温湿度传感器的原理及驱动程序

一.简介 DHT11作为一款低价、入门级的温湿度传感器,常用于我们的单片机设计实例中;它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。 DHT11为 4 针单排引脚封装,如下图,采用单线制串行接口,只需加适当的上拉电阻,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻...

会飞的鱼的博客 11万+

光电容积脉搏波PPG信号分析笔记

脉搏波信号PPG分析笔记

teresa_zp的专栏 6477

【mcuclub】温湿度传感器DHT11

DHT11

weixin_61121477的博客 1万+

基于云平台的ATS系统微服务架构方案研究

在当前智慧地铁的升级转型过程中,城市轨道交通ATS系统面临着稳定性差、运维方 式繁琐和故障应急处理效率低等问题。为此,提出一种基于云平台的ATS系统微服务架构方案; 研究了ATS系统在云平台上的微服务总体架构、ATS应用的微服务划分和设计、容器部署方式 及通信交互模式,可实现系统松耦合和易扩展,达到节约计算资源、提高系统稳定性和运营效 率的目的

mi_lan1的博客 966

WhatsApp协议算法

我想其实有很多人还不太了WhatsApp群控,简单来说,它和我们常使用的微信聊天软件是类似的,只不过它是基于通讯录的,操作起来比较简单便捷,所以现在有很多国家都喜欢用WhatsApp。一般情况下,筛号不会造成账号被封的情况,但是呢,如果筛号的频率太快,就会被系统限制筛号能力,不再返回筛号结果,所以,筛号数量和速度一定要控制好。前天逛街突然灵光一现,为什么不试试多路访问呢,简单来说就是信道复用技术,马上跑回家,调取接口,接入通道,导入已经转换成协议的账号,成功登录!

2403_87755661的博客 1943

FPGA之DHT11温湿度传感器

DHT11温湿度传感器学习笔记 一.DHT DHT11作为一款低价、入门级的温湿度传感器,常用于单片机设计实例中;它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。DHT11为 4 针单排引脚封装,如下图,采用单线制串行接口,只需加适当的上拉电阻,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。 二、工作总结 1.RTL图: 其中消抖模块和数码管模块之前已完

weixin_46628093的博客 7586

ComfyUI-Impact-Subpack插件安装避坑指南:为什么你的UltralyticsDetectorProvider节点还是找不到?

本文深入解析了ComfyUI-Impact-Subpack插件的安装与排障问题,特别是针对UltralyticsDetectorProvider节点缺失的常见问题提供了详细的解决方案。从底层机制到高阶应用,涵盖了手动安装、模型配置、性能优化等关键步骤,帮助用户彻底解决插件依赖关系断裂问题。

Jerry的专栏 1152

stm32读取DHT11温湿度传感器

通过DHT11的芯片手册来了解DHT11的工作原理,包括内部电路,数据响应格式,工作时序等。最后编写代码。

嵌入式 1万+

模糊高清修复真王炸!ComfyUI-SeedVR2-Kontext(画质修复+P图)本地部署教程

SeedVR2_comfyUI 是由字节跳动 Seed 实验室与南洋理工大学 S-Lab 联合开源的,专为 ComfyUI 用户开发的插件版本,官方项目名为。它主打,在图像超分上表现尤其亮眼,被多位实测者称为“目前模糊图像修复最强模型“。SeedVR2 在图像超分任务中表现突出,尤其擅长恢复模糊图像的细节,被称为“模糊高清修复真王炸”。特别的,也适合用于文字密集图像(如截图、扫描文档、老照片字幕)修复。模型通过对抗训练 + 特征匹配损失提升细节真实感,理论上对文字边缘锐化也有帮助。

SJJS_1的博客 2683

Mac上Ollama服务IP访问失败的3种修复方法(含永久生效配置)

本文详细介绍了Mac上Ollama服务IP访问失败的3种修复方法,包括临时环境变量覆盖、永久Shell配置修改及进阶排查技巧。重点解析了OLLAMA_HOST环境变量的配置原理,帮助开发者解决Connection refused问题,实现局域网IP访问Ollama服务的需求。

weixin_29209805的博客 206

DHT11温湿度传感器

一.简介 DHT11作为一款低价、入门级的温湿度传感器,常用于我们的单片机设计实例中;它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。 DHT11为 4 针单排引脚封装,如下图,采用单线制串行接口,只需加适当的上拉电阻,信号传输距离可达20米以上,使其成为各类应用甚至最为...

LOT 1万+

java modbus通讯协议_Modbus通 讯 协 议

电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96...

weixin_39956612的博客 1012

温湿度传感器DHT11介绍

DHT11数字温湿度传感器是一种出厂时经过校准的数字信号输出的温湿度复合型传感器。DHT11数字温湿度传感器应用温湿度传感技术和数字采集技术,确保其具有极高的可靠性和卓越的长期稳定性。

weichen_78的博客 1万+

【GameFramework扩展应用】6-5、GameFramework框架出包时增加版本信息Version.txt文件

框架在热更新的时候,会先去获取文件,然后获取版本号,对比版本号和资源大小,才会开始下载资源。但是,框架生成AssetBundle资源的包里面是没有这个文件的,只能我们新建一个文件,然后手动填入数据,非常麻烦。好消息是,框架把这些接口都留给我们了,我们只需要继承接口,重写函数,然后在打包的时候选择这个辅助器即可。下面就来看一下如何实现把。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1039

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: IIC协议--OLED
下一篇: Linux下的C语言文件编程
mx_jun
博客等级 码龄5年 1605粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值