Descrizione
🔧 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.
Tutorial: Come usare YS 51 Scheda di Sviluppo STC
La scheda YS 51 su STC è ideale per i maker che desiderano esplorare il mondo dei microcontrollori a basso costo. Si tratta di un singolo chip integrato in una scheda di sviluppo completa, adatto sia ai principianti che agli sviluppatori intermedi.
Cosa serve
- YS 51 Scheda di Sviluppo STC
- Connessione USB a micro-USB
- Arduino IDE installata
Passi
- Collegare il cavo USB alla scheda YS 51 e all’hardware del computer.
- Aprire Arduino IDE e selezionare ‘STC89C52RC’ come dispositivo nel menu ‘Strumenti > Schede.’
- Verifica la versione del firmware installata sulla scheda. Se necessario, scarica e installa l’ultima versione dal sito ufficiale.
- Caricare uno sketch di esempio dalla libreria Arduino (es. Blink) per testare il collegamento.
- Seleziona ‘File > Nuovo’ in Arduino IDE e copia-incolla lo sketch fornito nel tutorial.
- Compila e carica l’sketch sul microcontrollore YS 51.
- Verifica la corretta esecuzione del codice monitorando le uscite tramite il Serial Monitor di Arduino.
- Esplora ulteriori funzionalità della scheda seguendo i documenti forniti dal produttore.
Codice di esempio
// 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
}
Mini-progetto
Creare una piccola luce notturna con la YS 51 Scheda di Sviluppo STC. Collega un sensore luminoso e programma la scheda per accendere automaticamente una lampadina quando il buio cala.
Errori comuni
- Assicurarsi che l’IDE Arduino sia configurata correttamente con le impostazioni del microcontrollore.
- Verificare i collegamenti USB tra il computer e la scheda.
- Controllare se sono presenti errori di compilazione nel codice caricato.
- Verifica la compatibilità hardware tra la scheda YS 51 e l’hardware di sviluppo utilizzato.
Accessori consigliati
- Connessione USB a micro-USB
- Cavo JTAG per debug
- Breadboard
- Sensori vari
Domande frequenti
Dove posso trovare il datasheet della scheda YS 51?
Il datasheet è disponibile sul sito web del produttore o nella cartella ‘documentazione’ del pacchetto di installazione dell’IDE Arduino.
Posso utilizzare la YS 51 con altri linguaggi di programmazione oltre a C/C++?
La maggior parte delle funzionalità della scheda sono accessibili tramite l’Arduino IDE, ma potresti dover installare librerie aggiuntive per usare altri linguaggi.
Qual è la differenza tra YS 51 e Arduino Uno?
L’YS 51 è un microcontrollore a basso costo con funzionalità limitate rispetto all’Arduino Uno, ma offre una soluzione economica per progetti semplici.



















