键盘的主要用途是打字。 但是它也可以用来向微控制器写代码。 该方法是非常规的,但是在手头没有其他东西时可以派上用场。 或者作为不再适合正常工作的键盘娱乐。 以下是操作方法。
编程器电路示例:

ScrollLock在RESET输入,Scap输入的CapsLock,MOSI输入的NumLock处设置电平。 MISO输出上的LED(VD4)用于控制进入编程模式。 标有星号(*)的详细信息是可选的。
编程算法(用于微控制器AT90或ATmega):
1)将SCK和MOSI设置为0(启用CapsLock和NumLock)。 在RESET变为0之前,SCK必须为0。
2)将0设置为RESET(启用ScrollLock)。
3)通过更改SCK和MOSI(ScrollLock和NumLock)的状态,形成将控制器转换为编程模式的顺序。
4)如果MISO输出上的LED不亮,则有必要在SCK线上产生一个脉冲并重复该步骤(点3)。
如果在32次尝试之后仍未过渡到编程模式,则似乎出了点问题。 如果成功,则通过ScrollLock和NumLock(SCK和MOSI)进行进一步的编程。 细心而持久的动臂可以手动对微控制器进行编程。
为什么这不起作用?
实现这样的程序员的主要问题是键盘本身的逻辑。 通过外部程序设置LED的状态与键盘上的结果相对应,但是打开/关闭LED的过渡过程是她自己的事。 以下是实际切换的波形图:

启用NumLock(包括CapsLock和ScrollLock)。

关闭ScrollLock(CapsLock和NumLock处于打开状态)。
我们可以说并不是所有的键盘对于微控制器的编程都同样有用。 在我拥有的三个中,只有一个独立地切换了LED。
如果您对键盘不太满意怎么办?
所有“瞬态”都在几微秒的时间内堆叠在一起,并且将某个级别设置为SCK,MOSI和RESET,延迟时间超过1 ms。 在这种情况下,可以使用低通滤波器提取编程信号。 这是一个示例过滤器:

74HC14-施密特触发器,用于形成输出电平。 可以用模拟比较器(例如LM2901)代替。 在微控制器中,AVR输入具有内置的施密特触发器,如果输出电平1和0对应于必要的电平,则您可以绕过RC链。
举个例子。 已成为程序员的键盘:

→ 程序员的软实施