"Teoría es cuando se sabe todo y nada funciona. Práctica es cuando todo funciona y nadie sabe porqué. En este recinto se conjugan Teoría y Práctica: nada funciona y nadie sabe porqué..."

---------------------------------------------------------------


Tarjeta Base para ESP32-WROOM
















Bajar archivo Diagrama Eléctrico (pdf)
Bajar archivo Diagrama Circuito Impreso PCB (pdf)
Bajar archivo Máscara de Componentes (pdf)

Semana Nacional de Ingeniería Electrónica SENIE 2026

 

Sistema ISP-USB-AT89S51-52



Bajar 
archivo Diagrama Eléctrico (pdf)
Bajar archivo Diagrama Circuito Impreso PCB_Top (pdf)
Bajar archivo Diagrama Circuito Impreso PCB_Bot (pdf)
Bajar archivo Máscara de Componentes (pdf)
Bajar archivo Material (pdf) 

Editor MCS51

Con esta herramienta podrás editar programas para los microcontroladores de la familia mc51 además de ensamblar y programar los microcontroladores con el hardware del Programador MCS51.
 
 Bajar Software MCS51 (zip)

Ejemplo de Comunicación Serie con la UART del mC51

Este es un ejemplo para configurar la UART y comunicar el microcontrolador mC51 serialmente con otro dispositivo. Usa las rutinas anteriormente diseñadas D_LCD, TECLADO y ASCII4B. Este ejemplo recibe un dato enviado por otro dispositivo, por ejemplo una PC através de la hiperterminal de windows, recibe este dato y lo despliega en una pantalla LCD, además de leer un teclado matricial y enviar el código ascii de la tecla solicitada (0 a F) hacia un dispositivo externo que podría ser una PC para visualizarlo en la hiperterminal de windows. Esta debe ser configurada a 9600 bits por segundo, 8 bits de datos, sin paridad y 1 bit de stop.

;------------------------------------------------------------

org 0H
INI_PRG:
acall INI_UART

RECIBIR:
jnb RI,TECLA ;espera fin de recepción
clr RI
mov A,SBUF ;recibe dato de PC
acall D_LCD ;despliega información en LCD

TECLA:
acall TECLADO ;lee el teclado matricial
cjne A,#10H,ENVIAR ;hay alguna tecla?
sjmp RECIBIR

ENVIAR:
acall ASCII4B ;genera ascii de la tecla
mov SBUF,A ;transmite información a PC
jnb TI,RECIBIR ;espera fin de transmisión
clr TI ;prepara nueva transmisión
sjmp RECIBIR


;**********************************
; Rutina de configuracion de la UART
;---------------------------------------------


INI_UART:
mov SCON,#50H ;transmisión en modo 1, habilita recepción serial
mov TMOD,#20H ;timer 1 en modo 2 autorrecargable
mov TH1,#0FDH ;baud_rate a 9600 @ 11.0592 MHz
mov TL1,#0FDH
setb TR1 ;inicia el baud_rate
ret
;---------------------------------------------

end

Rutinas para inicializar un LCD con mC51

Con estas pequeñas rutinas podras enviar un dato (D_LCD) o un comando (C_LCD) a un display de cristal liquido LCD mediante los microcontroladores de la familia INTEL mC51. El puerto P0 se usa para enviar la información y los pines WR y RD para control del LCD (RS y EN respectivamente; la terminal R/W' del display debe ser conectada a 0 volts). La información debes colocarla en el acumulador. Puedes hacer uso del Sistema de Desarrollo mC51.

;***********************************
; Rutina de configuracion del DISPLAY LCD
;---------------------------------------------

INI_LCD:
mov A,#38H
acall C_LCD
mov A,#01H
acall C_LCD
mov A,#0CH
acall C_LCD
mov A,#80H
acall C_LCD
ret

;-----------------------------------------------------------
; Rutinas para enviar un comando y/o dato al DISPLAY LCD
;-----------------------------------------------------------

C_LCD:
clr WR ;envia comando
sjmp L00
D_LCD:
setb WR ;envia dato en ascii
L00:
mov P0,A
djnz R7,$
clr RD ;habilita la pantalla
djnz R7,$
setb RD ;deshabilita la pantalla
ret

Rutina para leer un Teclado Matricial con MC51

Con esta rutina podras leer un teclado matricial de 16 teclas (4 renglones y 4 columnas). En el puerto P2 del microcontrolador de la familia MC51 se conecta el teclado. El código de la tecla solicitada se regresa en el acumulador (de 00H a 0FH para teclas individuales, 10H si no se oprimio ninguna tecla y 11H si se oprimieron mas de una tecla). Puedes hacer uso del Sistema de Desarrollo mC51. La distribución de las teclas es la siguiente:




;**************************************
; ------- Rutina para detectar una tecla -------
;-----------------------------------------------------
TECLADO:
mov R6,#0EFH ;inicia las columnas (nibble alto)
mov A,R6

CHK_TEC:
mov P2,A ;envia columna
djnz R7,$
mov A,P2 ;lee el renglón
mov R5,A
anl A,#0FH
cjne A,#0FH,TEC_00 ;verifica si hay tecla
mov A,R6
rl A ;siguiente columna
mov R6,A
cjne A,#0FEH,CHK_TEC ;verifica última columna
mov A,#10H ;código de no_tecla
ret
;------------------------------------------------------------

TEC_00:
mov A,R5
cjne A,#7EH,TEC01
mov A,#0FH
ret

TEC_01:
cjne A,#7DH,TEC02
mov A,#0BH
ret

TEC02:
cjne A,#7BH,TEC03
mov A,#00H
ret

TEC03:
cjne A,#77H,TEC04
mov A,#0AH
ret

TEC04:
cjne A,#0BEH,TEC05
mov A,#0EH
ret

TEC05:
cjne A,#0BDH,TEC06
mov A,#09H
ret

TEC06:
cjne A,#0BBH,TEC07
mov A,#08H
ret

TEC07:
cjne A,#0B7H,TEC08
mov A,#07H
ret

TEC08:
cjne A,#0DEH,TEC09
mov A,#0DH
ret

TEC09:
cjne A,#0DDH,TEC0A
mov A,#06H
ret

TEC0A:
cjne A,#0DBH,TEC0B
mov A,#05H
ret

TEC0B:
cjne A,#0D7H,TEC0C
mov A,#04H
ret

TEC0C:
cjne A,#0EEH,TEC0D
mov A,#0CH
ret

TEC0D:
cjne A,#0EDH,TEC0E
mov A,#03H
ret

TEC0E:
cjne A,#0EBH,TEC0F
mov A,#02H
ret

TEC0F:
cjne A,#0E7H,TEC_ERR
mov A,#01H
ret

TEC_ERR:
mov A,#11H ;código de más de una tecla
ret