Microcontrolador 51 (STC89C52RC) lee la temperatura del módulo y la humedad DHT11 adquisición de la señal de visualización digital
Último fin de semana esposa me preguntó cuántos temperatura hogar. . . TM lo que sé, para alquilar un infierno tal, nada, supongo fuera de él, por supuesto, "TM" es que ahora añade ahora. . . ^ _ ^, Luego quería Antes de comprar un Frambuesa Pi 4B también compró una tarjeta de pan, una vez más recordar los conocimientos adquiridos en la universidad, en busca de la cuenta, le gustaría ser tal cosa, entonces, lo es. . . . . Una búsqueda en línea, más de 20 dólares puede comprar uno. . . . Pero como programador, es tan aficionado a tormento. . . También me gustaría alabar un poco de su propio dinero. . Y luego un poco más al fondo. . O (∩_∩) haha O ~
Sólo soy un desarrollador de software simple. . Para el hardware que poco conocimiento limita a la universidad y se graduó cuatro o cinco años, se había olvidado de, y usted está confiando en Baidu compartir el poder de Dios para ir y venir de conducción. . .
1. Productos Terminados
La temperatura del circuito de la izquierda, la derecha y la humedad de emulación de acabado son diferentes, el proceso de hacer cambiado, las simulaciones no se irán, los dos aumentos de los indicadores de alarma
2. preguntó a su esposa para su financiación (O (∩_∩) O)
3. Las órdenes de compra, el dispositivo
(Aquí no esperaba, para comprar el producto terminado puede ser $ 20, pero hay que hacer una cosa cada uno tenía para comprar tres veces en una sola .. entradas y salidas, publicó una foto de ella aquí sólo .., también compraron dos meses multímetro, alambre de hierro eléctrica .... todo tipo de dispositivos ... lo que un montón de todos modos .....)
4. Dibuje una versión diagrama de circuito de simulación Proteus8.6
(Baidu sustancialmente en el extremo, hay varios, esto es relativamente simple) Temperatura de izquierda, la humedad derecha
Proteus lenguaje de simulación de circuitos y C - Códigos de la Fuente
programa
#include <reg51.h> #include <intrins.h> #define UCHAR unsigned char #define uint unsigned int la sbit los Datos = P3 ^ 6. ; // definición líneas de datos UCHAR rec_dat [ 9. ]; // recepción de datos para la visualización array // LED Digital 0--9 uint LED [ 10 ] = { 0xC0 , 0xF9 , 0xa4 , 0xB0 , 0x99 , 0x92 , 0x82 , 0xF8 , 0x80 , 0x90 }; void Delay (uint n) { uint x, y; para (x = n; x> 0 ; x-- ) para (y = 110 ; y> 0 ; Y- ); } Void write_com (uchar com) { // rs = 0时输入指令 P2 = com; retardo ( 5 ); } Void DHT11_delay_us (UCHAR n) { mientras que (- n); } Void DHT11_delay_ms ( uint z) { uint i, j; para (i = z; i> 0 ; i--) Para (J = 110 ; J> 0 ; J, ); } void DHT11_start () { el Data = 1. ; DHT11_delay_us ( 2 ); los datos = 0 ; DHT11_delay_ms ( 30 ); // 18 ms de retardo por encima de la de datos = 1. ; DHT11_delay_us ( 30 ); } UCHAR DHT11_rec_byte () // recibir un byte { UCHAR I, DAT = 0 ; para (i = 0 ; I < . 8; I ++) // Low recibe secuencialmente datos de 8 bits { el tiempo (los datos) ;! /// / 50us bajo espera pasado DHT11_delay_us ( 8. ); // retardo 60US, si es alta, los datos 1 de lo contrario 0 dat << = 1 ; // cambio para hacer correctamente recibe datos de 8 bits, cuando cambio directo 0 IF (los datos == 1 ) // datos 1, de manera que la adición de 1 a los datos de recepción dat 1 = + DAT . 1 ; el tiempo (los datos); // espera para el bajo de línea de datos } volver DAT; } // MS unidad de rutina de retardo void delay222 (unsigned intX) { unsigned int I, J; para (I = X; I> 0 ; i-- ) para (J = 110 ; J> 0 ; J, ); } // temperatura conjunto vacío SetTemperature (valor UCHAR) { // bits de desinstalados, el dígito de las decenas int unitPlace = valor / 1. % 10 ; int tenPlace = valor / 10 % 10 ; P0 = LED [tenPlace]; P2 = 0x80 ; delay222 ( . 3 ); P2= 0x00 ; P0 = LED [unitPlace]; P2 = 0x40 ; delay222 ( . 3 ); P2 = 0x00 ; } // set humedad void SetHumidity (valor UCHAR) { // quitar la broca, el dígito de las decenas int unitPlace = valor / . 1 % 10 ; int tenPlace = valor / 10 % 10 ; P0 = LED [tenPlace]; P2 = 0x20 ; delay222 ( );. 3 P2 = 0x00 ; P0 = LED [unitPlace]; P2 = 0x10 ; delay222 ( 3. ); P2 = 0x00 ; } void DHT11_receive () // recibido datos de 40 bits { UCHAR R_H, R_L, T_H, T_L, Rh, RL, TH, TL, el Revisar; int Número; // frecuencia de parpadeo int Cont2; UCHAR tempValue; UCHAR humidityValue; Número = 20 es ; Cont2 = 0 ; DHT11_start (); Cont2 = 0 ; IF (los datos == 0 ) { el tiempo (los datos == 0 ); // wait sacó DHT11_delay_us ( 40 ); // afirmar la demora 80US R_H DHT11_rec_byte = (); // recibir ocho alta humedad mordió R_L DHT11_rec_byte = (); // recibir ocho baja humedad T_H DHT11_rec_byte = (); // recibir altas temperaturas ocho T_L DHT11_rec_byte = (); // recibir ocho baja temperatura el Revisar DHT11_rec_byte = (); // recibe el corregido bits DHT11_delay_us (25 ); // End IF ((R_L R_H + + + T_H T_L) == la Revisar) // corrigió { RH = R_H; RL = R_L; TH = T_H; TL = T_L; } / * procesamiento de datos, conveniente pantalla * / / / rec_dat [0] = '0' + (RH / 10); // [. 1] rec_dat = '0' + (10% RH); // rec_dat [2] = 'R & lt'; // [. 3] rec_dat = 'H'; // [. 4] rec_dat = ''; // rec_dat = [5]. ''; // rec_dat = '0' + (TH / 10) [6].; // rec_dat = '0' + (TH 10%) [7].; // rec_dat = 'C' [8.]; // leer la temperatura y la humedad tempValue = RH; humidityValue = TH; el tiempo (Cont2 < Number) { // set temperatura SetTemperature (tempValue); // set humedad SetHumidity (humidityValue); Cont2 ++ ; } Cont2 = 0 ; } } / * se utiliza aquí LCD1602 para visualizar los datos recogidos, el controlador 51 LCD1602 familia de microcontroladores Bowen en bloggers no se explican en detalle * / void main () { uchar i; mientras que ( 1 ) { DHT11_receive (); } }
El programa y depurar circuitos tablero
Comprado ambos un rojo dos ánodo común LED de 10 pies, el resultado no es limitante resistencia, un quemado, obligado a una vez más órdenes de compra, los resultados son malos, comprado dos cátodo común verde 18 pie, repugnantes, moscas de las estimaciones de soldadura puede comprender
6. despliegue del dispositivo de soldadura y la placa de circuitos
Durante la soldadura, se encontró a aumentar también un indicador de advertencia. Y luego soldar el indicador de dos alarma conectado a la P1.0 (temperatura) y P1.1 (humedad)
Porque no sería dibujar el cableado PCB, probablemente lo pone un poco, luego comenzó a soldar. . .
Realmente no Xiangman, repugnante, porque la compra equivocada, compró un total de 18 pies de tubo digital de 2 cátodo. . Se suelda en el caso, el dios del nivel limitado de derecho deriva directa. . . .
7. Muestra de productos
La temperatura se deja, la visualización correcta humedad se cambia entonces como digital, el programa también ha cambiado, y los nuevos indicadores de alarma
Circuito probablemente introducida