From a4d545ac196f613daf02f81f27cfa8bd826857ae Mon Sep 17 00:00:00 2001 From: sherlock Date: Thu, 16 Oct 2025 12:42:46 +0530 Subject: [PATCH] Updated data for ES --- ES/Lab/Lab10/ADC_Display.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/ES/Lab/Lab10/ADC_Display.c b/ES/Lab/Lab10/ADC_Display.c index f357568..08410cc 100644 --- a/ES/Lab/Lab10/ADC_Display.c +++ b/ES/Lab/Lab10/ADC_Display.c @@ -5,26 +5,30 @@ #define EN_CTRL 0x10000000 #define DT_CTRL 0x07800000 -unsigned long result, y; // ADC Result +unsigned long result, y; unsigned long int temp1 = 0, temp2 = 0, i; unsigned char flag1 = 0, flag2 = 0; -unsigned char msg[20]; // To store the ADC value string +unsigned char msg[20]; void lcd_write(void); void port_write(void); void delay_lcd(unsigned long); void lcd_init(void); void lcd_print(unsigned char *); +void lcd_clear(void); void ADC_IRQHandler(void); void ADC_init(void); int main(void) { LPC_GPIO0->FIODIR = DT_CTRL | RS_CTRL | EN_CTRL; // LCD pins as output - lcd_init(); // initialize LCD - ADC_init(); // initialize ADC + + lcd_init(); // Initialize LCD + lcd_print((unsigned char *)"ADC Val:"); // Idle message + + ADC_init(); // Initialize ADC while (1) { - // main loop does nothing, display will update via interrupt + // idle loop } } @@ -37,16 +41,14 @@ void ADC_init(void) { } void ADC_IRQHandler(void) { - result = (LPC_ADC->ADGDR >> 4) & 0xFFF; // Get 12-bit ADC result + result = (LPC_ADC->ADGDR >> 4) & 0xFFF; // 12-bit ADC result - // Convert to string - sprintf((char *)msg, "ADC: %ld", result); - - // Display on LCD + lcd_clear(); + lcd_print((unsigned char *)"ADC Val:"); + sprintf((char *)msg, " %lu", result); lcd_print(msg); - // Clear interrupt flag (by reading ADDR4) - y = (LPC_ADC->ADDR4 >> 4) & 0xFFF; + y = (LPC_ADC->ADDR4 >> 4) & 0xFFF; // clear done flag } void lcd_init(void) { @@ -59,6 +61,7 @@ void lcd_init(void) { lcd_write(); } flag1 = 1; + delay_lcd(5000); } void lcd_print(unsigned char *text) { @@ -70,6 +73,14 @@ void lcd_print(unsigned char *text) { } } +void lcd_clear(void) { + flag1 = 0; + temp1 = 0x01; // clear command + lcd_write(); + delay_lcd(5000); + flag1 = 1; +} + void lcd_write(void) { flag2 = (flag1 == 1) ? 0 : (((temp1 == 0x30) || (temp1 == 0x20)) ? 1 : 0); @@ -100,6 +111,5 @@ void port_write(void) { void delay_lcd(unsigned long r1) { unsigned long r; - for (r = 0; r < r1; r++) - ; + for (r = 0; r < r1; r++); }