V
vinash
Guest
Salut,
J'ai essayé de l'interface et ADC0804 HY62256 (S-RAM) à microcontrôleur AT89C52.L'idée est de faire une conversion A / D à l'aide ADC 0804 et que le stockage des données entrées dans la SRAM.Le code que j'avais développés ci-dessous pour référence.Il ne semble pas fonctionner.(
1.Tout d'abord, même si je ne donne pas un signal d'entrée à l'ADC, la LED s'allume
2.La LED s'allume et que OFF (je suppose indiquant que le S-RAM a atteint l'adresse requise)
3.L'afficheur indique toujours 0; même s'il est le signal d'entrée dans l'ADC.
)
# Include <reg52.h>
retard (void);
xdata données * addr unsigned char = 0x0000, / / déclare un pointeur regarder de l'adresse mémoire externe de 0x0000
sbit WRITE = ^ P3 0; / / définition du WR et INTR épingles
INTR sbit P3 = ^ 2; / / La broche INTR est connecté à la cheville dans, de sorte que chaque fois qu'il passe au niveau bas, il cause une interruption
sbit LIRE P3 ^ = 3; / / Ceci est la broche lecture (pour les ADC)
sbit LED = ^ P3 1;
BLANK sbit = ^ P3 5; / / Je suis l'aide de HP 5082-7340 (affichage) et les blancs d'affichage lorsque cette broche passe au niveau haut
advalue unsigned int, la valeur, j, convertis, k;
scanled (); / / pour afficher la valeur ADC sur HP 5082-7340 affichagevoid main (void) (while (1) (
WRITE = 0; / / conversion AD;
WRITE = 1;
while (INTR == 1);
retard ();
BLANK = 1;
P1 = 0xFF; / / P1 déclarant que les données d'entrée après la conversion A / D
LIRE = 0;
advalue = P1; / / l'attribution des bits d'entrée (A / D bits) à advalue
LIRE = 1;
if (<addr = 0x0014) / * continuer à stocker les bits 8 valeurs obtenues de l'ADC dans l'adresse à partir de 0x0000 jusqu'à
le S-RAM stocke des données jusqu'à l'adresse atteint 0x0014 * /
(LED = 1; / / pour vérifier s'il ya une conversion (en faisant basculer la LED)
* Addr = advalue; / / pour stocker les valeurs dans l'adresse
LED = 0;
scanled (); / / pour afficher la valeur du signal d'entrée sur un ADC
retard ();
) / / Pour vérifier s'il existe une conversion
else (
LED = 1;
)
retard ()
)scanled ()
(
unsigned int de 10 [] = (0xE0, 0xF0, 0xE1, 0xF1, 0xE2, 0xF2, 0xE3, 0xF3, 0xE4, 0xF4) / / Configuration pour l'affichage de 0 à 9
P1 = 0x00; / / déclare P1 en sortie
BLANK = 0; / / Les Nuls est faible alors que l'affichage indique le nombre HP
convertis = (* addr) * (5 / 256); / / Convertit la valeur ADC a obtenu de sorte que le signal d'entrée est comprise entre 0-5V;
P1 = converti% [10]; / / Affichage de la valeur sur Port1;for (j = 0; j <20000; j );
)
retard (void) / / Delay Timer fonction en utilisant 0 pour 50 ms.
(
TMOD & = 0xF0;
TMOD | = 0x01;
ET0 = 0;
TH0 = 0x3C;
TL0 = 0xB0;
TF0 = 0;
TR0 = 1;
while (TF0 == 0);
TR0 = 0;
)Quelqu'un pourrait-il s'il vous plaît me dire si il ya quelque chose de mal avec mon code.Merci.
J'ai essayé de l'interface et ADC0804 HY62256 (S-RAM) à microcontrôleur AT89C52.L'idée est de faire une conversion A / D à l'aide ADC 0804 et que le stockage des données entrées dans la SRAM.Le code que j'avais développés ci-dessous pour référence.Il ne semble pas fonctionner.(
1.Tout d'abord, même si je ne donne pas un signal d'entrée à l'ADC, la LED s'allume
2.La LED s'allume et que OFF (je suppose indiquant que le S-RAM a atteint l'adresse requise)
3.L'afficheur indique toujours 0; même s'il est le signal d'entrée dans l'ADC.
)
# Include <reg52.h>
retard (void);
xdata données * addr unsigned char = 0x0000, / / déclare un pointeur regarder de l'adresse mémoire externe de 0x0000
sbit WRITE = ^ P3 0; / / définition du WR et INTR épingles
INTR sbit P3 = ^ 2; / / La broche INTR est connecté à la cheville dans, de sorte que chaque fois qu'il passe au niveau bas, il cause une interruption
sbit LIRE P3 ^ = 3; / / Ceci est la broche lecture (pour les ADC)
sbit LED = ^ P3 1;
BLANK sbit = ^ P3 5; / / Je suis l'aide de HP 5082-7340 (affichage) et les blancs d'affichage lorsque cette broche passe au niveau haut
advalue unsigned int, la valeur, j, convertis, k;
scanled (); / / pour afficher la valeur ADC sur HP 5082-7340 affichagevoid main (void) (while (1) (
WRITE = 0; / / conversion AD;
WRITE = 1;
while (INTR == 1);
retard ();
BLANK = 1;
P1 = 0xFF; / / P1 déclarant que les données d'entrée après la conversion A / D
LIRE = 0;
advalue = P1; / / l'attribution des bits d'entrée (A / D bits) à advalue
LIRE = 1;
if (<addr = 0x0014) / * continuer à stocker les bits 8 valeurs obtenues de l'ADC dans l'adresse à partir de 0x0000 jusqu'à
le S-RAM stocke des données jusqu'à l'adresse atteint 0x0014 * /
(LED = 1; / / pour vérifier s'il ya une conversion (en faisant basculer la LED)
* Addr = advalue; / / pour stocker les valeurs dans l'adresse
LED = 0;
scanled (); / / pour afficher la valeur du signal d'entrée sur un ADC
retard ();
) / / Pour vérifier s'il existe une conversion
else (
LED = 1;
)
retard ()
)scanled ()
(
unsigned int de 10 [] = (0xE0, 0xF0, 0xE1, 0xF1, 0xE2, 0xF2, 0xE3, 0xF3, 0xE4, 0xF4) / / Configuration pour l'affichage de 0 à 9
P1 = 0x00; / / déclare P1 en sortie
BLANK = 0; / / Les Nuls est faible alors que l'affichage indique le nombre HP
convertis = (* addr) * (5 / 256); / / Convertit la valeur ADC a obtenu de sorte que le signal d'entrée est comprise entre 0-5V;
P1 = converti% [10]; / / Affichage de la valeur sur Port1;for (j = 0; j <20000; j );
)
retard (void) / / Delay Timer fonction en utilisant 0 pour 50 ms.
(
TMOD & = 0xF0;
TMOD | = 0x01;
ET0 = 0;
TH0 = 0x3C;
TL0 = 0xB0;
TF0 = 0;
TR0 = 1;
while (TF0 == 0);
TR0 = 0;
)Quelqu'un pourrait-il s'il vous plaît me dire si il ya quelque chose de mal avec mon code.Merci.