Pomoc potrebujú PIC16F877 hodnoty ADC ..

C

chwoei

Guest
Ahoj všetci, mám nejaký problém pri získavaní hodnoty v programovaní C po dobu analógového na digitálny vstup pre PIC16F877. Páči sa niekto vie, ako sa dostať na hodnoty, kedy je infračervený senzor (analógové) prevedie na digitálne hodnoty? ako nastaviť porty ani žiadne potrebné alogorithms v programovaní získať hodnoty, keď sa zistí rôzne vzdialenosti. Dúfam, že sa niekto dobre v PIC môže pomôcť! : P. .. dúfam, že to počujem od chalanov odbočkám čoskoro .. So srdečným pozdravom, CHANG
 
[Quote = chwoei] Ahoj všetci, mám nejaký problém pri získavaní hodnoty v programovaní C po dobu analógového na digitálny vstup pre PIC16F877. Páči sa niekto vie, ako sa dostať na hodnoty, kedy je infračervený senzor (analógové) prevedie na digitálne hodnoty? ako nastaviť porty ani žiadne potrebné alogorithms v programovaní získať hodnoty, keď sa zistí rôzne vzdialenosti. Dúfam, že sa niekto dobre v PIC môže pomôcť! : P. .. dúfam, že to počujem od chalanov odbočkám čoskoro .. So srdečným pozdravom, CHANG [/quote] Tento kód CSS c kompilátor # ak je definovaná (__PCM__) # include # Poistky HS, NOWDT a NOPROTECT a NOLVP # použitie meškanie (hodiny = 20000000) # používať RS232 (baud = 9600, xmit = PIN_C6 , JH = PIN_C7) # elif definovaný (__PCH__) # include # Poistky HS, NOWDT a NOPROTECT a NOLVP # použitie meškanie (hodiny = 20000000) # používať RS232 (baud = 9600, xmit = PIN_C6, JH = PIN_C7) # endif void main () {int i, hodnota, min, max, printf ("Odber vzoriek:"); setup_port_a (ALL_ANALOG) setup_adc (ADC_CLOCK_INTERNAL) set_adc_channel (0); do {min = 255, max = 0; for (i = 0 ; i
 
Ahoj, vďaka za reakciu, ale ja používam prekladač Picc, môžem mať Picc jeden? a tiež poznámky týkajúce sa kódu ... vďaka.
 
Inicializácia Porta náležité kolík ako "analógového a vstup" v ADCON1 registra a registra TRIS. vyberte ADC pin, z ktorých je hodnota analógového čítať v ADCON0 malé zdržanie súbor ADGO trochu počkať do Je ADGO trochu schválila hardware (znamená ADC dát je pripravený) ADC Value = ADRESH * 256 + ADRESL
 
ahoj, vďaka za explaination. môže u povedz mi, ako to funguje ADC Value = ADRESH * 256 + ADRESL vďaka
 
Ahoj! Výsledok generované ADC je 10 bit a je držaný v ADRESH (vyšší byte) a ADRESL (nízke byte). Výsledkom môžu byť kombinované do jedného 16bit premennú, tj celé číslo) pomocou hodnoty ADC = ADRESH * 256 + ADRESL, kedy u násobiť obsah ADRESH s 256 to je vlastne posunul 8x doľava a potom u pridajte dolnej register na to sa dostať skutočné hodnoty. tj napr ak ADRESH = 0x03 a 0x0F = ADRESL, potom ADC hodnota = (ADRESH
 
Dobrý deň, poviem vám, ako to urobiť v zostave: Za predpokladu, že PIC16F877 používa 10 bit rozlíšenie pre ADC, to znamená, že dva registre ADRESH a ADRESL predstavujú analógové dáta s maximálnou (2 ^ 10) - 1 = 1023. Tu je, čo má robiť: Krok 0. Urobiť ADRESH a ADRESL Práve Justified (teraz 00000011 11111111 je rovnaký ako v desiatkovej 1023) Krok 1. Skladujte ADRESH na miestnej 8 bitov premenné povedať, R1 Krok 2. Skladujte ADRESL iné 8 bitov lokálne premenné povedať R2 S ohľadom na vyššie uvedené kroky, budete musieť R1 R2 ktorých dva osembitových registrov s aktuálnou digitálnu hodnotu analógového vstupu. Krok 3. Urobiť 16 bit odčítanie medzi čítanie hodnoty a 03 FF (1023 v desiatkovej sústave) rovnako ako v klasickom štýle 8086 a previesť rozdiel do ASCII. Na tomto mieste môžete urobiť multiplikačný postup pre získanie vstupného napätia v desatinnej forme. Krok 4. Ak chcete previesť do ASCII (tip) si budete musieť urobiť, je 1000, 100 rokov, 10 rokov a 1 je odčítanie z dvoch 8 bitov registrov jeden po druhom sa dostať presné ASCII hodnoty jednotlivých číslic. Tieto jednotlivé číslice potom môžu byť zaslaná priamo do vašej LCD alebo uložiť do pamäte pre neskoršie použitie. Gratulujeme! Práve ste sa naučili, ako zvládnuť 16 bit data PIC montážne :)
 

Welcome to EDABoard.com

Sponsor

Back
Top