Änderung der Registrierkassen. Teil 1

Guten Tag an alle. Vor einigen Jahren fiel mir versehentlich eine alte stillgelegte Registrierkasse in die Hände. Es wurde "Elves Micro-F" genannt. Weil Ich interessiere mich für Elektronik und Programmierung, einschließlich des Aufbaus verschiedener Geräte auf Mikrocontrollern, die das Gerät untersuchen wollte. Nachdem ich es zerlegt hatte, sah ich:


  • eine Platine mit elektronischer Füllung und einem AT89C52-Mikrocontroller in einer Steckdose
  • Anzeige
  • Thermodrucker
  • Batterie
  • Filmtastatur
  • zwei LEDs

Bild
Abb. 1 Erscheinungsbild der Kasse


Zu diesem Zeitpunkt hatte ich bereits die Erfahrung, einfache Geräte von Grund auf neu zu erstellen (Uhren, Relais, die über den COM-Anschluss gesteuert werden usw.). Das fertige Gerät zu verstehen schien viel schwieriger. Zunächst fand ich im Netzwerk eine Beschreibung dieses Geräts, ein Diagramm und eine Reparaturdokumentation. Wie sich herausstellte, gibt es mehrere Schemata, die sich sehr stark unterscheiden, obwohl die Geräte fast gleich heißen. Aber am Ende habe ich die richtige Schaltung gefunden. Er sah sie an und stellte fest, dass das Kassengerät tatsächlich nicht so kompliziert ist.


Ich musste herausfinden:


  • wie einfach es ist, den Mikrocontroller so zu programmieren, dass er nicht hin und her gezogen wird, dann zum Programmierer und dann zurück zur Platine
  • wie man einen Austausch mit einem Computer herstellt
  • wie man mit RAM arbeitet (und es gab einen seriellen AT24C08)
  • wie man etwas auf dem Display zeichnet
  • wie man Tastenanschläge bekommt
  • und vor allem! wie man etwas Sinnvolles für einen Thermodrucker ausgibt

In diesem Artikel werde ich über den Beginn meiner Arbeit sprechen. Das ultimative Ziel ist es, einen Thermodrucker aus einer alten abgeschriebenen Kasse zu erstellen.


Teil 1
Starten Sie


Zuerst entschied ich mich, den Mikrocontroller, der sich auf der Platine befand, aufzugeben. Erstens konnte es nur auf einem Programmierer programmiert werden, den ich für diesen Controllertyp nicht hatte. Zweitens hatte er wenig internen Flash-Speicher für Programme.
Nachdem ich mit der Wahl gequält worden war, entschied ich mich für den Winbond w78e58b Mikrocontroller. Es befand sich im selben Paket (plcc44), hatte 32 KB Programmspeicher und mehr internen statischen Speicher zum Speichern von Variablen und vor allem ermöglichte es Ihnen, sich mit dem In-Circuit-Programmierer zu programmieren, ohne ihn aus dem Socket zu entfernen!


Es gab jedoch eine Schwierigkeit: Um mit der Programmierung zu beginnen, benötigte ein paralleler Programmierer für diesen Mikrocontrollertyp einen Flash-Bootloader, mit dem ich später meine Firmware hochladen würde. Ich habe Informationen darüber gefunden, wie man einen solchen Programmierer im Internet erstellt, einen Programmierer zusammenstellt und einen Bootloader gepatcht!


Dann gab es ein anderes Problem - dieses Gerät hatte keinen Anschluss zum Anschließen an einen PC!


Bild
Abb. 2 Original-Schnittstellenkarte

Wie ich in den Handbüchern gelesen habe, gab es zwar ein solches Taschentuch und Stecker im Gehäuse des Geräts und einen Stecker auf der Platine, aber ich konnte diese Paarung nicht bekommen. Zu dieser Zeit war es nirgendwo im Verkauf und kostete kein schlechtes Geld. Dann habe ich beschlossen, die Schnittstelle selbst zu machen. Ich brach einen Stecker aus dem Gehäuse, zerlegte die Steckdose mit einem RJ45-Stecker aus dem lokalen Netzwerk, schnitt diesen Stecker in ein Stück der Platine und klebte ihn für Schmelzkleber in die Abendkasse. Dadurch wurde das übliche Twisted Pair von außen bis zu einem Klick perfekt eingefügt! Die Verbindungsstifte müssen noch mit dem Mikrocontroller verbunden werden. Natürlich ist dies nicht direkt möglich, sondern über einen Pegelwandler, beispielsweise MAX232. Auf ein kleines Stück des Steckbretts legte er den Chip selbst, die Umreifungskondensatoren, und löte die Verkabelung. Ich habe ein Kabel für die Verbindung mit einem Computer aus einem Stück Twisted Pair gelötet. Einerseits ein normaler RJ45-Anschluss, andererseits eine DB9-Mutter für einen COM-Port-Anschluss.


Die nächste Aufgabe bestand darin, einen Compiler zu finden, der für solche Zwecke frei und nicht besonders schwierig ist. Ich bin auf Keil Microvision gestoßen. Es war eine Art Demoversion mit einer Begrenzung der Codelänge. Genug für meine Zwecke. Das erste Programm war einfach: im Terminalprogramm auf den Computer auszugeben, so etwas wie Hallo Welt!


Ich habe ein Programm geschrieben, die Schwierigkeit bestand nur in der anfänglichen Initialisierung von Ports und Serviceregistern. Aber nachdem ich im Netzwerk nach Beispielen gesucht hatte, ging ich schnell darauf ein. Als nächstes startete ich das Programm
8051IspWriter, der Firmware hochlädt. Damit der Mikrocontroller in den Schachtmodus der Firmware wechseln konnte, musste der eingebaute Bootloader aktiviert werden. Wie sich herausstellte, kann dies erreicht werden, indem der Ausgang des Controllers gegen Masse kurzgeschlossen wird, bevor Strom angelegt wird. Welches - im Datenblatt des Mikrocontrollers gefunden. Die Firmware wurde hochgeladen, danach habe ich ausgeschaltet, die Kasse eingeschaltet und meinen Text auf dem Terminalbildschirm gesehen! Das System hat funktioniert!


Außerdem habe ich beschlossen, die Registrierkasse selbst ein wenig zu steuern oder die LED zu blinken. Gemäß dem Schema habe ich festgestellt, zu welchem ​​Bein des Mikrocontrollers diese LED geht, ich habe ein einfaches Blinklicht geschrieben und die LED begann an der Kasse zu blinken! Der Weg zum Endziel ist bereits sichtbar geworden!


Auszüge aus dem Quellcode:


void main(void) { UCHAR i; char c; static int data value; UCHAR bCassaTypeOld; UCHAR iNumSymbolsOld; jmpLDROM=0; //            P0 |= 0x01; // PPWR = 1 P1 |= 0x20; // PM1 = 1 P1 |= 0x40; // PM2 = 1 P3 &= ~0x40; // SI = 0 P3 &= ~0x20; // CLOCK = 0 P3 |= 0x80; // LATCH = 1 P3 |= 0x10; // STBA = 1 P3 |= 0x08; // STBB = 1 //          initUart(BAUD_RATE_19200); puts("Hello world!"); while(1) ; } 

Source: https://habr.com/ru/post/de424627/


All Articles