Description
🔧 YS-51 Carte de développement – Description complète
📌 Aperçu
La YS-51 est une carte de développement conçue autour du microcontrôleur STC89C52, appartenant à la famille STC (Single-chip microcomputer). Il s’agit d’un microcontrôleur compatible 8051, très utilisé dans le domaine éducatif et pour des applications embarquées à faible coût.
🧠 Caractéristiques principales
| Caractéristique | Description |
|---|---|
| Microcontrôleur | STC89C52RC (compatible avec Intel 8051) |
| Clock | Oscillateur quartz à 11,0592 MHz (typique) |
| RAM interne | 128 octets |
| EEPROM/Mémoire Flash | 8KB (programmable via UART) |
| GPIO | 32 ports I/O (4 ports de 8 bits) |
| Interfaces | UART, Timer, Interrupt, SPI/I2C (via bit-banging) |
| Tension d’alimentation | 5V DC |
| Programmation | Par port série TTL (UART) |
🔌 Composants sur la carte
- LED d’état
- Bouton de réinitialisation
- Quartz externe
- Connecteur série pour la programmation
- Connecteurs mâles pour chaque port I/O
- Alimentation via USB ou pin header
🔗 Compatibilité avec Arduino
La carte YS-51 n’est pas directement compatible avec l’IDE Arduino car le microcontrôleur STC89C52 n’est pas nativement supporté par Arduino (comme le sont ATmega328p, ATmega2560, etc.).
Cependant, vous pouvez :
- Programmer le STC89C52 avec son logiciel officiel (STC-ISP).
- Utiliser Arduino comme pont sérial pour charger le code sur le STC.
- Ou les faire communiquer via UART comme des dispositifs séparés.
🛠️ Guide de programmation de la YS-51
1️⃣ Nécessaire
- Carte YS-51
- Convertisseur USB-TTL (par exemple CH340 ou FTDI)
- Logiciel de programmation STC-ISP
- IDE pour écrire le code : Keil uVision 5 (langage C)
2️⃣ Connexions pour la programmation
Connectez les broches comme suit :
| YS-51 Broches | USB-TTL |
|---|---|
| TX | RX |
| RX | TX |
| GND | GND |
| VCC | 5V |
Pour démarrer la programmation :
- Appuyez sur le bouton RESET sur la YS-51.
- Démarrer le chargement depuis le logiciel STC-ISP.
- Relâchez RESET.
3️⃣ Écrire un simple programme 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️⃣ Compilation et chargement
- Compilez le fichier
.cdans Keil uVision → génère le fichier.hex. - Ouvrez STC-ISP → sélectionnez le port COM correct.
- Chargez le fichier
.hexsur la YS-51. - Appuyez sur RESET pour démarrer.
🧪 Exemples de communication avec Arduino
➕ Arduino en maître UART
Communication sérieuse (UART):
| Arduino | YS-51 |
|---|---|
| TX | RX |
| RX | TX |
| GND | GND |
Code Arduino:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello from Arduino");
delay(1000);
}
Code 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
}
}
}
🧭 Autres Projets Exemple
- Afficheur LCD 1602 avec STC
- Contrôle avec bibliothèques compatibles 8051.
- Compteur avec afficheur à 7 segments
- Utilise Timer + GPIO.
- Capteur de température (DS18B20 ou LM35)
- Lecture analogique (via ADC externe) ou digitale (1-wire).
📚 Ressources utiles
📌 Conclusion
La YS-51 est une carte polyvalente pour ceux qui souhaitent commencer avec l’architecture 8051. Bien qu’elle ne soit pas directement compatible avec l’écosystème Arduino, elle peut être utilisée pour communiquer avec Arduino ou être programmée via des outils dédiés. Elle offre un excellent moyen d’apprendre les bases des microcontrôleurs traditionnels.
Commencer avec un projet spécifique complet basé sur la carte YS-51 (STC89C52): Contrôle d’un relais via un bouton et communication série avec Arduino.
🔌 Projet : Contrôle d’un relais avec STC89C52 et communication avec Arduino
🎯 Objectifs
- Connecter un bouton pour activer/désactiver un module relais.
- Recevoir un commande en série de l’Arduino pour activer/désactiver le relais.
- Envoyer l’état du relais à l’Arduino.
🧱 Matériel nécessaire
| Composant | Quantité |
|---|---|
| YS-51 avec STC89C52 | 1 |
| Arduino Uno/Nano | 1 |
| Module relais 5V | 1 |
| Bouton + résistance de 10kΩ | 1 |
| Câbles dupont | divers |
| Alimentation 5V | 1 |
🔌 Schéma de connexion
YS-51 → Relais
| STC89C52 | Relais |
|---|---|
| P1.0 | IN (signal) |
| GND | GND |
| VCC | VCC |
YS-51 → Bouton
| Bouton | STC89C52 |
|---|---|
| Un extrémité | P1.1 |
| L’autre extrémité | GND |
Utilisez un pull-up interne ou une résistance externe de 10kΩ entre P1.1 et VCC.
YS-51 ↔ Arduino (UART)
| STC89C52 | Arduino |
|---|---|
| TX (P3.1) | RX |
| RX (P3.0) | TX |
| GND | GND |
💾 Code 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");
}
}
}
}
💻 Code Arduino (Monitor Série + Envoi de Commandes)
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();
}
}
⚙️ Installation de Keil uVision et STC-ISP (Étape par Étape)
🔽 1. Télécharger les outils
- Keil uVision5:
https://www.keil.com/download/product/ - STC-ISP Programmer (v6.85 ou similaire):
http://www.stcmcu.com/datasheet/stc-isp-15xx-v6.85.zip
🧰 2. Installation de Keil
- Lancez l’installation.
- Pendant l’installation, sélectionnez « 8051 microcontrôleur support ».
- Créez un nouveau projet :
- Cible :
STC89C52RCoGeneric 8051 - Ajoutez des fichiers
.c
- Cible :
- Compilez (
F7) → obtenez des fichiers.hex.
💾 3. Utilisation de STC-ISP
- Connectez la YS-51 via USB-TTL.
- Démarrer
STC-ISP. - Sélectionnez :
- Porte COM correcte
- Type de puce :
STC89C52RC - Charger le fichier
.hex
- Appuyez sur RESET sur la carte.
- Cliquez « Télécharger/Programmer ».
- Attendez la confirmation (durée : environ 3–4 secondes).
✅ Test final
- En appuyant sur le bouton sur YS-51, le relais s’active/désactive.
- À partir du moniteur série Arduino, envoyez
'1'o'0'. - Vérifiez le retour en sortie de STC → Arduino → PC.
Didacticiel : Comment utiliser la carte de développement YS 51 STC
La carte YS 51 sur STC est idéale pour les makers qui souhaitent explorer le monde des microcontrôleurs à faible coût. Il s’agit d’un seul chip intégré dans une carte de développement complète, adaptée aux débutants comme aux développeurs intermédiaires.
Ce qu’il faut
- YS 51 Carte de développement STC
- Connexion USB à micro-USB
- Arduino IDE installée
Étapes
- Connecter le câble USB à la carte YS 51 et à l’hardware de l’ordinateur.
- Ouvrir Arduino IDE et sélectionner ‘STC89C52RC’ comme appareil dans le menu ‘Outils > Cartes.’
- Vérifiez la version du firmware installée sur la carte. Si nécessaire, téléchargez et installez la dernière version sur le site officiel.
- Charger un exemple de sketch depuis la bibliothèque Arduino (par exemple Blink) pour tester la connexion.
- Sélectionnez ‘Fichier > Nouveau’ dans l’IDE Arduino et copiez-collez le sketch fourni dans le tutoriel.
- Compilez et chargez le sketch sur le microcontrôleur YS 51.
- Vérifiez l’exécution correcte du code en surveillant les sorties via le Serial Monitor d’Arduino.
- Explorez d’autres fonctionnalités de la carte en suivant les documents fournis par le fabricant.
Exemple de code
// 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-projet
Créez une petite lumière nocturne avec la carte de développement YS 51 STC. Connectez un capteur de lumière et programmez la carte pour allumer automatiquement une lampe lorsque la nuit tombe.
Erreurs courantes
- Vérifiez que l’IDE Arduino est correctement configuré avec les paramètres du microcontrôleur.
- Vérifiez les connexions USB entre l’ordinateur et la carte.
- Vérifiez s’il y a des erreurs de compilation dans le code chargé.
- Vérifiez la compatibilité matérielle entre la carte YS 51 et l’équipement de développement utilisé.
Accessoires conseillés
- Connexion USB micro-USB
- Câble JTAG pour débogage
- Plaque d’essai
- Capteurs divers
Questions fréquentes
Où puis-je trouver le datasheet de la carte YS 51 ?
Le datasheet est disponible sur le site web du fabricant ou dans le dossier ‘documentation’ du package d’installation de l’IDE Arduino.
Peux-je utiliser la YS 51 avec d’autres langages de programmation que C/C++ ?
La plupart des fonctionnalités de la carte sont accessibles via l’Arduino IDE, mais vous devrez peut-être installer des bibliothèques supplémentaires pour utiliser d’autres langages.
Quelle est la différence entre YS 51 et Arduino Uno ?
L’YS 51 est un microcontrôleur à bas coût avec des fonctionnalités limitées par rapport à l’Arduino Uno, mais offre une solution économique pour les projets simples.





















Avis
Il n’y a pas encore d’avis.