V
vinash
Guest
¡Hola!
He tratado de interfaz ADC0804 y HY62256 (S-RAM) al microcontrolador AT89C52.La idea es hacer una conversión A / D con ADC 0804 y de almacenar la entrada de datos a la SRAM.El código que se había desarrollado el siguiente artículo.No parece funcionar.(
1.En primer lugar, incluso cuando yo no doy una señal de entrada al ADC, los interruptores LED
2.Los interruptores LED y de fuera (supongo que indica que el S-RAM ha alcanzado la dirección requerida)
3.La pantalla indica siempre 0; aunque no hay señal de entrada en el CAD.
)
# Include <reg52.h>
demora (void);
char sin signo xdata * addr data = 0x0000; / / declara un puntero mirando desde la dirección de memoria externa de 0x0000
sbit WRITE = ^ P3 0; / / definir el WR y INTR alfileres
INTR sbit = ^ P3 2; / / El pin INTR está conectado a la clavija en, por lo que cada vez que pasa a nivel bajo, que causa una interrupción
sbit LEA = ^ P3 3; / / Este es el pin LEA (por ADC)
sbit LED = ^ 1 P3;
BLANCO sbit = ^ P3 5; / / Estoy utilizando HP 5082-7340 (pantalla) y los espacios en blanco la pantalla cuando este pin va alto
advalue entero sin signo, el valor, j, convertido, k;
scanled (); / / para mostrar el valor de ADC en pantalla HP 5082-7340void main (void) (while (1) (
WRITE = 0; / / Conversión AD;
WRITE = 1;
while (INTR == 1);
delay ();
BLANCO = 1;
P1 = 0xFF; / / declara la P1 como datos de entrada después de la conversión A / D
LEA = 0;
advalue = P1; / / asignación de los bits de entrada (A / D bits) para advalue
LEA = 1;
if (<= addr 0x0014) / * seguir almacenando el bit 8 valores obtenidos de la ADC en dirección a partir del 0x0000 hasta
el S-RAM almacena los datos hasta que llega a la dirección 0x0014 * /
(LED = 1; / / para comprobar si existe alguna conversión (activando el LED)
* = Addr advalue; / / para almacenar los valores en la dirección
LED = 0;
scanled (); / / para mostrar el valor de la señal de entrada de un ADC
delay ();
) / / Para comprobar si existe alguna conversión
else (
LED = 1;
)
delay ()
)scanled ()
(
unsigned int a [10] = (0xE0, 0xF0, 0xE1, 0xf1, 0xE2, 0xF2, 0xE3, 0xF3, 0xE4, 0xF4); / / Configuración de pantalla 0-9
P1 = 0x00; / / declara P1 como salida
En blanco = 0; / / El blanco se baja para que la pantalla muestra los números de HP
convertidos = (* addr) * (5 / 256); / / Convertir el valor obtenido ADC para que la señal de entrada es entre 0-5V;
P1 = a convertirse% [10]; / / Mostrar el valor en puerto 1;for (j = 0; j <20000; j );
)
demora (void) / / Delay función usando Timer 0 para 50 ms.
(
TMOD & = 0xF0;
TMOD | = 0x01;
ET0 = 0;
TH0 = 0x3C;
TL0 = 0xB0;
TF0 = 0;
TR0 = 1;
while (TF0 == 0);
TR0 = 0;
)¿Podría alguien por favor dígame si hay algo mal en mi código.Gracias.
He tratado de interfaz ADC0804 y HY62256 (S-RAM) al microcontrolador AT89C52.La idea es hacer una conversión A / D con ADC 0804 y de almacenar la entrada de datos a la SRAM.El código que se había desarrollado el siguiente artículo.No parece funcionar.(
1.En primer lugar, incluso cuando yo no doy una señal de entrada al ADC, los interruptores LED
2.Los interruptores LED y de fuera (supongo que indica que el S-RAM ha alcanzado la dirección requerida)
3.La pantalla indica siempre 0; aunque no hay señal de entrada en el CAD.
)
# Include <reg52.h>
demora (void);
char sin signo xdata * addr data = 0x0000; / / declara un puntero mirando desde la dirección de memoria externa de 0x0000
sbit WRITE = ^ P3 0; / / definir el WR y INTR alfileres
INTR sbit = ^ P3 2; / / El pin INTR está conectado a la clavija en, por lo que cada vez que pasa a nivel bajo, que causa una interrupción
sbit LEA = ^ P3 3; / / Este es el pin LEA (por ADC)
sbit LED = ^ 1 P3;
BLANCO sbit = ^ P3 5; / / Estoy utilizando HP 5082-7340 (pantalla) y los espacios en blanco la pantalla cuando este pin va alto
advalue entero sin signo, el valor, j, convertido, k;
scanled (); / / para mostrar el valor de ADC en pantalla HP 5082-7340void main (void) (while (1) (
WRITE = 0; / / Conversión AD;
WRITE = 1;
while (INTR == 1);
delay ();
BLANCO = 1;
P1 = 0xFF; / / declara la P1 como datos de entrada después de la conversión A / D
LEA = 0;
advalue = P1; / / asignación de los bits de entrada (A / D bits) para advalue
LEA = 1;
if (<= addr 0x0014) / * seguir almacenando el bit 8 valores obtenidos de la ADC en dirección a partir del 0x0000 hasta
el S-RAM almacena los datos hasta que llega a la dirección 0x0014 * /
(LED = 1; / / para comprobar si existe alguna conversión (activando el LED)
* = Addr advalue; / / para almacenar los valores en la dirección
LED = 0;
scanled (); / / para mostrar el valor de la señal de entrada de un ADC
delay ();
) / / Para comprobar si existe alguna conversión
else (
LED = 1;
)
delay ()
)scanled ()
(
unsigned int a [10] = (0xE0, 0xF0, 0xE1, 0xf1, 0xE2, 0xF2, 0xE3, 0xF3, 0xE4, 0xF4); / / Configuración de pantalla 0-9
P1 = 0x00; / / declara P1 como salida
En blanco = 0; / / El blanco se baja para que la pantalla muestra los números de HP
convertidos = (* addr) * (5 / 256); / / Convertir el valor obtenido ADC para que la señal de entrada es entre 0-5V;
P1 = a convertirse% [10]; / / Mostrar el valor en puerto 1;for (j = 0; j <20000; j );
)
demora (void) / / Delay función usando Timer 0 para 50 ms.
(
TMOD & = 0xF0;
TMOD | = 0x01;
ET0 = 0;
TH0 = 0x3C;
TL0 = 0xB0;
TF0 = 0;
TR0 = 1;
while (TF0 == 0);
TR0 = 0;
)¿Podría alguien por favor dígame si hay algo mal en mi código.Gracias.