Descripción
🔧 YS-51 Tarjeta de Desarrollo – Descripción Completa
📌 Resumen
La YS-51 es una tarjeta de desarrollo diseñada en torno al microcontrolador STC89C52, perteneciente a la familia STC (Single-chip microcomputer). Se trata de un microcontrolador compatible con 8051, muy utilizado en el ámbito educativo y para aplicaciones embedded de bajo costo.
🧠 Características principales
| Característica | Descripción |
|---|---|
| Microcontrolador | STC89C52RC (compatible con Intel 8051) |
| Reloj | Oscilador de cuarzo a 11.0592 MHz (típico) |
| RAM interna | 128 bytes |
| EEPROM/Flash | 8KB (programmable via UART) |
| GPIO | 32 puertos I/O (4 puertos de 8 bits) |
| Interfaces | UART, Timer, Interrupt, SPI/I2C (a través de bit-banging) |
| Tensión de operación | 5V DC |
| Programación | A través del puerto serial TTL (UART) |
🔌 Componentes en la placa
- LED de estado
- Botón de reinicio
- Cuarzo externo
- Conector serial para la programación
- Conectores macho para cada puerto I/O
- Alimentación a través de USB o pin header
🔗 Compatibilidad con Arduino
La placa YS-51 no es compatible directamente con elIDE Arduino ya que el microcontrolador STC89C52 no está soportado por Arduino de forma nativa (como lo están ATmega328p, ATmega2560, etc.).
Sin embargo, puedes:
- Programar el STC89C52 con su software oficial (STC-ISP).
- Usar Arduino como puente serial para cargar el código en el STC.
- O hacerlos comunicarse a través de UART como dispositivos separados.
🛠️ Guía de Programación de la YS-51
1️⃣ Requerido
- Placa YS-51
- Convertidor USB-TTL (por ejemplo CH340 o FTDI)
- Software de programación STC-ISP
- IDE para escribir el código: Keil uVision 5 (lenguaje C)
2️⃣ Conexiones para la programación
Conecta los pines de la siguiente manera:
| YS-51 Pin | USB-TTL |
|---|---|
| TX | RX |
| RX | TX |
| GND | GND |
| VCC | 5V |
Para iniciar la programación:
- Presiona el botón RESET en la YS-51.
- Inicia la carga desde el software STC-ISP.
- Suelta RESET.
3️⃣ Escribe un programa LED blink simple
#include <reg52.h>
sbit LED = P1^0;
void delay_ms(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 123; j++);
}
void main() {
while (1) {
LED = 0;
delay_ms(500);
LED = 1;
delay_ms(500);
}
}
4️⃣ Compilación y carga
- Compila el archivo
.cen Keil uVision → genera archivo.hex. - Abre STC-ISP → selecciona el puerto COM correcto.
- Carga el archivo
.hexen la YS-51. - Presiona RESET para iniciar.
🧪 Ejemplos de comunicación con Arduino
➕ Arduino como master UART
Conexión (comunicación serial):
| Arduino | YS-51 |
|---|---|
| TX | RX |
| RX | TX |
| GND | GND |
Código Arduino:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello from Arduino");
delay(1000);
}
Código STC (Keil C):
#include <reg52.h>
#include <stdio.h>
void UART_Init(void) {
SCON = 0x50; // UART mode 1
TMOD = 0x20; // Timer 1 mode 2
TH1 = 0xFD; // Baud rate 9600
TL1 = 0xFD;
TR1 = 1; // Start Timer1
TI = 1;
}
void main() {
UART_Init();
while (1) {
if (RI) {
RI = 0;
P1 = SBUF; // visualizza byte ricevuto su P1
}
}
}
🧭 Otros Proyectos Ejemplo
- Display LCD 1602 con STC
- Control con bibliotecas compatibles 8051.
- Contador con display de 7 segmentos
- Usa Timer + GPIO.
- Sensor de temperatura (DS18B20 o LM35)
- Lectura analógica (a través de ADC externo) o digital (1-wire).
📚 Recursos Útiles
📌 Conclusión
La YS-51 es una placa versátil para quienes quieren comenzar con la arquitectura 8051. Aunque no es directamente compatible con el ecosistema Arduino, puede ser utilizada para comunicarse con Arduino o programarse mediante herramientas dedicadas. Ofrece una excelente manera de aprender las bases de los microcontroladores tradicionales.
Empecemos con un proyecto específico completo basado en la placa YS-51 (STC89C52): Control de un relé mediante pulsador y comunicación serial con Arduino.
🔌 Proyecto: Control de un relé con STC89C52 y comunicación con Arduino
🎯 Objetivos
- Conectar un pulsador para activar/desactivar un módulo relé.
- Recibir un comando por serie de Arduino para activar/desactivar el relé.
- Enviar el estado del relé a Arduino.
🧱 Material Necessario
| Componente | Cantidad |
|---|---|
| YS-51 con STC89C52 | 1 |
| Arduino Uno/Nano | 1 |
| Módulo relé 5V | 1 |
| Pulsador + resistencia de 10kΩ | 1 |
| Cables dupont | varios |
| Alimentación 5V | 1 |
🔌 Esquema de Conexiones
YS-51 → Relé
| STC89C52 | Relé |
|---|---|
| P1.0 | IN (señal) |
| GND | GND |
| VCC | VCC |
YS-51 → Pulsador
| Pulsador | STC89C52 |
|---|---|
| Un extremo | P1.1 |
| Otro extremo | GND |
Usa una pull-up interna o una resistencia externa de 10kΩ entre P1.1 y VCC.
YS-51 ↔ Arduino (UART)
| STC89C52 | Arduino |
|---|---|
| TX (P3.1) | RX |
| RX (P3.0) | TX |
| GND | GND |
💾 Código STC89C52 (Keil C)
#include <reg52.h>
#include <stdio.h>
sbit RELAY = P1^0;
sbit BUTTON = P1^1;
void UART_Init(void) {
TMOD = 0x20; // Timer1 Mode2
TH1 = 0xFD; // 9600 baud
TL1 = 0xFD;
TR1 = 1; // Start timer
SCON = 0x50; // UART mode 1, 8-bit, enable RX
TI = 1; // Set transmit ready
}
void UART_SendString(char *s) {
while (*s) {
SBUF = *s++;
while (!TI);
TI = 0;
}
}
void delay_ms(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 123; j++);
}
void main() {
UART_Init();
RELAY = 0; // relè OFF
while (1) {
if (BUTTON == 0) { // premuto (collegato a GND)
RELAY = !RELAY; // cambia stato
UART_SendString(RELAY ? "Relay ONn" : "Relay OFFn");
delay_ms(500); // debounce
}
if (RI) {
char cmd = SBUF;
RI = 0;
if (cmd == '1') {
RELAY = 1;
UART_SendString("Relay ONn");
} else if (cmd == '0') {
RELAY = 0;
UART_SendString("Relay OFFn");
}
}
}
}
💻 Código Arduino (Monitor Serial + Envío de Comandos)
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
String stato = Serial.readStringUntil('n');
Serial.println("STC ha risposto: " + stato);
}
if (Serial.availableForWrite()) {
char comando = Serial.read();
// Comandi manuali da Serial Monitor
if (comando == '1') Serial.write('1');
else if (comando == '0') Serial.write('0');
}
// Simula un comando automatico ogni 5 sec
static unsigned long t = millis();
if (millis() - t > 5000) {
Serial.write('1');
delay(2000);
Serial.write('0');
t = millis();
}
}
⚙️ Instalación Keil uVision y STC-ISP (Paso a Paso)
🔽 1. Descargar las herramientas
- Keil uVision5:
https://www.keil.com/download/product/ - STC-ISP Programador (v6.85 o similar):
http://www.stcmcu.com/datasheet/stc-isp-15xx-v6.85.zip
🧰 2. Instalación Keil
- Inicia el instalador.
- Durante la instalación, selecciona «soporte para microcontrolador 8051».
- Crea un nuevo proyecto:
- Target:
STC89C52RCoGeneric 8051 - Añade archivos
.c
- Target:
- Compila (
F7) → obtén archivos.hex.
💾 3. Uso de STC-ISP
- Conecta la YS-51 a través de USB-TTL.
- Inicia
STC-ISP. - Selecciona:
- Puerto COM correcto
- Tipo de chip:
STC89C52RC - Carga archivo
.hex
- Presiona RESET en la tarjeta.
- Haz clic «Descargar/Programar».
- Espera confirmación (tiempo: aproximadamente 3–4 segundos).
✅ Prueba final
- Al presionar el botón en YS-51, el relé se activa/desactiva.
- Desde el monitor serial de Arduino, envía
'1'o'0'. - Verifica el feedback en salida de STC → Arduino → PC.
Tutorial: Cómo usar la Tarjeta de Desarrollo YS 51 STC
La tarjeta YS 51 en STC es ideal para los makers que desean explorar el mundo de los microcontroladores a bajo costo. Se trata de un solo chip integrado en una tarjeta de desarrollo completa, adecuada tanto para principiantes como para desarrolladores intermedios.
Qué necesitas
- Tarjeta de Desarrollo YS 51 STC
- Conexión USB a micro-USB
- Arduino IDE instalada
Pasos
- Conectar el cable USB a la tarjeta YS 51 y al hardware del ordenador.
- Abrir Arduino IDE y seleccionar ‘STC89C52RC’ como dispositivo en el menú ‘Herramientas > Tarjetas.’
- Verifica la versión del firmware instalada en la tarjeta. Si es necesario, descarga e instala la última versión desde el sitio web oficial.
- Carga un sketch de ejemplo de la biblioteca Arduino (por ejemplo, Blink) para probar la conexión.
- Selecciona ‘Archivo > Nuevo’ en Arduino IDE y copia y pega el sketch proporcionado en el tutorial.
- Compila y carga el sketch en el microcontrolador YS 51.
- Verifica la correcta ejecución del código monitoreando las salidas a través del Serial Monitor de Arduino.
- Explora funciones adicionales de la tarjeta siguiendo los documentos proporcionados por el fabricante.
Código de ejemplo
// Includi la libreria necessaria
#include <STC89.h>
// Definisci le pin
#define LED_BUILTIN 13
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Accendi il LED
delay(1000); // Attende un secondo
digitalWrite(LED_BUILTIN, LOW); // Spegni il LED
delay(1000); // Attende un secondo
}
Miniproyecto
Crea una pequeña luz nocturna con la Tarjeta de Desarrollo YS 51 STC. Conecta un sensor de luz y programa la tarjeta para encender automáticamente una bombilla cuando cae la oscuridad.
Errores comunes
- Asegúrate de que el IDE Arduino esté configurado correctamente con las configuraciones del microcontrolador.
- Verifica los conectores USB entre el ordenador y la tarjeta.
- Comprueba si hay errores de compilación en el código cargado.
- Verifica la compatibilidad hardware entre la placa YS 51 y el hardware de desarrollo utilizado.
Accesorios recomendados
- Conexión USB a micro-USB
- Cable JTAG para depuración
- Protoboard
- Sensores variados
Preguntas frecuentes
¿Dónde puedo encontrar el datasheet de la placa YS 51?
El datasheet está disponible en el sitio web del fabricante o en la carpeta ‘documentación’ del paquete de instalación del IDE Arduino.
¿Puedo utilizar la YS 51 con otros lenguajes de programación además de C/C++?
La mayoría de las funciones de la placa son accesibles a través del Arduino IDE, pero podrías tener que instalar bibliotecas adicionales para usar otros lenguajes.
¿Cuál es la diferencia entre YS 51 y Arduino Uno?
La YS 51 es un microcontrolador de bajo costo con funciones limitadas en comparación con el Arduino Uno, pero ofrece una solución económica para proyectos simples.





















Valoraciones
No hay valoraciones aún.