aiuto per l'interfacciamento AD0804 a AT89C4051

V

vinash

Guest
Salve,
Sto cercando di interfaccia AD0804 a microcontrollore AT89C4051, c'è qualche schmetics o dei siti in cui sarei stato in grado di ottenere un qualche riferimento> Thank you.

 
Hi Vinash,

Ho bando si lotta per ottenere alcuni ADC con AT89C4051.
Prima con comparatore di default e RC esterni.
ftopic144871.html
Poi si è tentato con MCP3208 adatto a 4.051 a causa di alcune linee di collegamento con Bang po SPI dal 4051 non ha l'interfaccia predefinita SPI.
ftopic144860.html
Ora si tenta con ADC0804 (una memoria mappata periferici, con molto più linee di collegamento e di interfaccia SPI).

In vera e propria scheda tecnica è un piccolo programma asssembler scritto in assembler 8048.È possibile utilizzare come guida per un programma C.

In alternativa si può provare a questo progetto: http://www.iguanalabs.com/adc2051.htm
Essere consapevoli del fatto che su questa pagina, non troverete alcun software (si deve pagare per i CD), un accenno, ma a mio parere, sono sufficienti per costruire da soli.

 
HI,
Ho interfacciato AT89C4051 con ad0804, e il mio codice sorgente è come segue:

/ / ADC0804 Interfacciamento con AT89C4051,
/ / Defination di spilli sono i seguenti:# include <AT89x051.h>sbit WRITE = P3 ^ 0 / / definire il WR e INTR pins
sbit INTR = P3 ^ 1;

unsigned int a [10] = (0x40, 0x60, 0x44, 0x64, 0x50, 0x68, 0x4C, 0x6c, 0x50, 0x70);
scanled ();
void delay (void);
unsigned int advalue, il valore;
void main (void) (
P1 = 0xFF;
P3 = 0xFF;

while (1) (

WRITE = 0;
WRITE = 1;
while (INTR == 1);
P1 advalue =;
value = advalue * 5 / 256;
scanled ();

)
)

scanled ()
(
P3 = a [valore 10%];

)Io capisco le letture, ma non è in tempo reale, i whenver cambiare il INOUT di tensione, devo passare del potere centrale e spegnendo prima che il LED riflette l'ingresso in tensione, sarebbe molto utile, se si dovesse aiutarmi su come farlo in tempo reale, vale a dire, non ho bisogno di switch off della rete, e io whenver cambiare l'ingresso di tensione, si riflette automaticamente nella LED.Spero che lei sarebbe in grado di aiutarmi.Grazie.

 
Se hai utilizzato P3 ^ 0 e P3 ^ 1, come linea di controllo perché all'interno scanled () non è stato utilizzato per il pilotaggio di LED P3?

Quote:scanled ()

(

P3 = a [valore 10%];

)

 
Salve,
Sto usando P3 a guidare LED perché io sto usando AT89C4051 ed ha solo 20 pin, in tal modo i dont hanno pin abbastanza.

Quote:

Io non capire perché hai moltiplicato per 5 e poi diviso per 256 risultati ADC?

P1 poiché non è possibile ottenere un valore superiore a 255, cosa ne pensa il valore di "valore" variabile prima di essere utilizzato in scanled () dopo "advalue * 5 / 256"?

It's casting necessaria dopo "advalue * 5 / 256" eseguito?
 
Come ho detto l'interfaccia SPI (MCP3208 ADC) è più adatto al tuo progetto.

Al fine di essere aiutato da altri membri è necessario per fornire maggiori dettagli per quanto riguarda il vostro progetto.
Come pensate che qualcuno a capire come hai fatto a collegare il LED P3 porto?
Do you use 7 LED direttamente legata alla P3 (ovvio attraverso resistenze limitatore di corrente)?
Oppure si utilizza un BCD a 7 segmenti del convertitore (che richiede solo 4 linee, invece di 7)?
Guardare il unsigned int a [10] = (0x40, 0x60, 0x44, 0x64, 0x50, 0x68, 0x4C, 0x6c, 0x50, 0x70);
In primo luogo perché non unsigned int e unsigned char?Dal momento che non sono dichiarati come costanti, verrà memorizzato in RAM, quindi spreco di spazio per "int".
Se un elemento della matrice sarà inviata al P3, allora, secondo la sua dichiarazione
P3 ^ 7 = 0
P3 ^ 6 = 1
P3 ^ 1 = 0
P3 ^ 0 = 0
sono costanti indipendentemente elemento 0, 1, 2, ... 9, quindi ti rifiuti di 4 linee.
Tuttavia, che non hai il controllo della P3 ^ 6, che è legata hardware interno uscita del comparatore.

NO Torna hardware.Non è possibile utilizzare P3 ^ 0 e P3 ^ 1, come le linee di controllo (/ WR e / INTR) e display a LED.
Tenete a mente che una volta che una conversione è stato avviato, un altro aumento di impulso on / line WR (write = 0; WRITE = 1;) inizierà un'altra conversione, anche se la conversione precedente non era finito.
Così, se legato a P3 ^ 0 / WR e display a LED e, dovete essere sicuri che il segnale LED non overide il segnale / WR.

La soluzione migliore è quella di utilizzare P1 sia per la lettura ADC (input) e la scrittura LED (output) (cablaggio loro parallelo sul bus ").
Ma si deve utilizzare il segnale / RD che è in realtà l'hardware legato a GND (scommetto che è così, altrimenti non sono in grado di leggere la conversione di dati).
Ovvio che il / CS potrebbe essere tenuto legato a GND (come oggi) o legati alla P3 pure.
Durante la procedura di visualizzare il segnale / RD deve essere alto e basso, vale solo per un breve periodo durante la lettura dei risultati di conversione ADC quando / INTR va basso.
Perché il ciclo di lettura è breve non si può nemmeno vedere il display LED lampeggia (come di fatto gli stessi dati letti da ADC sarà consegnato immediatamente al display sulla porta stessa).
In tal modo è possibile impostare P3 come muggito:
P3 ^ 0 = / CS
P3 ^ 1 = / WR
P3 ^ 2 = / INTR è possibile utilizzare / INT0 caratteristica del 8051, piuttosto che di polling per EOC (while (INTR == 1)

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />P3 ^ 4 = / RD

Abbastanza divertente se si imposta la ADC0804 in esecuzione in modalità continua (/ WR e / INTR legati insieme, e / CS = 0, / RD = 0) non hai nemmeno bisogno di un micro.
È necessario solo 3 cose:
1.2 diodi, un resistore e un interruttore per avviare la conversione a / pin WR
2.Un buffer di guidare i LED
3.Finnaly un cervello intelligente di effettuare la conversione di visualizzazione (se 0xFF significa per voi 5 V come scala, poi 0x80 significa 2,5 V)
Devi ammettere che è necessario il cervello per visualizzare i dati relativi LED..

Solo uno scherzo.
 
controllare i libri "8.051 uC" di Mackenzie Scott e "8.051 UC e sistemi embedded" di mazidi

 
afti_khan ha scritto:

controllare i libri "8.051 uC" di Mackenzie Scott e "8.051 UC e sistemi embedded" di mazidi
 
HI Silvio,
Grazie per il vostro aiuto, sono riuscito a fare in tempo reale ADC.Avevo fatto alcuni errori nella parte LED.Comunque ringrazio ancora per aiutare yor.Lei aveva citato in precedenzaQuote:

La soluzione migliore è quella di utilizzare P1 sia per la lettura ADC (input) e la scrittura LED (output) (cablaggio loro parallelo sul bus ").

 
Hi Vinash,

Tenete a mente che il tempo necessario per leggere i risultati di conversione è molto breve.
Tuttavia, i dati si leggono sono immediatamente visualizzati sul P1 stesso.Così si suole vedere alcun effetto su LED.
Mio errore che sto parlando di cui sopra è che durante una lettura di ADC0804, il convertitore non sarebbe in grado di affondare la carne LED VIL attuale e adeguata max a P1.
Hai già familiarità con il collegamento di due dispositivi che condividono lo stesso bus.
Quando si è attivata (CS), altri devono essere disattivata per evitare conflitti.
Dal LED non si comporta come tale, non comuni dispositivi, è necessario per fornire un modo per disattivarli durante il ciclo di breve lettura di ADC0804.
Supponendo che si sono LED con l'anodo comune, quindi un transistor PNP piccola in grado di reperire i necessari corrente unità LED.
Il transistor è polarizzato attraverso una resistenza da P3 ^ 7, che è guidato durante la visualizzazione a bassa e alta durante il ciclo di ADC breve lettura.
Evidente il colector di transistor è legata alla anodo comune di LED e Emitor va verso 5 V.

Spero di esserci riuscito a chiarire i vostri dubbi.

 
Thank you Silvio, così ho un'altra query, spero che lei sarebbe in grado di aiutare me, invece di utilizzare la trasmissione parallela per leggere l'ingresso ADC (utilizzando l'intera P1), posso usare la trasmissione seriale?di quanto io possa salvare sul pin? Si prega di fare gentilmente di consigliare.Grazie.

 
Hi Vinash,

In base alle vostre ftopic144860.html primo tentativo utilizzando MPC3208 con interfaccia SPI.
Come ho detto prima, dal momento che AT89C4051 non ha alcuna interfaccia hardware SPI è necessario utilizzare "bang po '" metodo di utilizzo generale-purpose I / O lines per emulare una porta seriale.
È necessario solo 4 fili: CS, CK, DOUT, Din
Leggi questo: My microcontrollore non ha alcuna interfaccia SPI, così posso usare il Bit-Banging?Allora tutto ciò che serve è quello di leggere soprattutto le 15 pagine - 16
MPC3208 Microchip Data Sheet

Tuttavia, se si desidera utilizzare le linee RX e TX della AT89C4051 è possibile utilizzare AD7823 e impostare l'8051 per operare in modalità 0.
Pagina 10 di Analog AD7823

 

Welcome to EDABoard.com

Sponsor

Back
Top