祝大家有美好的一天。 几年前,一台废弃的旧收银机不慎掉入了我的手中。 它被称为“精灵Micro-F”。 因为 我对电子和编程感兴趣,包括在微控制器上构建各种设备,因此决定研究该设备。 拆解后,我看到:
- 带有电子填料的板子和一个插在插座中的AT89C52微控制器
- 展示
- 热敏打印机
- 电池
- 电影键盘
- 两个LED

图1收银台外观
那时,我已经具有从头开始创建简单设备(时钟,由COM端口控制的继电器等)的经验。 了解完成的设备似乎要困难得多。 首先,我在网络上找到了该设备的说明,图表和维修文档。 事实证明,有几种方案,它们之间的差异非常大,尽管这些设备的名称几乎相同。 但是最后,我找到了正确的电路。 他看着她,意识到实际上,结帐设备并不是那么复杂。
我必须弄清楚:
- 如何轻松地对微控制器进行编程,以免来回拖动,然后到编程器,再回到板子
- 如何与计算机建立交流
- 如何使用RAM(还有一个串行AT24C08)
- 如何在显示器上画东西
- 如何获得击键
- 最重要的是! 如何向热敏打印机输出有意义的内容
在本文中,我将讨论我的工作的开始。 最终目标是从旧的已注销的收银台创建热敏打印机。
第一部分
开始
首先,我决定放弃板上的微控制器。 首先,它只能在编程器上进行编程,而对于这种类型的控制器我没有。 其次,他几乎没有用于程序的内部闪存。
由于选择了折磨,我选择了Winbond w78e58b微控制器。 它在同一软件包(plcc44)中,具有32Kb的程序存储器和更多的内部静态存储器用于存储变量,最重要的是,它允许您使用在线编程器进行编程,而无需将其从套接字中移除!
但是有一个困难:开始对其进行编程,为此类型的微控制器需要一个并行编程器才能将其加载到闪存引导加载程序中,稍后我将使用该程序上传固件。 我找到了有关如何在Internet上创建这样一个程序员,组合一个程序员以及修补Bootloader的信息!
然后还有另一个问题-本机没有用于连接PC的连接器!

图2原始接口板
虽然,正如我在手册中所读到的那样,有一块手帕,设备外壳上有插头,板上有一个连接器,但我无法配对。 当时它无处可售,而且花的钱不多。 然后,我决定自己制作界面。 我从外壳上拆下一个插头,用RJ45的连接器从本地网络上拆下了插座,将此连接器切成一块木板,然后粘贴到票房中以热熔胶。 结果,从外面完美插入了通常的双绞线,直到发出咔嗒声! 仍然需要将连接器引脚连接到微控制器。 当然,直接地,这是不可能的,这需要通过电平转换器,例如MAX232。 在一块面包板上,他将芯片本身,带状电容器放置在线路上。 我焊接了一根双绞线连接到计算机的电缆。 一方面是常规的RJ45连接器,另一方面是用于COM端口连接器的DB9母卡。
下一个任务是找到一个免费的编译器,并且为此目的没有特别的困难。 我遇到了keil microvision。 这是一种具有代码长度限制的演示版本。 够我的目的了。 第一个程序很简单:就像在Hello world中一样,在终端程序中输出到计算机!
我写了一个程序,困难仅在于端口和服务寄存器的初始初始化。 但是,在网络上搜索示例后,我迅速处理了这个问题。 接下来,我启动了程序
8051IspWriter,用于上传固件。 为了使微控制器切换到固件的间隔模式,必须激活内置的引导程序。 事实证明,这可以通过在加电之前将控制器的输出接地短路来实现。 哪一个-在微控制器的数据表中找到。 固件已上传,然后关闭电源,打开收银机,并在终端屏幕上看到我的文字! 该系统正常工作!
此外,我决定稍微控制收银机本身,或者使LED闪烁。 根据方案,我确定了该LED到达微控制器的哪一侧,我写了一个简单的闪烁灯,并且该LED在结帐时开始闪烁! 通往最终目标的道路已经变得可见!
摘录自源代码:
void main(void) { UCHAR i; char c; static int data value; UCHAR bCassaTypeOld; UCHAR iNumSymbolsOld; jmpLDROM=0;