ARM

A31G123ML + Keil uVision : ์„ผ์„œ๊ฐ’์„ ์บ๋ฆญํ„ฐ LCD์— ์‹ค์‹œ๊ฐ„ ์ถœ๋ ฅํ•˜๊ธฐ — ADC + LCD ํ†ตํ•ฉ

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

๐Ÿ“บ 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"
#include 

void 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 ๋ฉ”๋‰ด ์ „ํ™˜

๋ฐ˜์‘ํ˜•