From e64d0bf13fabbc55b83b990e632e044a8e5e24dc Mon Sep 17 00:00:00 2001 From: Wander_Lust Date: Thu, 21 May 2026 09:08:44 +0530 Subject: [PATCH] hardware --- 7segADC.c | 37 +++++++++++++++++++++++++++++++++++++ 7segLCD.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ scankey.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 7segADC.c create mode 100644 7segLCD.c create mode 100644 scankey.c diff --git a/7segADC.c b/7segADC.c new file mode 100644 index 0000000..1ad9f66 --- /dev/null +++ b/7segADC.c @@ -0,0 +1,37 @@ +#include +#include "DrvADC.h" +#include "Seven_Segment.h" +#include "NUC1xx.h" +#include "Driver\DrvSYS.h" +#include "LCD_Driver.h" + +int32_t main(void){ + uint16_t value; + char text[16]; + + UNLOCKREG(); + SYSCLK->PWRCON.XTL12M_EN = 1; + SYSCLK->CLKSEL0.HCLK_S = 0; + LOCKREG(); + + Initial_panel(); + clr_all_panel(); + print_lcd(0, "variable resistor"); + DrvADC_Open( + ADC_SINGLE_END, + ADC_SINGLE_OP, + 0X80, + INTERNAL_HCLK, + 1 + ); + while(1){ + DrvADC_StartConvert(); + while(DrvADC_IsConversionDone()==FALSE); + value = ADC->ADDR[7].RSLT & 0xFFF; + sprintf(text, "value: %d", value); + print_lcd(1, text); + + } + + +} diff --git a/7segLCD.c b/7segLCD.c new file mode 100644 index 0000000..8d3cc31 --- /dev/null +++ b/7segLCD.c @@ -0,0 +1,48 @@ +#include +#include "NUC1xx.h" +#include "DrvSYS.h" +#include "Seven_Segment.h" + +void seg_display(int16_t value){ + int8_t digit; + + digit = value /1000; + close_seven_segment(); + show_seven_segment(3, digit); + DrvSYS_Delay(5000); + + value = value - digit*1000; + digit = value /100; + close_seven_segment(); + show_seven_segment(2, digit); + DrvSYS_Delay(5000); + + + value = value - digit*100; + digit = value /10; + close_seven_segment(); + show_seven_segment(1, digit); + DrvSYS_Delay(5000); + + + value = value - digit*10; + digit = value; + close_seven_segment(); + show_seven_segment(0, digit); + DrvSYS_Delay(5000); + +} + +int32_t main(void){ + int32_t i =0; + UNLOCKREG(); + DrvSYS_Open(48000000); + LOCKREG(); + while(i<10000){ + seg_display(i); + DrvSYS_Delay(10000); + i++; + + } +} + diff --git a/scankey.c b/scankey.c new file mode 100644 index 0000000..994ac12 --- /dev/null +++ b/scankey.c @@ -0,0 +1,31 @@ +#include +#include "NUC1xx.h" +#include "Driver\DrvGPIO.h" +#include "Driver\DrvSYS.h" +#include "NUC1xx-LB_002\LCD_Driver.h" +#include "NUC1xx-LB_002\Scankey.h" + +int main(void){ + int32_t key_press; + char text[16]; + + UNLOCKREG(); + DrvSYS_Open(48000000); + LOCKREG(); + + Initial_panel(); + clr_all_panel(); + OpenKeyPad(); + + print_lcd(0, "Keypad test: "); + while(1){ + key_press = Scankey(); + if(key_press!=0){ + sprintf(text, "Key pressed: %d", key_press); + print_lcd(1, text); + }else{ + print_lcd(1, "press a key..."); + } + DrvSYS_Delay(50000); + } +}