- Reikalingi komponentai ir techninės įrangos sąranka
- „Nuvoton N76E003“ grandinės schema, skirta nuskaityti analoginę įtampą
- Informacija apie GPIO ir analoginius kaiščius N76E003
- Informacija apie „ADC Peripheral“ N76E003
- N76E003 programavimas ADC
- Mirksintis kodas ir išvestis
Analoginis į skaitmeninį keitiklį (ADC) yra dažniausiai naudojama mikrovaldiklio aparatinės įrangos funkcija. Jis ima analoginę įtampą ir paverčia ją skaitmenine verte. Kadangi mikrovaldikliai yra skaitmeniniai įrenginiai ir veikia su dvejetainiais skaitmenimis 1 ir 0, jis negalėjo tiesiogiai apdoroti analoginių duomenų. Taigi, ADC naudojamas paimti analoginę įtampą ir paversti ją lygiaverte skaitmenine verte, kurią gali suprasti mikrovaldiklis. Jei norite sužinoti daugiau apie analoginį į skaitmeninį keitiklį (ADC), galite patikrinti susietą straipsnį.
Elektronikoje yra įvairių jutiklių, teikiančių analoginę išvestį, pavyzdžiui, MQ dujų jutikliai, ADXL335 akselerometro jutiklis ir kt. Taigi, naudojant analoginį ir skaitmeninį keitiklį, tuos jutiklius galima susieti su mikrovaldiklio bloku. Taip pat galite peržiūrėti kitas toliau išvardytas pamokas, kaip naudoti ADC su kitais mikrovaldikliais.
- Kaip naudoti ADC „Arduino Uno“?
- Sąsaja ADC0808 su 8051 mikrovaldikliu
- Naudojant PIC mikrovaldiklio ADC modulį
- Raspberry Pi ADC pamoka
- Kaip naudoti ADC MSP430G2 - Analoginės įtampos matavimas
- Kaip naudoti ADC programoje STM32F103C8
Šioje pamokoje naudosime N76E003 mikrovaldiklio bloko integruotą ADC periferinį įrenginį, todėl įvertinkime, kokios aparatinės įrangos sąrankos mums reikia šiai programai.
Reikalingi komponentai ir techninės įrangos sąranka
Norėdami naudoti ADC N76E003, naudosime įtampos daliklį, naudodami potenciometrą, ir nuskaitysime 0–5,0 V įtampą. Įtampa bus rodoma 16x2 simbolių skystųjų kristalų ekrane, jei esate naujas LCD ekranas ir N76E003, galite patikrinti, kaip susieti LCD ekraną su „Nuvoton N76E003“. Taigi pagrindinis šio projekto komponentas yra 16x2 simbolių skystųjų kristalų ekranas. Šiam projektui naudosime toliau nurodytus komponentus -
- Veikėjas LCD 16x2
- 1k rezistorius
- 50 tūkst. Potenciometro arba apdailos puodo
- Nedaug Berg laidų
- Nedaug prijungimo laidų
- Bandomoji Lenta
Maža to, išskyrus aukščiau išvardytus komponentus, mums reikia N76E003 mikrovaldikliu paremtos kūrimo plokštės, taip pat „ Nu-Link Programmer“. Taip pat reikalingas papildomas 5 V maitinimo blokas, nes LCD ima pakankamai srovės, kurios programuotojas negalėjo suteikti.
„Nuvoton N76E003“ grandinės schema, skirta nuskaityti analoginę įtampą
Kaip matome schemoje, prievadas P0 naudojamas su LCD susijusiam ryšiui. Kairiajame kairiajame kampe rodomas programavimo sąsajos ryšys. Potenciometras veikia kaip įtampos daliklis ir tai jaučiama analoginiu įėjimu 0 (AN0).
Informacija apie GPIO ir analoginius kaiščius N76E003
Žemiau pateiktame paveikslėlyje iliustruojami GPIO kaiščiai, esantys N76E003AT20 mikrovaldiklio bloke. Tačiau iš 20 kontaktų su LCD susijusiam ryšiui naudojamas P0 prievadas (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 ir P0.7). Analoginiai kaiščiai paryškinti raudonomis spalvomis.
Kaip matome, „Port P0“ turi maksimalius analoginius kaiščius, tačiau jie naudojami su LCD susijusiam ryšiui. Taigi P3.0 ir P1.7 yra kaip analoginio įvesties kaiščiai AIN1 ir AIN0. Kadangi šiam projektui reikalingas tik vienas analoginis kaištis, šiam projektui naudojamas P1.7, kuris yra analoginis įvesties kanalas 0.
Informacija apie „ADC Peripheral“ N76E003
N76E003 pateikia 12 bitų SAR ADC. Tai labai gera N76E003 savybė, kad ji turi labai gerą ADC skiriamąją gebą. ADC turi 8 kanalų įėjimus vieno galo režimu. Sąsaja su ADC yra gana paprasta ir paprasta.
Pirmiausia reikia pasirinkti ADC kanalo įvestį. N76E003 mikrovaldikliuose yra 8 kanalų įėjimai. Pasirinkus ADC įvestis arba įvesties / išvesties kaiščius, visi kaiščiai turi būti nustatyti pagal kodo kryptį. Visi analoginiam įėjimui naudojami kaiščiai yra mikrovaldiklio įvesties kaiščiai, todėl visus kaiščius reikia nustatyti kaip tik įvesties (didelės impedanso) režimą. Juos galima nustatyti naudojant PxM1 ir PxM2 registrą. Šie du registrai nustato įvesties / išjungimo režimus, kur x reiškia prievado numerį (pvz., Prievadas P1.0 registras bus P1M1 ir P1M2, P3.0 - P3M1 ir P3M2 ir kt.) matyti žemiau esančiame paveikslėlyje-
ADC konfigūraciją atlieka du registrai ADCCON0 ir ADCCON1. ADCCON0 registro aprašymas parodytas žemiau.
Pirmieji 4 registro bitai nuo 0 iki 3 bitų naudojami nustatyti ADC kanalo pasirinkimą. Kadangi mes naudojame kanalą AIN0, šių keturių bitų pasirinkimas bus 0000.
Svarbūs yra 6 ir 7 bitai. ADCS turi nustatyti 1, kad būtų galima pradėti ADC konversiją, o ADCF pateiks informaciją apie sėkmingą ADC konversiją. Norėdami pradėti ADC konversiją, firmware turi jį nustatyti 0. Kitas registras yra ADCCON1-
ADCCON1 registras daugiausia naudojamas ADC konversijai, kurią sukelia išoriniai šaltiniai. Tačiau norint atlikti įprastas su apklausomis susijusias operacijas, pirmojo bito ADCEN reikia nustatyti 1, kad įjungtumėte ADC grandinę.
Tada ADC kanalo įvestį reikia valdyti AINDIDS registre, kur galima atjungti skaitmeninius įėjimus.
N reiškia kanalo tiek (Pavyzdžiui, AIN0 kanalas turės būti kontroliuojamas naudojant pirmuosius bitų P17DIDS iš AINDIDS registre). Skaitmeninį įvestį reikia įgalinti, kitaip jis bus 0. Tai visi yra pagrindiniai ADC nustatymai. Dabar, pradedant ADCF išvalymą ir nustatant ADCS, galima pradėti ADC konversiją. Konvertuotą vertę bus galima rasti toliau
Ir
Abu registrai yra 8 bitų. Kadangi ADC teikia 12 bitų duomenis, ADCRH naudojamas kaip pilnas (8 bitai), o ADCRL naudojamas kaip pusė (4 bitai).
N76E003 programavimas ADC
Kiekvieną kartą užkoduoti konkretų modulį yra įtemptas darbas, todėl pateikiama paprasta, bet galinga LCD biblioteka, kuri bus labai naudinga 16x2 simbolių skystųjų kristalų sąsajai su N76E003. 16x2 skystųjų kristalų biblioteka yra mūsų „Github“ saugykloje, kurią galite atsisiųsti iš toliau pateiktos nuorodos.
Atsisiųskite „Nuvoton N76E003“ 16x2 LCD biblioteką
Prašome turėti biblioteką (klonuojant ar atsisiunčiant) ir tiesiog įtraukite lcd.c ir LCD.h failus į savo „ Keil N76E003“ projektą, kad būtų lengva integruoti 16x2 LCD ekraną į norimą programą ar projektą. Biblioteka teiks šias naudingas su rodymu susijusias funkcijas:
- Inicializuokite LCD.
- Siųsti komandą į LCD.
- Rašykite į LCD.
- Įdėkite eilutę į LCD ekraną (16 simbolių).
- Spausdinkite simbolį, siųsdami šešioliktainę vertę.
- Slinkite ilgus, daugiau nei 16 simbolių, pranešimus.
- Spausdinkite sveikųjų skaičių tiesiai į LCD ekraną.
ADC kodavimas yra paprastas. Sąrankos funkcijoje Įjungti_ADC_AIN0; naudojama steigiant ADC už AIN0 įėjimo. Tai apibrėžta byloje.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Taigi, pirmiau nurodyta eilutė nustato kaištį kaip įvestį ir taip pat konfigūruoja ADCCON0, ADCCON1 registrą, taip pat AINDIDS registrą. Žemiau pateikta funkcija nuskaitys ADC iš ADCRH ir ADCRL registro, bet su 12 bitų skiriamąja geba.
nepasirašytas int ADC_read (negaliojantis) { registruoti nepasirašytą int adc_value = 0x0000; clr_ADCF; nustatyti_ADCS; o (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; return adc_value; }
Bitas 4 kartus perkeliamas kairėn ir tada pridedamas prie duomenų kintamojo. Pagrindinėje funkcijoje ADC skaito duomenis ir spausdinamas tiesiai ant ekrano. Tačiau įtampa taip pat konvertuojama naudojant santykį arba įtampos santykį, padalytą iš bitų vertės.
12 bitų ADC suteiks 4095 bitų 5,0 V įvestį. Taigi padalijant 5,0 V / 4095 = 0,0012210012210012V
Taigi, 1 skaitmuo bitų pokyčių bus lygus 0,001 V (apytiksliai) pokyčiams. Tai atliekama pagrindinėje žemiau parodytoje funkcijoje.
void main (void) { int adc_data; sąranka (); lcd_com (0x01); o (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("ADC duomenys:"); adc_data = ADC_read (); lcd_print_number (adc_data); įtampa = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", įtampa); lcd_com (0xC0); lcd_puts (str_voltage); „Timer0_Delay1ms“ (500); } }
Duomenys konvertuojami iš bitų vertės į įtampą ir naudojant „ sprintf“ funkciją, išvestis konvertuojama į eilutę ir siunčiama į LCD.
Mirksintis kodas ir išvestis
Kodas grąžino 0 įspėjimų ir 0 klaidų ir buvo mirksintis naudojant numatytąjį „Keil“ mirksėjimo metodą. Žemiau galite pamatyti mirksintį pranešimą. Jei esate naujas „Keil“ ar „Nuvoton“ vartotojas, patikrinkite, kaip pradėti naudoti „Nuvoton“ mikrovaldiklį, kad suprastumėte pagrindus ir kaip įkelti kodą.
Pradėtas atkūrimas : Projektas: laikmatis Atstatykite tikslą „Tikslas 1“, surenkant STARTUP.A51… kompiliuojant main.c … kompiliuojant lcd.c… kompiliuojant Delay.c… susiejant… Programos dydis: duomenys = 101.3 xdata = 0 code = 4162 kuriant šešioliktainį failą iš ". \ Objects \ timer"… ". \ Objects \ timer" - 0 klaidų, 0 įspėjimo (-ų). Praėjęs sukūrimo laikas: 00:00:02 Įkelti „G: \\ n76E003 \\ Display \\ Objects \\ timer“ „ Flash Erase Done“. „Flash Write Done“: užprogramuoti 4162 baitai. „Flash“ patvirtinimas atliktas: patvirtinti 4162 baitai. „Flash“ apkrova baigta 11:56:04
Žemiau pateiktame paveikslėlyje parodyta aparatūra, prijungta prie maitinimo šaltinio naudojant nuolatinės srovės adapterį, o ekrane rodoma įtampos išvestis, kurią nustato potenciometras dešinėje.
Pasukus potenciometrą, taip pat pasikeis įtampa, suteikta ADC kaiščiui, ir mes galime pastebėti LCD ekrane rodomą ADC vertę ir analoginę įtampą. Norėdami išsamią šios pamokos demonstraciją, galite peržiūrėti toliau pateiktą vaizdo įrašą.
Tikiuosi, kad jums patiko straipsnis ir sužinojote ką nors naudingo. Jei turite klausimų, palikite juos komentarų skiltyje žemiau, arba galite naudoti mūsų forumus kitiems techniniams klausimams skelbti.