ARM

A31G123ML + Keil uVision10ํŽธ: DHT11 ์„ผ์„œ๋กœ ์˜จ๋„/์Šต๋„ ์ธก์ • → LCD์— ์ถœ๋ ฅํ•˜๊ธฐ

๊ฒŒ์ž„๊ต์ˆ˜ 2025. 4. 18. 07:55
๋ฐ˜์‘ํ˜•

๐ŸŒก๏ธ A31G123ML + Keil uVision โ€” DHT11 ์˜จ์Šต๋„ ์„ผ์„œ ์ถœ๋ ฅํ•˜๊ธฐ

์ด๋ฒˆ ํŽธ์—์„œ๋Š” DHT11 ๋””์ง€ํ„ธ ์˜จ์Šต๋„ ์„ผ์„œ๋ฅผ ์ด์šฉํ•ด ์˜จ๋„์™€ ์Šต๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ธก์ •ํ•˜๊ณ , LCD์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถœ๋ ฅ

๐Ÿงฐ ์ค€๋น„๋ฌผ

  • ABOV A31G123ML ๋ณด๋“œ
  • DHT11 ์˜จ์Šต๋„ ์„ผ์„œ
  • 16x2 HD44780 ์บ๋ฆญํ„ฐ LCD
  • 10kฮฉ ํ’€์—… ์ €ํ•ญ

๐Ÿ”Œ ํšŒ๋กœ ์—ฐ๊ฒฐ

  • DHT11 DATA โ†’ P2.2
  • VCC โ†’ 5V / GND โ†’ GND
  • LCD โ†’ P1.0~P1.5 (4-bit ๋ชจ๋“œ)

๐Ÿ’ป ์ฝ”๋“œ ์˜ˆ์‹œ: DHT11 ์ฝ๊ณ  LCD์— ์ถœ๋ ฅ

// dht11.h, lcd.h ํฌํ•จ
#include "A31G123.h"
#include "dht11.h"
#include "lcd.h"
#include 

char buffer[20];

int main(void)
{
    lcd_init();
    dht11_init();

    while (1) {
        uint8_t temp = 0, hum = 0;

        if (dht11_read(&temp, &hum) == 0) {
            lcd_gotoxy(0, 0);
            sprintf(buffer, "Temp: %d C", temp);
            lcd_puts(buffer);

            lcd_gotoxy(0, 1);
            sprintf(buffer, "Humi: %d %%", hum);
            lcd_puts(buffer);
        } else {
            lcd_gotoxy(0, 0);
            lcd_puts("DHT11 Error    ");
        }

        for (volatile int i = 0; i < 1000000; i++);
    }
}

dht11.c ํŒŒ์ผ์€ ํƒ€์ด๋ฐ ์ œ์–ด ๊ธฐ๋ฐ˜์œผ๋กœ 1-wire ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•ด์ค˜์•ผ ํ•ด์š”. ํƒ€์ด๋จธ/๋น„ํŠธ ์ฒ˜๋ฆฌ ํ•„์š”.

โœ… ํ™•์ธ ํฌ์ธํŠธ

  • DHT11 ๊ฐ’ ์ •์ƒ ์ˆ˜์‹  ์‹œ, LCD์— ์˜จ๋„/์Šต๋„ ์ถœ๋ ฅ
  • ์ˆ˜์‹  ์‹คํŒจ ์‹œ "DHT11 Error" ์ถœ๋ ฅ
  • 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ํ™”๋ฉด ๊ฐฑ์‹ 

๐Ÿ“š ๋งˆ๋ฌด๋ฆฌ

์ด๋ฒˆ ํŽธ์—์„œ๋Š” ๋””์ง€ํ„ธ ํ™˜๊ฒฝ ์„ผ์„œ(DHT11)๋ฅผ MCU์— ์—ฐ๋™ํ•˜๊ณ , LCD๋กœ ์‹ค์‹œ๊ฐ„ ์ƒํƒœ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ์‹ค์Šต์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์•Œ๋ฆผ/์ œ์–ดUART, ๋ธ”๋ฃจํˆฌ์Šค, WiFi ์—ฐ๋™

๋ฐ˜์‘ํ˜•