Hari baik untuk semua Beberapa tahun yang lalu, mesin kasir tua yang dinonaktifkan secara tidak sengaja jatuh ke tangan saya. Itu disebut "Elf Micro-F." Karena Saya tertarik pada elektronik dan pemrograman, termasuk pembangunan berbagai perangkat pada mikrokontroler, perangkat memutuskan untuk menyelidiki. Setelah membongkar, saya melihat:
- sebuah papan dengan isian elektronik dan mikrokontroler AT89C52 dalam soket
- tampilan
- printer termal
- baterai
- keyboard film
- dua LED

Gambar. 1 Penampilan meja kas
Pada saat itu, saya sudah memiliki pengalaman membuat perangkat sederhana dari awal (jam, relay dikendalikan oleh port COM, dll.). Memahami perangkat yang sudah selesai tampak jauh lebih sulit. Untuk mulai dengan, saya menemukan di jaringan deskripsi perangkat ini, diagram, dan dokumentasi perbaikan. Ternyata, ada beberapa skema, mereka berbeda sangat kuat, walaupun perangkatnya disebut hampir sama. Tetapi pada akhirnya, saya menemukan sirkuit yang tepat. Dia memandangnya dan menyadari bahwa, sebenarnya, perangkat checkout tidak begitu rumit.
Saya harus mencari tahu:
- cara mudah memprogram mikrokontroler agar tidak menyeret maju dan mundur, lalu ke programmer, lalu kembali ke papan
- cara membuat pertukaran dengan komputer
- cara bekerja dengan RAM (dan ada AT24C08 serial)
- cara menggambar sesuatu di layar
- cara mendapatkan penekanan tombol
- dan yang paling penting! bagaimana cara menghasilkan sesuatu yang berarti untuk printer thermal
Pada artikel ini, saya akan berbicara tentang awal pekerjaan saya. Tujuan utamanya adalah membuat printer thermal dari meja kas bekas yang sudah dihapusbukukan.
Bagian 1
Mulai
Pada awalnya, saya memutuskan untuk meninggalkan mikrokontroler yang ada di papan tulis. Pertama, itu hanya bisa diprogram pada seorang programmer, yang saya tidak punya untuk jenis pengontrol ini. Kedua, ia memiliki sedikit memori flash internal untuk program.
Setelah tersiksa dengan pilihan, saya memilih mikrokontroler Winbond w78e58b. Itu dalam paket yang sama (plcc44), memiliki 32Kb memori program dan lebih banyak memori statis internal untuk menyimpan variabel, dan yang paling penting, ini memungkinkan Anda untuk memprogram diri Anda menggunakan programmer di-sirkuit tanpa melepasnya dari soket!
Tetapi ada kesulitan: untuk memulai pemrogramannya, butuh programmer paralel untuk jenis mikrokontroler ini untuk mem-boot bootloader, yang nantinya saya akan mengunggah firmware saya. Saya menemukan informasi tentang cara membuat programmer seperti itu di Internet, mengumpulkan programmer, dan menambal bootloader!
Lalu ada masalah lain - unit ini tidak memiliki konektor untuk menghubungkan ke PC!

2 Papan antarmuka asli
Meskipun, seperti yang saya baca di manual, ada saputangan, dan ada colokan di kasing perangkat untuk itu dan konektor di papan tulis, tapi saya tidak bisa mendapatkan pasangan ini. Pada saat itu tidak dijual di mana-mana, dan itu tidak memerlukan biaya uang. Kemudian saya memutuskan untuk membuat antarmuka sendiri. Saya memutuskan satu steker dari kasing, membongkar soket dari jaringan lokal dengan konektor untuk RJ45, memotong konektor ini menjadi sepotong papan dan menempelkannya ke dalam box office untuk perekat lelehan panas. Akibatnya, pasangan bengkok yang biasa dimasukkan dengan sempurna dari luar sampai satu klik! Tetap menghubungkan pin konektor ke mikrokontroler. Secara langsung, tentu saja, tidak mungkin, perlu melalui konverter level, misalnya MAX232. Pada sepotong kecil papan tempat memotong roti, dia menempatkan chip itu sendiri, kapasitor pengikat, menyolder kabel. Saya menyolder kabel untuk menghubungkan ke komputer dari sepotong twisted pair. Di satu sisi, konektor RJ45 biasa, di sisi lain, ibu DB9 untuk konektor port COM.
Tugas selanjutnya adalah menemukan kompiler, gratis dan tidak terlalu sulit untuk tujuan tersebut. Saya menemukan microvision keil. Itu semacam versi demo dengan batas panjang kode. Cukup untuk tujuan saya. Program pertama sederhana: untuk output ke komputer dalam program terminal hanya seperti Hello world!
Saya menulis sebuah program, kesulitannya hanya pada inisialisasi awal port dan register layanan. Tetapi setelah mencari jaringan untuk contoh, saya dengan cepat menangani ini. Selanjutnya, saya meluncurkan program
8051IspWriter, yang mengunggah firmware. Agar mikrokontroler beralih ke mode rongga firmware, perlu untuk mengaktifkan bootloader bawaan. Ternyata, ini dapat dilakukan dengan korslet ke tanah output dari controller sebelum menerapkan daya. Yang mana - ditemukan di lembar data pada mikrokontroler. Firmware diunggah, setelah itu saya mematikan, menyalakan kasir dan melihat teks saya di layar terminal! Sistemnya bekerja!
Selanjutnya, saya memutuskan untuk sedikit mengendalikan kasir, atau lebih tepatnya mengedipkan LED. Menurut skema, saya menentukan kaki mikrokontroler LED ini pergi, saya menulis flasher sederhana dan LED mulai berkedip di kasir! Jalan menuju tujuan akhir sudah terlihat!
Kutipan dari kode sumber:
void main(void) { UCHAR i; char c; static int data value; UCHAR bCassaTypeOld; UCHAR iNumSymbolsOld; jmpLDROM=0;