Practica microcontrolador at89s52
Enviado por ramscar • 30 de Agosto de 2015 • Práctica o problema • 882 Palabras (4 Páginas) • 337 Visitas
COMPONENTES NECESARIOS
• Protoboard.
• Resistencias de 330Ω y 1kΩ.
• DipSwitch.
• Cable telefónico.
• 4 leds.
• Un programador USBASP.
• Dos pushbutton.
• Display de 7 segmentos.
DESARROLLO
Para la práctica de microprocesador at89s52 se pide que este cumpla con cuatro funciones:
00.- Con esta función el microprocesador recibe por medio de cuatro entradas un número en binario y debe convertirlo a decimal en el display, y además debe mostrar el número en binario encendiendo ó apagando, según sea el caso, cuatro leds.
01.- Con esta función, el microprocesador debe realizar un conteo manual por medio de dos pushbutton, uno para incrementar y otro para disminuir.
10.- Con esta función, el display debe realizar un conteo automático de 0 a 9 y después de 9 a 0.
11.- El microprocesador realiza un juego de luces con los cuatro leds ensamblados siguiendo el siguiente orden:
Se realizan las siguientes operaciones básicas para obtener los datos necesarios de llenado en el programa en c.
TABLA DE ENTRADA-SALIDA
ENTRADAS SALIDAS HEX
P 1.3 P 1.2 P 1.1 P 1.0 P 0.7 P 0.6 (G) P 0.5 (F) P 0.4 (E) P 0.3 (D) P 0.2 (C) P 0.1 (B) P 0.0 (A)
0 0 0 0 0 0 1 1 1 1 1 1 0X3F
0 0 0 1 0 0 0 0 0 1 1 0 0X06
0 0 1 0 0 1 0 1 1 0 1 1 0X5B
0 0 1 1 0 1 0 0 1 1 1 1 0X4F
0 1 0 0 0 1 1 0 0 1 1 0 0X66
0 1 0 1 0 1 1 0 1 1 0 1 0X6D
0 1 1 0 0 1 1 1 1 1 0 1 0X7D
0 1 1 1 0 1 0 0 0 1 1 1 0X47
1 0 0 0 0 1 1 1 1 1 1 1 0X7F
1 0 0 1 0 1 1 0 1 1 1 1 0X6F
DIAGRAMA DE ORDEN PARA DISPLAY DE 7 SEGMENTOS
A
F B
G
E C
D
DIAGRAMA DE ENSAMBLE
ENTRADA
MODOA MODOB
entrada DIP1 AT89S52 salida A
entrada DIP2 salida B
entrada DIP3 salida C
entrada DIP4 salida D
salida E
pushbuttonA salida F
pushbuttonB salida G
LED1 LED2 LED3 LED4
SALIDA
Una vez hecho esto, se crea el programa en C usando el programa KEIL UVISIÓN 5, quedando de la siguiente forma:
#include <regx52.h>
#define display P0
#define entrada P1
#define leds P2
#define pushup P3_0
#define pushdown P3_1
#define modoa P3_2
#define modob P3_3
void retardo();
void main(void)
{
char dato;
int suma=0, numero;
char temp;
char contador;
P1=0xFF;
P3=0xFF;
modoa=1;
modob=1;
while(1)
{
if (modoa==0 && modob==0)
{
dato = entrada;
dato = dato & 0x0f;
leds = ~dato;
if(dato==0x00) display=~0x3f;
else if(dato==0x01) display=~0x06;
else if(dato==0x02) display=~0x5b;
else if(dato==0x03)
...