19/02/2018
rev 05/05/2021
Modification Horloge 6 digits, basée sur
un AT89C2051
Voir Programmateur 18F46K22 en C, pour AT89C2051
Hardware
Horloge SH -E-878 6 digits à base de AT89C2051
Test
commande et chainage des CD4015, interface 60 leds
Logiciels
de programmation AT89C2051
Nouvelle
programmation AT89C2051 pour Horloge avec MikroC 8501
Design Horloge en Raytracing . (30/03/2018)
Cablage
et Montage Hardware de l'Horloge modifiée (07/06/2018)
+ protectioon plexiglass
lien sur Horloge PIC18F26K22 ..avec RTC
BUT :
Modifier une HORLOGE SH E-878
equipée d'un AT89C2051
pour commander un interface Hardware pilotant 60 leds ,indiquant
les Secondes
HARDWARE :
Schema original modifié :
rev 23/02/2018
Achetée sur ALIEXPRESS (mais dispo aussi ailleurs!)
HORLOGE 5 V-12 V AT89C2051 6xLED SH-E 878 LP063367754GB Numerous
Creation Store 3,85
Achat aussi de 5 MCU AT89C2051 pour 2,82 .. la ruine !
L'horloge avec le MCU original :
Le regulateur 78L05 n'est pas monté, strappé, car usage alim
exterrne 5V (direct)
Les diodes leds D1,D8 ne sont pas installées
Les diodes Leds D2,D4,R2 restent en place = charge de la sortie P1.7
qui sera affectée à pulse 1HZ.= avance du compteur 60 leds
Le Buzzer n'est pas monté, car il est recupérée pour faire
office de RAZ pour le compteur 60 leds.
ATTENTION:
Circuit imprimé FRAGILE ..
3 pistes coupées à ras la pastille recevant une resistance..
Bien plaquer les resistances sur le circuit .. rajout de colle .
C'est maintenant plus chiant avec la soudure sans plomb !
l'AT89C2051 livré avec l'horloge :
La lecture du programme ne m'apprendra RIEN du tout , car Locké
!!:
Terminal log file
Date: 11/02/2018 - 15:47:47
-----------------------------------------------
Waiting input 3
SIGNATURE BYTES
1E ATMEL DEVICE
21 89C2051
FF
POWER DOWN
Waiting input 1
CODE DATA :
0000 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC
0010 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC
... etc ...
07E0 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC
07F0 FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC FC
POWER DOWN
-----------------------------------------------
Date: 11/02/2018 - 15:48:12
End log file
Le programme MCU doit etre verrouillé par les Lock Bits ..
Mais il faut effacer le programme pour deverouiller le MCU ..
sniff
Je vais donc repartir de zero , et m'interesser à la
programmation 8051 ..
donc un NEWBIE en la matiere
Le but est de garder les memes fonctions, secondes,minutes,heures,
issue d'un timer interrupt 4mS,
pour assmer aussi le multiplexage des 6 afficheurs , en 6x4=24mS
, periode de rafraichissement
mais surtout : rajouter une sortie 1Hz et une sortie RAZ
pour gérer ensuite le Hardware pilotant les 60 leds affichant
les "Secondes" avec 8 x CD4015.
SOFTWARE :
Logiciel :
Essai préalable de differents logiciel de programmation :
*ASEM51 programmation en ligne (connecté au Web) , rine à
charger sur le PC
outil tres agreable et performant pour ecrire en assembleur ,
delivre un fichier HEX directement chargeable.
*KEIL version 5 , ce serait un tres bon outil, si je pouvais
charger une vieille version UV2 ou UV4 ,
permettant de mieux traiter le VIEUX AT89C2051 ..
* uC51 : un ensemeble d'outils simples , mais performant ,
permettant de programmer en ASM ou C.
dispose d'un Simulateur 8051 avec P0,P1,P2,P3 .. trop uptodate
pour le AT89C2051, mais tres utile pour de petits tests.
*MikroC 8051 .. pour garder un environnement connu (MikroC Pro
for PIC )
Quelques difficultes d'adaptation .. 1er test allumer 3 leds ..problematique
Il faut une definition Rudimentaire des E/S (limités à 8 bits E/S
sur P1 et à 7 bits E/S sur port P3 !)
L'exemple proposé par mikroC, ne marchait pas ..prevu pour un 80C51
!
usage de #define au lieu de sbit .
Mon choix final se porte naturellement ur
MikroC for 8051 ,
gratuit jusqu'à 2K de code = le maxi du AT89C2051. ( j'ai aussi
MikroC Pro à 250 boules !)
sinon, il me faudrait apprendre tous les codes mCU AT89C2051,
et j'ai déja donnée avec les PIC .. et leur predecesseurs !
Application MikroC:
1er test :
allumage segments sur les 6 afficheurs ...
table de definition 7 segment :
NE PAS UTILISER l'outil 7 segment
de MikroC
feuille excel => codage modifié pour adapter à ce hardware .
de plus : logique négative ( un zero allume le segment, un zero
selectionne le digit)..OK
2) test IRQ :
Interruption Timer1
quelque galère ..mais finalement ..OK
3) test Gestion S,M,H
.. affichage ..OK
4) test Sortie 1Hz
sur P1.7
sans interferer avec les segments (sur 7 bits du port P1) .. OK
5)test sortie RAZ
... au passage de 59sec à 0 sec => top RAZ sur P3.7
galere à cause de problemes Hardware .. coupure piste/pastille...
reparée => OK
Check avec analyser SQA IKALOGIC :
en vert , signal de commande d'un afficheur (Anode) => taux
de rafraichissement des digits
Phase 1/3 :
Le programme Horloge (seule) ,phase 1 :
Projet : _Horloge_SH_E878_Phase1.zip
Source : Horloge_6digits_SHE878_180219.c
Chargeur : Horloge_6digits_SHE878_phase1.hex
La phase 2/3:
Tester le hardware compteur 60 leds .. mais avec 8 seulement.. je
n' ai qu'un CD4015 à disposition.
et verifier le sens d'action des pulses 1Hz et RAZ
Test Chainage de 2 CD4015
CD4015 Logic Diagram
Datasheet
link
details Test 2 CD4015 chainés => 16 leds ..s'allument
progressivement de 1 à 16 sec:
avec interface signaux 1hz et RAZ ( 2 Tr 2N2222)
au passage de 59 à 00 secondes, les 8 leds sont eteintes,
puis s'allument progressivement
au rythme des secondes .. arrivé à 8 ..restent ensuite
allumées , jusqu'au prochain passage de 59 à 00..
Suite au test, Modif du programme pour inversion sens pulse RAZ ,
de sorte à ce qu'elle soit disponible sur la sortie ex-Buzzer ,
plutot q'en sortie MCU.
video : Test_chainage_2_xCD4015_1Hz_et_RAZ.webm
ATTENTION :
=> modif SOFT : Inversion des
signaux Hz et RAZ dans le programme .. puisque l'etage
interface transitor, inverse le sens d'action ..
rappel : schema
Horloge
* infos 1Hz et RAZ sur la carte Horloge
nota: j'ai repéré mes differents MCU avec une pastille de
couleur (ici BLEU)
Version Horloge avec sorties RAZ et HZ (sans la mise à l'heure
par les switches )
source: Horloge_6digits_SHE878_BLEU_180220.c
chargeur : Horloge_6digits_SHE878_BLEU_180220.hex
Modification :
Pour version alim. 12V des CD4015 ( pour piloter 3 leds en serie
sur chaque sortie ) :
Necessite une adaptation des niveaux CMOS 5V => pour une
commande en 12V
Circuit imprimé (realisé par Geamel)
le 2N2369 peut etre remplacé par 2N2222 (NPN)
La phase 3/3:
Gerer les 3 switchs S1,S2,S3 pour la mise à l'heure HH et MM de
l'horloge.
(Les secondes seront remises à zero )
J'envisage d'utiliser S1 switch sur P32 pour entrer dans un mode
"Mise à Jour de l'horloge",
puis SW2 pour incrementer les Minutes et SW3 pour incrementer les
Heures .
.. c'est fait :
Mise à Jour Horloge via
les 3 switches
S1 (à droite) appuyé pendant 2sec permet d'entrer dans le mode
de reglage
les secondes continuent de s'afficher
S2 incrementer les minutes
S3 incremente les heures
il sufiit de ne rien toucher pendant ~20 secondes pour voir l'affichage
s'eteindre rapidement
et se reafficher avec les HH MM reglées avec Secondes = 00
S2 et S3 sont alors redevenus inopérants .
SOFTWARE :
Projet complet (tourne OK mais trop d'erreur de comptage) :_Horloge_SH_E878_180223.zip
voir Correctif du 07/06/2018
L'editeur de texte Notepad ++
permet de lire facilement les fichier intel HEX !
log (sur terminal) d'un chargement de programme (*.HEX) :
Horloge_6digits_SHE878_ATMEL_JAUNE_180223_c.log
autres détails :
sur
posts FuturaScience
.. je vais pouvoir démonter mon prototype de programmateur AT
sur breadboard ... et ADIEU AT89C2051 ..
Cablage et
Montage HARDWARE :
*** En option :
L'adaptation pour gros afficheur 7 segments , en 12V
Schema:
Les switches ,sur le schema, representent les état 0 ou 1 des
sorties MCU AT89C2051 ..commande segment et commande Anode
voir plus haut ,le schema original de l'horloge (non modifiée) ,
Préparation carte interface de commande
des 60 leds ( avec 8 CD4015 )
Mise en place des 41 straps
des7 condos 100nF, et 2 de 47µF sur les rails d'alimentation.
A suivre ...
Preparation du SUPPORT Horloge :
Utilisation du Raytracing pour elaborer le
projet.
Le Support d'horloge = 1 plateau de dessous de POT de fleurs. de
260x260 mm
Les 60 leds sont sur un diametre de 200 mm . (centré sur la
"punaise " !)
Essayez de disposer d'une façon réguliere 60 leds sur la
circonférence ... essai avec compas et rapporteur ...trop CHIANT
!
J'ai donc imprimé la vue de face , de MORAY ( image de synthese)
qui est ajustée pile poil , pour pouvoir faire le percage ,
avec le maximum de precision..
Toutes les leds feront 3,5mm (percage à 3,5mm) pour rentrer en
forcant .
Je compte mettre un fil de cuivre 1,5mm² (en O ring ), autour
des 60 leds = Commun 0V.
donc Cablage Cathode led direct dessus.
Ces afficheurs remplacent les afficheurs double (originaux) de
hauteur 9,1mm
Nouveau des Nouveaux Afficheurs 20mm
![]() |
![]() |
![]() |
Percage et decoupe pour 6 afficheurs 20mm | correspondance de cablage | 6 x7 segments et 6 anodes reliées..en fil à fil |
..Apres demontage des anciens afficheurs doubles de 9,1mm, sur
la carte Horloge AT89C2051..
C'est un montage de RECUPERATION , je vous l'accorde
: un nouveau circuit imprimé eut été plus mieux bien ..
pas
facile suivant la qualité du fil .. test avec
fil etamé 0,2mm .. tres dificile à dénuder ( isolant kynar) ,
et fil trop cassant ,
fil emaillé 0,15mm .. brûler le vernis .. moins facile à
souder , car non pré-étamé,
fil à wrapper 0,12mm ..facile à dénuder avec l'outil "denuder"
, facile à enrouler autour de la pin Afficheur et souder .
La luminosité est plus que confortable .. un peut trop forte d'ailleurs
..
Apres recablage de chaque digits , .. test Horloge OK
En attendant, je passe commandes pour la partie carte interface
Leds,
du fil souple multibrins 30AWG pour le cablage des leds ., car le
fil rigide à wrapper est trop CASSANT..
3x 10 m/lot UL 1007 30AWG 10 Couleurs
Fil Électrique Câble ligne Étamé Cuivre PCB Fil RoHS UL.. 6.06
de 50 Resistances de 2 K (si 1 seul led rouge en serie => 1,75mA
mesuré )
et de 30 Resistances de 1K (si 2 leds en serie : 1 rouge + 1
orange => 1,7mA mesuré)
3x Ensemble 600 pcs 30 Genre x20 1/4 W
Résistance 1% Metal Film Resistor Assortis .. 9,16
Cablage 1 ere partie ,
23/04/2018
pour validation de la carte interface CD4015
Montage en cours, à cette heure ci , jai soudé les 60
resistances
jai 1K pour les endroits ou jai 2 leds en serie : led
rouge + led Orange (les 2 yeux et le sourire) , et 2K pour led
seules .
Je nai cablé pour linstant que les 12 premiers leds
et les 4 dernieres .
Mise sous tension :
Au début je naffichais rien coté Leds, bien que la partie
HORLOGE 7seg soit OK .?
puis jai vu que mon signal RAZ netait pas bon,
inversé ... constament en mode RAZ
De plus jai ELIMINE la resistance de rappel au +5V sur le
signal entree RAZ
car dans mon cas je nai pas letage amplificateur
Inverseur ( puisque en 5V)
jai testé donc avec le signal RAZ , en amont de la
commande buzzer (R17) , soit la sortie directe MCU .. et cetait
OK , le comptage demarrait.
jai remplacé mon MCU AT89 modele Jaune (par le modele BLEU
qui inverse le RAZ)pour me connecter directement sur la sortie
Buzzer ..
Couleur = type de programme.
car javais fait 2 versions , modele BLEU: dont une qui
inversait le sens du signal RAZ, pour utiliser directement la
sortie
correspondant au buzzer .. en mode 5V
L'autre pour utiliser l'ampli de niveau TTL/12V , en cas d'alim
12V des CD4015
et jai cablé 12 sorties leds ( 1K+ Rouge + orange)..
le comptage seffectue bien .. sur les
premieres leds
Les 4 dernieres leds ne saffichaient pas ..
Verifié en testant à lohmetre la ligne RAZ pin 6 de
chaque CD4015 ( platine hors tension!!)
probleme décelé: une mauvaise soudure dans lavant dernier
strap de liaison RAZ ...
maintenant, Jaffiche donc aussi les 4 dernieres leds .
Le comptage continue donc apres les 12 premieres
et la RAZ seffectue de 59 à Zero, eteint donc toutes les
leds
et ça repart en comptage..
Jalimente le MCU et la carte CD4015 en 5V .( la meme alim
!)
Ceci prouve que le circuit imprimé CD4015 est OK.
(meme si je nai pas encore connecté toutes les leds.)
Nota: Laffichage de lhorloge HH MM SS nest pas
perturbée par la carte CD4015.
Cablage final :
25/04/2018
Le cablage est assez fastidieux, d'autant qu'il faut bien
verifier la continuite de l'ordre de cabalage,
sachant que les 4 prmeiers CD4015 sont chainé de gauche à
droite, et les 4 autres de droite à gauche,
de plus, les 4 fils de gauche sont à croiser ave les 4 fils de
droite sur les 8 sorties CD4015
Le mieux est d'alimenter de temps en temps l'horloge , pour
verifier sir les secondes evoluent bien dans le bons sens (HORAIRE
!).
J'ai preparé d'abord les 60 fils de connections, pré-étamé
les 2 bouts,
puis soudé un coté sur la carte CD4015
Fixé la carte : Montage mecanique de la carte CD4015 sur 2 vis
de 3mm x 30mm avec contre ecrous (equivalent entretoise)
et soudé ensuite chaque fil sur chaque led ..Cela fait une bonne
paillasse de fil . (fil AWG 30 multiibrins tres souple)
Alimentation Horloge (5V)et carte CD4015 (meme 5V) reliées sur
un sucre.
Il m'a fallu quand meme plus de 4H00 pour finaliser le cablage.
Nota: Ce petit fer
à souder 8W alim 5V USB 2A tres pratique , mais a tendance à surchauffer.
voir cette nette Amelioration apportée par TempsX , ICI
.
En plein jour, la luminosité est trop faible, mais tres
suffisante si un peu à l'abri de la lumiere directe.
Je verrai par la suite si je dois passer lalim en 9V ou 12V
pour les CD4015
auquel cas , il faudra que je rajoute linterface 2
transistors pour adapter les niveaux 5V MCU de RAZ et
1HZ.
et que je deplace le signal RAZ en amontr de R17 ( sortie MCU
pour commande du transistor Buzzer).
pour garder le meme signe de varaiation sur l'impulse RAZ.
Protection Plexiglass sur la face arriere
:
23/06/2018
Fixation module Alim 5V , sur le plexiglass arriere :
Par la suite, je vais peindre les vis, en face avant, de la meme
couleur que le fond gris
Le bemol de ce montage :
le support pas assez rigide , pas assez epais , pour bien "coincér"
les leds dans leurs trous
ou utilisation de support de leds ?
Une mise en Boite Rectangulaire , fermée sur les cotés ?
Video sur un cycle > à
1minute : Horloge_180425_running.webm
En bref, un boulot de romain .. mais heureux quand
même d'etre allé jusqu'au bout .
et avec une horloge UNIQUE au monde !
Ô rage ! ô désespoir ! ô viellesse
ennemie !
N'ai-je donc tant vécu que pour cette infamie ....
et observer un tel
décalage de l'heure affichée sur une periode de 24H00 ? 30
minutes ???
et dire que j'ai démonté mon programmateur d' AT89C2051 ! ...
je ne pouvais pas laisser cela comme çà ! .. et avoir des
remords !
Correction du programme :
07/06/2018
Modification Programme 18F26K22 ( Programmateur AT89C2051
) :
Dans un premier temps, j'ai été obligé de remonter mon
programmateur AT89 à base de PIC18F
mais ,cette fois, pour simplifier un peu la connection hardware,
je n'utilise plus le protocole Hardware CTS/RTS
pour la lecture du fichier HEX -> RX UART , mais le protocole
Software XON_XOFF, qui fonctionne donc
avec un cordon Prolific standard 3 fils (TX,RX,0V)
Le reste du programme n'a que tres peu changé..
gestion de CTS remplacé par XON XOFF
delay de 30 sec pour entrer le nom du fichier, au lieu de 20sec
voir Lien
sur Programmateur
Les Modifications de programme HORLOGE AT89C2051
avec MikroC for 8051:
Les modifications portent principalement sur les test
dans l'interruption Timer :.
* Affinage de l'interruption 4mS => 3,997 mS
* Reactivation immediate du timer , juste apres sa
reinitialisation .
* Correction erreur sur Seconde ecoulée: test Count1>250 =>
Count1> 249
* Remplacement comptage Minute apres 60 secondes , par un
coomptage Nombre d'interrupt 4mS
Le test Minute porte donc maintenant sur 15000 interruptions à 4mS
=> 60 000 mS => 60 secondes => 1 minute
Le compteur seconde est mis à zero en meme temps que le
changement de minute..
* Augmentation largeur impulsion RAZ : de 2x4 =8mS à 50x4=200 mS,
pour avoir le temps de visulaiser la 60em led
avant l'evenement RAZ.
Problemo :
0 122 Compilation Started Horloge_SHE878_AT89C2051_180606.c
0 1004 interrupt handler (Interrupt_Timer1 at 0x001B) Horloge_SHE878_AT89C2051_180606.c
439 123 Compiled Successfully Horloge_SHE878_AT89C2051_180606.c
0 102 Finished (with errors): 07
juin 2018, 10:20:46 Horloge_SHE878_AT89C2051_1806.mcp51
apres quelques recherches et comparaison avec ancienne version
compilée OK
il manquerai cette ligne : -IP"D:\_MikroC PRO for 8051\"
"Horloge_.......c" "
le remede: il FAUT activer dans
TOOLS
OPTIONS
Buid all files as library
Why ? .. je ne sais pas.
La compilation passe alors OK
........
0 125 Project Linked Successfully Horloge_SHE878_AT89C2051_1806.mcp51
0 128 Linked in 15 ms
0 129 Project 'Horloge_SHE878_AT89C2051_1806.mcp51' completed:
437 ms
0 103 Finished successfully: 07 juin 2018, 10:47:56
Horloge_SHE878_AT89C2051_1806.mcp51
New SOFTWARE:
Le projet zipé: Horloge_SHE878_AT89C2051_180606.zip
Le chargeur : Horloge_SHE878_AT89C2051_1806.hex
Le source : Horloge_SHE878_AT89C2051_180606.c
J'ai donc rechargé cette version sur un nouveau AT89C2051 (pastille
jaune) et re mis sur mon Horloge..
Dans la foulée ,j'en ai preparé un autre ( Pastille Orange)
Fichier log du chargement programme dans AT89C2051 Pastille Jaune
, issu de la capture terminal Vbray
relié au Programmateur 18F46K22 pour AT89C2051, via un cordon
Prolific TTL/USB .
AT89C2051_Jaune_Programmer_18F46K22_Vbray_1800606.log
Mesures de derives :
Test 1 :
programme: Synchro Horloge AT89C2051 (Jaune) avec IT à 3,997mS
Test 2 :
Modif AT89C2051 (Orange) pour IT= 3,977mS ( avec +0,56%)
Test 3
Derniere modif de programme pour
corriger de +0,08% !
Je remodifie une DERNIERE FOIS , le MCU JAUNE .. Timer
avec 3.974 ms (pour 4,000 theorique)
Last chek: 30/06/2018 ,
Apres 21 Jours de test , l'horloge reste
dans la meme minute que l'horloge DCF77 .. OK !
Resultat SATISFAISANT pour une horloge de base à 3,85,
car il ne fallait pas s'attendre à avoir déja un quartz 12MHz
de qualité , sur cette Horloge en KIT (from RPC)
conclusion finale :
Je laisse comme cela... FIN, FERTIG, END.
je passe à HORLOGE PIC + DS3231 ( Nouvelle horloge)
Lien vers _Horloge_18F26K22_60leds\Horloge_60leds_PIC18F.htm...
Simili Horloge ATMEL avec un PIC18F26K22
Je profite donc du Passage sur PIC18F26K22 avec une RTC DS1307
pour avoir l'heure RTC sous la main ( dans le
soft!) et faire la partie similaire au programme ATMEL AT89C2051
c'est à dire , utiliser une interruption à 4mS , pour elaborer
les SS,MM,HH et activer un balayage des afficheurs 7 segments
6 afficheurs en 6x4=24mS .. pour comparer les resultats .( RTC et
Comptage IT)
Au depart.. 1er bug :
teste sur Count1> 250 pour le test du changement de seconde ,
au lieu de > 249 , car on compte de 0 à 249
ensuite au lieu de definir 1mn si Sec>59, j'utilise un doublon
de compteur IT 4mS pour decider de la minute si Count2>14999
sachant que 15 000 x 4 mS = > 60 sec => 1minute.
il s'avere qu'avec un pilote quartz 8MHz x 4 PLL=32MHz , j'observe
un decalage de -0,8% en 24 Heures
Un correctif CountMn pré-initialisé dans le code à 14920 ( au
lieu de 15000) reduit l'erreur à < 0,01%.
Ce correctif est dans l'eeprom du PIC, modifiable via la commande
terminal C=14920<CR>
SOFTWARE:
projet zipé : Horloge_18F26K22_RTC_DS1307_60leds_CD4015_simili_AT89_180510.zip
la partie interrupt simili ATMEL
Version
avec simulation du meme programme utilisé avec ATMEL ,
pour comparaison avec RTC
Pour verifier la derive, les registre RTC H,M,S sont copiés dans
les registres H,M,S utilisés par l'interrupt ; à la detection
de seconde=0
à gauche date et heure RTC, puis HH MM SS issus de Interrupt
Timer2 at 4mS
De sorte , apres quelques heures, de pouvoir en visualiser,
mesurer l'ecart.
Au lancement du programme, on voit le correcteur CountMn affiché
. ici vaut 14910 pour une valeur theorique de 15000 ( 15000x4=60
000 ms =60sec=1minute)
via le keyboard Terminal, on peut modifier ce correctif ..dans la
gamme 14900 .. 15000
exemple de commande : C=14930<CR>
La conclusion est que le Quartz PIC 8MHz n'est pas assez precis
.. quartz RPC à 8.000 MHz +- xx ppm ?
SOFTWARE
Test avec terminal PC.
Source: Horloge_18F26K22_RTC_DS1307_60leds_CD4015_simili_AT89_180510.c
chargeur : Horloge_18F26K22_60leds_180501.hex
Annexes:
Tiny_RTC_DS1307_180510.c
Horloge_18F26K22_60leds_Eeprom.ihex
La même HORLOGE semi-virtuelle sur un LCD
240x320
piloté par un PIC18F26K22
60 leds secondes + 12 OeilG + 12 Oeil D + 9 sourire + 2 pupilles
=> 95 leds
1 led = 1 cercle plein de rayon 4 pixels
voir les details
de realisation ICI .
et la video
retour a l'index