Bonne journée à tous. Il y a quelques années, une vieille caisse enregistreuse hors service est tombée accidentellement entre mes mains. Il s'appelait "Elves Micro-F". Parce que Je m'intéresse à l'électronique et à la programmation, notamment à la construction de divers appareils sur microcontrôleurs, l'appareil a décidé d'enquêter. Après l'avoir démonté, j'ai vu:
- une carte avec bourrage électronique et un microcontrôleur AT89C52 dans une prise
- affichage
- imprimante thermique
- batterie
- clavier de film
- deux LED

Fig.1 Apparence de la caisse
À cette époque, j'avais déjà l'expérience de la création de dispositifs simples à partir de zéro (horloges, relais contrôlés par le port COM, etc.). Comprendre l'appareil fini semblait beaucoup plus difficile. Pour commencer, j'ai trouvé sur le réseau une description de cet appareil, un schéma et une documentation de réparation. Il s'est avéré qu'il existe plusieurs schémas, ils diffèrent assez fortement, bien que les appareils soient appelés presque les mêmes. Mais au final, j'ai trouvé le bon circuit. Il l'a regardée et s'est rendu compte qu'en fait, le dispositif de paiement n'est pas si compliqué.
Je devais comprendre:
- combien il est facile de programmer le microcontrôleur pour ne pas le faire glisser d'avant en arrière, puis vers le programmeur, puis de nouveau vers la carte
- comment établir un échange avec un ordinateur
- comment travailler avec de la RAM (et il y avait un AT24C08 en série)
- comment dessiner quelque chose sur l'écran
- comment obtenir des touches
- et surtout! comment imprimer quelque chose de significatif sur une imprimante thermique
Dans cet article, je parlerai du début de mon travail. Le but ultime est de créer une imprimante thermique à partir d'une ancienne caisse annulée.
Partie 1
Commencer
Au début, j'ai décidé d'abandonner le microcontrôleur qui était sur la carte. Tout d'abord, il ne pouvait être programmé que sur un programmateur, ce que je n'avais pas pour ce type de contrôleur. Deuxièmement, il avait peu de mémoire flash interne pour les programmes.
Tourmenté par le choix, je me suis installé sur le microcontrôleur Winbond w78e58b. Il était dans le même paquet (plcc44), avait 32 Ko de mémoire de programme et plus de mémoire statique interne pour stocker des variables, et plus important encore, il s'est laissé programmer par un programmateur en circuit sans le retirer de la prise!
Mais il y avait une difficulté: pour commencer à le programmer, il a fallu un programmeur parallèle pour ce type de microcontrôleur pour coudre le bootloader, avec lequel je téléchargerais ensuite mon firmware. J'ai trouvé des informations sur la façon de créer un tel programmeur sur Internet, de mettre en place un programmeur et un chargeur de démarrage patché!
Puis il y a eu un autre problème - cet appareil n'avait pas de connecteur pour se connecter à un PC!

Fig.2 Carte d'interface d'origine
Bien que, comme je l'ai lu dans les manuels, il y avait un tel mouchoir, et il y avait des fiches dans le boîtier de l'appareil et un connecteur sur la carte, mais je n'ai pas pu obtenir cet appairage. A cette époque, il n'était en vente nulle part, et cela ne coûtait pas de l'argent maladif. J'ai alors décidé de faire l'interface moi-même. J'ai cassé une prise du boîtier, démonté la prise du réseau local avec un connecteur pour RJ45, coupé ce connecteur en un morceau de la carte et collé au box-office pour l'adhésif thermofusible. En conséquence, la paire torsadée habituelle a été insérée parfaitement de l'extérieur jusqu'à un clic! Reste à connecter les broches du connecteur au microcontrôleur. Directement, bien sûr, c'est impossible, c'est nécessaire grâce à un convertisseur de niveau, par exemple MAX232. Sur un petit morceau de la planche à pain, il a placé la puce elle-même, les condensateurs de cerclage, soudé le câblage. J'ai soudé un câble pour me connecter à un ordinateur à partir d'un morceau de paire torsadée. D'une part, un connecteur RJ45 classique, d'autre part, une mère DB9 pour un connecteur de port COM.
La tâche suivante consistait à trouver un compilateur, gratuit et pas particulièrement difficile à cet effet. Je suis tombé sur keil microvision. C'était une sorte de version de démonstration avec une limite de longueur de code. Assez pour mes besoins. Le premier programme était simple: sortir sur l'ordinateur dans le programme terminal juste quelque chose comme Hello world!
J'ai écrit un programme, la difficulté ne résidait que dans l'initialisation initiale des ports et registres de services. Mais après avoir cherché des exemples sur le réseau, je me suis rapidement occupé de cela. Ensuite, j'ai lancé le programme
8051IspWriter, qui télécharge le firmware. Pour que le microcontrôleur passe en mode baie du firmware, il était nécessaire d'activer le chargeur de démarrage intégré. Comme il s'est avéré, cela peut être fait en court-circuitant à la masse la sortie du contrôleur avant d'appliquer l'alimentation. Lequel - trouvé dans la fiche technique du microcontrôleur. Le firmware a été téléchargé, après quoi j'ai éteint, allumé la caisse et vu mon texte sur l'écran du terminal! Le système a fonctionné!
De plus, j'ai décidé de contrôler un peu la caisse enregistreuse elle-même, ou plutôt de faire clignoter la LED. Selon le schéma, j'ai déterminé à quelle jambe du microcontrôleur cette LED va, j'ai écrit une lumière clignotante simple et la LED a commencé à clignoter à la caisse! Le chemin vers l'objectif final est déjà devenu visible!
Extraits du code source:
void main(void) { UCHAR i; char c; static int data value; UCHAR bCassaTypeOld; UCHAR iNumSymbolsOld; jmpLDROM=0;