potrebnej pomoci v AT89C4051

V

vinash

Guest
Ahoj,
Som nový prichádzajúci do oblasti mikrokontrolérov a robí niekoľko jednoduchých projektov, ktoré majú zoznámiť s mikroprocesormi.V súčasnej dobe som pustil pomocou AT89C4051 ako ADC.Som skutočne snaží používať aplikáciu poznámky poskytol nasledujúce internetovej adrese:
h ** p: / / www.atmel.com/dyn/resources/prod_documents/DOC0524.PDF
Bolo by veľmi užitočné, keby niekto, aby mi pomohol s kódovaním (C-program) pre použitie.Skúšal som niekoľkokrát, ale zlyhali.Vašej pomoci by sa greaatly ocenil.
Som urobil súvislostí na prepočet ADC a spojil kladné napätie signálu Pin 1,1.a napísal som veľmi jednoduchý program, ktorý by bol schopný výstupné napätie čítanie LED.
Program je nasledujúci:

# Include <AT89x051.h>

char [10] = (0x03, 0x13, 0x23, 0x33, posunov 0x43, 0x53, 0x63, 0x73, 0x83, 0x93), / * číslovanie 0-9 * /void main (void)

(Int j, adc_data;
while (1) (

P1_1 = adc_data;
P1 = [adc_data% 10];
pre (j = 0; j <30000; j );

)
)Já vždycky dostanem nulu na môj LED displej, bez ohľadu na to, ako som sa zmenil napätie vstupné, Mohol by niekto prosím HELP.i som zápasí s týmto niekoľko dní.Ďakujem

 
Zaujímalo by ma, aké dáta uložené v adc_data aj schematické, ktorý používate.
Ak používate celý P1 (8 pinov) pre ovládanie LED, kde dostanete adc_data?
Tiež, aký je význam P1_1 = adc_data?

 
Mám pripojený 8.2K rezistor k zemi priamo, miesto pripojenie k 30Pf kondenzátora, ako je uvedené v schmetic diagrame (v danej internetovej stránky).Urobil som to tak, že vždy, keď je zapnutý, to by rovno svetla LED diódy, skôr ako ho museli prepínať, keby som pripojený podľa schmetic danej.

P1_1 = adc_data,
Čo sa snažím urobiť, je priradiť 8 bit data od napájacieho napätia (od pin 1,1) na adresu adc_data.

P1 = [adc_data% 10];
Snažím sa výstupné dáta, ktoré sú uložené v adrese adc_data na LED pripojenie.

To všetko je snažím do.I Dúfam, že bude schopný vyriešiť môj problém.Děkuju.

 
vinash Napísal:

...

P1_1 = adc_data,

Čo sa snažím urobiť, je priradiť 8 bit data od napájacieho napätia (od pin 1,1) na adresu adc_data.P1 = [adc_data% 10];

Snažím sa výstupné dáta, ktoré sú uložené v adrese adc_data na LED pripojenie.

...
 
Ahoj,
Vďaka za pomoc, v skutočnosti som celkom zmätená o tom, ako čítať vstup (napríklad, ako čítať napätie vstup z P1.1), som si prečítal v manuále a museli konštatovať, že na využitie ako vstupný port , stačí napísať 1s na ne.Bolo by skvelé, keby ste schopní mi pomohol v this.I som tiež nie je istý, ako zachytiť dáta, ktoré sa získava z P1.1.

 
Ak chcete port má byť vstupný port, napíšte 1s do prístavu.Môžete tiež nastaviť jeden pin byť vysoké, aby sa pin, aby sa vstupné pin.Urobil som to dobre v AT89C51.

Mimochodom, mám dotaz, či Port 1 sa používa ako výstupný port, a chcem poslať všetky 1s až 8 LED pomocou Port 1, môže správca urobiť?Alebo to bude port 1 ako vstupný port?Som pomocou AT89C51.

 
Ahoj Lekka,
Ak to je vec, tak hovorím, ja dávam príkaz, ako je
P1 = 0x03 Znamená to, že som automaticky pomocou P1.0 a P1.1 ako vstupy a ostatné piny ako výstup?

 
Nie som si istý, ako program vo C. som pomocou assembleru a assembler Asem51.

Ak chcete port 1 ako vstupný port, je kód
MOV P1, # FFH

Ak chcete jeden pin (napr. Pin 1,1) ako vstupný pin, je kód
Sejba P1.1

Myšlienka je, nastaviť konkrétny port alebo jeden pin vysoké, port alebo pin bude vstupný port, alebo vstup., Bez toho robili to, nemôžete prijímať dáta ich použitia.

 
Ja ani neviem, ako to schematicky funguje ako ADC, takže nemôžem odpovedať, ako získať dáta.
Pre vstup, vinash by ste mali byť v poriadku.Môžete sa len snažím vo svojom obvode.
Ako si vravel, že nemôže zobraziť v LED, Zaujímalo by ma, aký kód, ktorý ste napísal pre ovládanie vášho LED.Vadí vám, že vysielanie pre nás?

 
HI Tofinkh,
Program, ktorý som napísal, je nižšie:

Tiež som nahrali súbor, prosím pozrite sa a prosím dajte mi vedieť, ak nájdete nejakú chybu, vďaka moc, mám veľmi vážime vašej pomoci

# Include <AT89x051.h>

char [10] = (0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97);
char b [10] = (0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F);
neplatné oneskorenia (int count);
void main (void)

(
unsigned char adc_data;

P1 = 0x03, / / nastavenie P1.0 a P1.1 ako vstupy a zvyšok P1 ako výstup
while (1) (
P1_1 = adc_data; / / načítanie dát (z napätia vstupného) z P1.1 a uložte ho na adc_data
meškanie (5);
P1 = P1 &0x03; / / set P1 znovu tak, aby P1.0 a P1.1 sú vstupy a ostatné porty P1 SRE výstup
P1 = [adc_data% 10]; / / nájsť zvyšok získaných údajov, napríklad ak je 0x15, zvyšok je 1 tak P1 & 0x03 = 1
/ / A [1] = 1 a teda 1 by sa zobrazí
meškanie (5);
)
)neplatné oneskorenia (int count)
(
int j;
pre (j = 0; j <počítať; j ) (
pokračovať;
)
)

 
hi,

Radšej skontrolovať, ako ADC pracuje v dokumente ako prvý.Ak chcete, aby hodnoty z P1.1 a uložiť ho do adc_data, malo by byť
adc_data = P1_1;

pre riadenie 7 segment LED, musíte povoliť LED pred odoslaním hodnoty, P1.2 a P1.3 v schéme, umožňuje, aby jeden LED naraz.Prosím, pozrite sa na jeho údajovom hárku tiež.

 
HI, mal som upravil kód, a nový kód je nasledujúci: a ako ste sa zmienil o P1.2 a P1.3, ktoré bolo zapojených nízka kedykoľvek viedla záujmu je používaný.Robil som, že aj v súčasnej dobe som len za použitia jedného viedla k testovanie a za to som nechal P1.3 vždy nízke a P1.2 vždy vysoká, takže len jedna LED je používaný.Ale aj napriek tomu dont brať akýkoľvek údaje o LED.Dúfam, že bude schopný pomôcť.Děkuju.

# Include <AT89x051.h>

char [10] = (0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x87, 0x97);
char b [10] = (0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F);
neplatné oneskorenia (int count);
void main (void)

(
unsigned char adc_data, z;

P1 = 0x03, / / nastavenie P1.0 a P1.1 ako vstupy a zvyšok P1 ako výstup
while (1) (
P3_7 = 0;
P1 = P1 &0x03; / / set P1 znovu tak, aby P1.0 a P1.1 sú vstupy a ostatné porty P1 SRE výstup
adc_data = P1_1; / / načítanie dát (z napätia vstupného) z P1.1 a uložte ho na adc_data
z = P1 &0x03;
z = [adc_data% 10];
meškanie (5);
P1 = P1 &0x03;
P1 = [adc_data]; / / nájsť zvyšok získaných údajov, napríklad ak je 0x15, zvyšok je 1 tak P1 & 0x03 = 1
/ / A [1], = 1 a teda 1 by sa zobrazí
meškanie (5);

)
)neplatné oneskorenia (int count)
(
int j;
pre (j = 0; j <počítať; j ) (
pokračovať;
)
)

 
vinash, ako AT89C4051 nemá "reálny" ADC, ADC vo vašej žiadosti na vedomie, sa vykonáva pomocou komparátora a niekoľko jednoduchých RC obvode.Musíte prečítať dokumentu pred chcete dostať analógové hodnoty.To by nemalo byť vykonané jednoducho napísaním adc_data = P1_1.
Skontrolujte prosím starostlivo o svojej žiadosti na vedomie prvé.HTH

 
Ahoj Tofinhk,
Ďakujeme vám za vašu láskavo aadvice, by sa snažil niečo urobiť.Ale rovnako, v skutočnosti oceniť za pomoc, ktorú poskytoval

 

Welcome to EDABoard.com

Sponsor

Back
Top