๋ฐ์ํ
๐บ A31G123ML + Keil uVision โ ์ผ์๊ฐ์ LCD์ ์ค์๊ฐ ์ถ๋ ฅํ๊ธฐ
์ด๋ฒ ์ค์ต์์๋ ์ด์ ์ ๊ตฌํํ๋ ADC(์ผ์๊ฐ ์ฝ๊ธฐ)์ LCD ์ถ๋ ฅ์ ๊ฒฐํฉํ์ฌ, ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์บ๋ฆญํฐ LCD์ ํ์ํ๋ ์์คํ ์ ๋ง๋ค์ด๋ด ๋๋ค.
๐งฐ ์ค๋น๋ฌผ
- ABOV A31G123ML ๋ณด๋
- 16x2 HD44780 ์บ๋ฆญํฐ LCD
- ๊ฐ๋ณ์ ํญ ๋๋ ์กฐ๋์ผ์ (ADC ์ ๋ ฅ)
- ๋ธ๋ ๋๋ณด๋, ์ ํผ์
๐ ํ๋ก ์ฐ๊ฒฐ
- LCD: RS~D7 โ P1.0~1.5 (์ด์ ํธ๊ณผ ๋์ผ)
- ์ผ์ ์ถ๋ ฅ โ AIN0 (P2.0)
๐ป ์ฝ๋ ์์: ADC + LCD
#include "A31G123.h" #include "lcd.h" #includevoid adc_init(void) { SYSCON->SYSAHBCLKCTRL |= (1 << 24); // ADC CLK enable ADC->CR = (1 << 0); // AIN0 ์ ํ ADC->CTRL = (1 << 0); // ADC Enable } uint16_t adc_read(void) { ADC->CR |= (1 << 24); // Start conversion while (!(ADC->STAT & 0x01)); // Wait for DONE return ADC->DR & 0x3FF; // 10-bit result } char buffer[20]; int main(void) { lcd_init(); adc_init(); while (1) { uint16_t val = adc_read(); sprintf(buffer, "ADC: %4d ", val); lcd_gotoxy(0, 0); lcd_puts("Sensor Reading:"); lcd_gotoxy(0, 1); lcd_puts(buffer); for (volatile int i = 0; i < 500000; i++); // ๊ฐ๋จํ ๋๋ ์ด } }
โ ํ์ธ ํฌ์ธํธ
- LCD์ "Sensor Reading:" ๊ณ ์ ์ถ๋ ฅ
- ๋ ๋ฒ์งธ ์ค์ ADC ๊ฐ ์ค์๊ฐ ์ถ๋ ฅ
- ๊ฐ๋ณ์ ํญ์ ๋๋ฆฌ๊ฑฐ๋ ์กฐ๋ ๋ณํ์ ๋ฐ๋ผ ์ซ์ ๋ฐ์
๐ ๋ง๋ฌด๋ฆฌ
์ด๋ฒ ํธ์์๋ ์ผ์ ์
๋ ฅ๊ณผ LCD ์ถ๋ ฅ์ ํตํฉ์ ํตํด
์ค์๊ฐ ๋ฐ์ดํฐ ์๊ฐํ ์ฅ์น๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค.
๋ค์์ ๋ฒํผ์ด๋ UART ์
๋ ฅ์ ์ด์ฉํด
LCD ๋ฉ๋ด ์ ํ
๋ฐ์ํ