pomoc v prepojení AD0804 s AT89C4051

V

vinash

Guest
Nazdar,
Snažím sa prepojenie AD0804 s AT89C4051 microcontroller, existuje nejaká schmetics alebo akékoľvek webové stránky, kde by som mohol získať nejaké referencie> Thank you.

 
Hi Vinash,

Som si všimnete, že sa snaží získať nejaké ADC s AT89C4051.
Najprv s východiskovým komparátorom a RC externé.
ftopic144871.html
Potom ste sa pokúsil s MCP3208 vhodné pre 4051 kvôli niekoľkým spojovacie vedenie pomocou SPI trochu rana od 4051 nemá žiadny predvolený SPI rozhrania.
ftopic144860.html
Teraz si skúste s ADC0804 (mapovanej do pamäte periférneho sa oveľa viac ako spojovacie vedenia rozhranie SPI).

V pravý list, je to malý program, asssembler napísal v assembleri 8048.Môžete ho použiť ako návod pre plán C.

Prípadne môžete skúsiť tento design: http://www.iguanalabs.com/adc2051.htm
Uvedomte si, že na tejto stránke nenájdete žiadne softvér (budete musieť zaplatiť za CD), ale podľa môjho názoru sú dosť tipov postaviť sami.

 
HI,
Som prepojil AT89C4051 s ad0804 a môj zdrojový kód je nasledujúci:

/ / Prepojenie ADC0804 s AT89C4051,
/ / Defination čapov sú nasledovné:# Include <AT89x051.h>SBIT NAPÍŠTE = P3 ^ 0; / / definovanie WR intr a kolíky
SBIT intr = P3 ^ 1;

unsigned int [10] = (0x40, 0x60, 0x44, 0x64, 0x50, 0x68, 0x4C, 0x6C, 0x50, 0x70);
scanled ();
void delay (void);
unsigned int advalue, hodnoty;
void main (void) (
P1 = 0xff;
P3 = 0xff;

while (1) (

NAPÍŠTE = 0;
NAPÍŠTE = 1;
while (intr == 1);
advalue = P1;
value = advalue * 5 / 256;
scanled ();

)
)

scanled ()
(
P3 = [hodnota% 10];

)Myslím si čítanie, ale to nie je v reálnom čase, whenver aj zmena napätia InOut, musím prejsť na hlavnú vypnutie a pred vedením odráža napätie na vstupe, bolo by veľmi užitočné, keby ste mi pomohol o tom, ako na to v reálnom čase, to je aj nie je potrebné prepínať sieťové vypnúť, a whenver aj zmena napätia na vstupe, automaticky sa odráža v LED.Dúfam, že bude môcť, aby mi pomohol.Ďakujeme vám.

 
Ak ste použili P3 a P3 ^ 0 ^ 1 ako kontrolné línie, prečo vnútri scanled () P3 ste sa používa pre riadenie LED diódy?

Citácia:scanled ()

(

P3 = [hodnota% 10];

)

 
Nazdar,
I am using P3 riadiť LED diód, pretože i am using AT89C4051, a to má len 20 pinov, tak já dont mať dosť kolíky.

Citácia:

Som sa prísť na to, prečo ste sa vynásobia 5. a vydelí 256 ADC výsledky?

Vzhľadom k tomu, P1 nemôže získať hodnotu na viac ako 255, to, čo si myslíte o hodnotu "hodnota" premenná pred byť použité v scanled () po "advalue * 5 / 256"?

Je to potrebné po casting "advalue * 5 / 256" urobiť?
 
Ako už som vám povedal rozhranie SPI (MCP3208 ADC) je vhodnejšie pre váš návrh.

Aby mohla byť pomáhali ďalší členovia musíte poskytnúť bližšie informácie týkajúce sa vášho návrhu.
Ako môžete očakávať, že niekto bude zistiť, ako ste sa pripojiť na port LED P3?
Pouzivate 7 LED priamo viazaná na P3 (zrejmé obmedzovač prúdu cez odpory)?
Alebo ste použiť BCD 7 segment prevodníka (čo vyžaduje len 4 riadky, skôr ako 7)?
Pozrite sa na unsigned int [10] = (0x40, 0x60, 0x44, 0x64, 0x50, 0x68, 0x4C, 0x6C, 0x50, 0x70);
Po prvé, prečo unsigned int a unsigned char ne?Vzhľadom na to nie sú vyhlásené za konštantnú, budú uložené v pamäti RAM, plytvaniu miestom pre "int".
Ak je prvok poľa bude odoslaná na P3, potom sa podľa svojich vyhlásení
P3 ^ 7 = 0
P3 ^ 6 = 1
P3 ^ 1 = 0
P3 ^ 0 = 0
sú konštantné, bez ohľadu na element 0, 1, 2, ... 9, a tak budete odpadu 4 riadky.
Napriek tomu, že nemáte kontrolu nad P3 ^ 6, ktorá je viazaná na hardware interné porovnávacie výstup.

No späť k hardvéru.Nemôžete použiť P3 a P3 ^ 0 ^ 1 ako kontrolné linky (/ WR a / intr) a LED displej.
Majte na pamäti, že akonáhle konverzie sa začala, ďalšie zvýšenie na pulz / WR riadok (WRITE = 0; NAPÍŠTE = 1;) začne ďalší konverzie, a to aj v prípade, že predchádzajúca konverzia nebola dokončená.
Ak teda viazaná na P3 ^ 0 do / WR a LED displej rovnako, musíte byť istí, že LED signál nebude overide / WR signál.

Najlepším riešením je použiť ako pre čítanie P1 ADC (vstup) a písanie LED (výstup) (zapojenie je súčasne "autobus").
Ale musíte použiť / RD signál, ktorý je skutočne hardware viazaný na GND (Stavím sa, že je to tak, inak nie ste schopní čítať konverzie dát).
Zjavné / SK môže byť spojená s GND (ako dar) alebo spojené s P3 rovnako.
Pri zobrazení riadenie / RD signál musí byť vysoká a bude len ide nízky na krátku dobu počas čítania konverzie výsledkov ADC, keď / intr ide nízky.
Pretože čítať cyklus je krátky nemôžete ani vidieť blikajúce LED displej (ako v skutočnosti rovnaké čítanie dát z ADC bude doručená okamžite zobrazí na rovnakom porte).
Takto si môžete nastaviť ako P3 nižšie:
P3 ^ 0 = / SK
P3 ^ 1 = / WR
P3 ^ 2 = / intr môžete použiť / INT0 črtou 8051 skôr ako pre volebné EOC (while (intr == 1)

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

Funny dost ak nastavíte ADC0804 beží v režime spojitých (/ WR a / intr zviazané a / CS = 0, / RD = 0), nebudete potrebovať ani mikro.
Budete potrebovať iba 3 veci:
1.2 diódy, jeden odpor a spínač na začatí premeny na WR pin
2.Bufferu na disk LED
3.Finnaly šikovný mozog, aby sa na displeji konverzie (ak 0xff znamená pre vás ako 5 V plnom rozsahu, teda 0x80 znamená, 2,5 V)
Musíte uznať, že budete potrebovať mozog vidieť údaje o LED..

Len vtip.
 
skontrolovať knihy "8051 uC" Scott Mackenzie a "8051 uC a vstavané systémy" od mazidi

 
afti_khan Napísal:

skontrolovať knihy "8051 uC" Scott Mackenzie a "8051 uC a vstavané systémy" od mazidi
 
HI Silvio,
Ďakujeme za vašu pomoc, sa mi podarilo urobiť v reálnom čase ADC.Som urobil niektoré chyby v LED časti.Každopádne ešte raz vďaka za pomoc yor.Ste už predtým spomínanéCitácia:

Najlepším riešením je použiť ako pre čítanie P1 ADC (vstup) a písanie LED (výstup) (zapojenie je súčasne "autobus").

 
Hi Vinash,

Majte na pamäti, že čas potrebný pre čítanie výsledkov konverzie je veľmi krátka.
Avšak tieto dáta čítať okamžite zobrazí na rovnakom P1.Tak ste zvyknutý vidieť žiadny vplyv na LED.
Moja chyba, ktorú mám na mysli predovšetkým je, že pri čítaní z ADC0804 by prevodník nie je schopný potopiť LED aktuálne a vhodné VIL max mäso na P1.
Ste už oboznámení s prepojenia dvoch zariadení, ktoré zdieľajú rovnaký autobus.
Keď je povolené (SK), iné musia byť vypnutá, aby sa predišlo konfliktu.
Vzhľadom k tomu, LED nemajú chová ako taká spoločné zariadenia, musíte poskytnúť spôsob, ako zakázať im počas krátkej čítaní cyklu ADC0804.
Predpokladám, že máte LED so spoločnou anódou potom malý PNP tranzistor schopná získať potrebné aktuálne pojede LED.
Tranzistora bude neobjektívne cez odpor tým, P3 ^ 7, ktorý je poháňaný nízka počas displeja a vysoko počas krátkeho cyklu čítania ADC.
Jasné, kolektorom tranzistora je viazané na spoločnej anódy LED emitor a pokračuje smerom na 5 V.

Dúfam, že sme uspeli ujasniť si svoje pochybnosti.

 
Ďakujem vám Silvio, tak já mám iný dotaz, dúfam, že by ste boli schopní mi pomôcť, namiesto použitia paralelného prenosu pre čítanie vstupe ADC (s využitím celej P1), možno použiť aj sériový prenos?ako som si ušetriť na kolíky? Prosím láskavo poradiť.Ďakujeme vám.

 
Hi Vinash,

Podľa prvý pokus ftopic144860.html pomocou MPC3208 s rozhraním SPI.
Ako už som ti to hovorila, pretože AT89C4051 nemá žiadny hardware SPI rozhranie, musíte použiť "bit bang" spôsob využitia general-purpose I / O lines emulovať sériový port.
Potrebujete len 4 dráty: SK, CK, dout, Din
Prečítajte si toto: My Microcontroller nepoužíva SPI rozhranie, tak Môžem použiť Bit-výprask?Potom všetko, čo potrebujete, je hlavne prečítať na stránkach 15 až 16 o
MPC3208 Microchip list

Ak však chcete používať RX a TX radu AT89C4051, môžete použiť AD7823 a nastaviť 8051 pracovať v režime 0.
Strana 10 z analógových AD7823

 

Welcome to EDABoard.com

Sponsor

Back
Top