Descrizione
[vc_row][vc_column][vc_column_text]
🔧 YS-51 Scheda di Sviluppo – Descrizione Completa
📌 Panoramica
La YS-51 è una scheda di sviluppo progettata attorno al microcontrollore STC89C52, appartenente alla famiglia STC (Single-chip microcomputer). Si tratta di un microcontrollore compatibile 8051, molto usato in ambito educativo e per applicazioni embedded a basso costo.
🧠 Caratteristiche principali
| Caratteristica | Descrizione |
|---|---|
| Microcontrollore | STC89C52RC (compatibile con Intel 8051) |
| Clock | Oscillatore al quarzo da 11.0592 MHz (tipico) |
| RAM interna | 128 byte |
| EEPROM/Flash | 8KB (programmabile via UART) |
| GPIO | 32 porte I/O (4 porte da 8 bit) |
| Interfacce | UART, Timer, Interrupt, SPI/I2C (via bit-banging) |
| Tensione operativa | 5V DC |
| Programmazione | Tramite porta seriale TTL (UART) |
🔌 Componenti sulla scheda
- LED di stato
- Pulsante di reset
- Quarzo esterno
- Connettore seriale per la programmazione
- Connettori maschi per ogni porta I/O
- Alimentazione via USB o pin header
🔗 Compatibilità con Arduino
La scheda YS-51 non è compatibile direttamente con l’IDE Arduino poiché il microcontrollore STC89C52 non è supportato da Arduino nativamente (come lo sono ATmega328p, ATmega2560, ecc.).
Tuttavia, puoi:
- Programmare lo STC89C52 con il suo software ufficiale (STC-ISP).
- Usare Arduino come ponte seriale per caricare il codice sullo STC.
- Oppure farli comunicare via UART come dispositivi separati.
🛠️ Guida alla Programmazione della YS-51
1️⃣ Occorrente
- Scheda YS-51
- Convertitore USB-TTL (es. CH340 o FTDI)
- Software di programmazione STC-ISP
- IDE per scrivere il codice: Keil uVision 5 (linguaggio C)
2️⃣ Connessioni per la programmazione
Collega i pin come segue:
| YS-51 Pin | USB-TTL |
|---|---|
| TX | RX |
| RX | TX |
| GND | GND |
| VCC | 5V |
Per avviare la programmazione:
- Premi il pulsante RESET sulla YS-51.
- Avvia il caricamento dal software STC-ISP.
- Rilascia RESET.
3️⃣ Scrivere un semplice programma LED blink
#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️⃣ Compilazione e caricamento
- Compila il file
.cin Keil uVision → genera file.hex. - Apri STC-ISP → seleziona la porta COM corretta.
- Carica il file
.hexsulla YS-51. - Premi RESET per avviare.
🧪 Esempi di Comunicazione con Arduino
➕ Arduino come master UART
Wiring (comunicazione seriale):
| Arduino | YS-51 |
|---|---|
| TX | RX |
| RX | TX |
| GND | GND |
Codice Arduino:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello from Arduino");
delay(1000);
}
Codice 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
}
}
}
🧭 Altri Progetti Esempio
- Display LCD 1602 con STC
- Controllo con librerie compatibili 8051.
- Contatore con display a 7 segmenti
- Usa Timer + GPIO.
- Sensore di temperatura (DS18B20 o LM35)
- Lettura analogica (via ADC esterno) o digitale (1-wire).
📚 Risorse Utili
📌 Conclusioni
La YS-51 è una scheda versatile per chi vuole iniziare con l’architettura 8051. Anche se non è direttamente compatibile con l’ecosistema Arduino, può essere utilizzata per comunicare con Arduino o essere programmata tramite tool dedicati. Offre un ottimo modo per imparare le basi dei microcontrollori tradizionali.
Cominciamo con un progetto specifico completo basato sulla scheda YS-51 (STC89C52): Controllo di un relè tramite pulsante e comunicazione seriale con Arduino.
🔌 Progetto: Controllo di un relè con STC89C52 e comunicazione con Arduino
🎯 Obiettivi
- Collegare un pulsante per attivare/disattivare un modulo relè.
- Ricevere un comando via seriale da Arduino per attivare/disattivare il relè.
- Inviare lo stato del relè ad Arduino.
🧱 Materiale Necessario
| Componente | Quantità |
|---|---|
| YS-51 con STC89C52 | 1 |
| Arduino Uno/Nano | 1 |
| Modulo relè 5V | 1 |
| Pulsante + resistenza da 10kΩ | 1 |
| Cavi dupont | vari |
| Alimentazione 5V | 1 |
🔌 Schema Collegamenti
YS-51 → Relè
| STC89C52 | Relè |
|---|---|
| P1.0 | IN (segnale) |
| GND | GND |
| VCC | VCC |
YS-51 → Pulsante
| Pulsante | STC89C52 |
|---|---|
| Un capo | P1.1 |
| Altro capo | GND |
Usa una pull-up interna o una resistenza esterna da 10kΩ tra P1.1 e VCC.
YS-51 ↔ Arduino (UART)
| STC89C52 | Arduino |
|---|---|
| TX (P3.1) | RX |
| RX (P3.0) | TX |
| GND | GND |
💾 Codice 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");
}
}
}
}
💻 Codice Arduino (Monitor Seriale + Invio Comandi)
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();
}
}
⚙️ Installazione Keil uVision e STC-ISP (Passo per Passo)
🔽 1. Scaricare gli strumenti
- Keil uVision5:
https://www.keil.com/download/product/ - STC-ISP Programmer (v6.85 o simile):
http://www.stcmcu.com/datasheet/stc-isp-15xx-v6.85.zip
🧰 2. Installazione Keil
- Avvia il setup.
- Durante l’installazione, seleziona “8051 microcontroller support”.
- Crea un nuovo progetto:
- Target:
STC89C52RCoGeneric 8051 - Aggiungi file
.c
- Target:
- Compila (
F7) → ottieni file.hex.
💾 3. Uso di STC-ISP
- Collega la YS-51 via USB-TTL.
- Avvia
STC-ISP. - Seleziona:
- Porta COM corretta
- Tipo chip:
STC89C52RC - Carica file
.hex
- Premi RESET sulla scheda.
- Clicca “Download/Program”.
- Attendi conferma (tempo: circa 3–4 secondi).
✅ Test finale
- Premendo il pulsante su YS-51, il relè si attiva/disattiva.
- Dal monitor seriale Arduino, invia
'1'o'0'. - Verifica il feedback in uscita da STC → Arduino → PC.
[/vc_column_text][/vc_column][/vc_row]



















