虽然大学学过,但是都忘记的差不多了,现在和菜鸟差不多
哪位大神走过路过,给点建议
因为没有协议,才想弄个外挂键盘输入,省得手动输入,需求就是这样的,目前连接的只能从外挂键盘入手
电路,PCB板等没什么好看的,确实
比如我直接用金属线接通5号线和6号线然后断开,就如同按下按键1后又松开按键了
所以才想着继电器控制通断两股金属线,简单,但是笨拙,成本也高于直接用IO口模拟
是这样的,我手里有个设备,主板工作电压是5V,看键盘排线好像多数直接接的MCU IO口,如下图中标识键盘排线插口位置(图中左上角橙色线条包围区域),键盘线走向左上角,顺左侧一路向下连接到MCU上

看了下按键输入面板,基本只是按键
按键面板正面完整外观视图如下:

按键面板正面拆除灰白色按键及黑色塑料底座后如下(PCB板正面视图):
(图上带颜色1-9均有金属线连接上面的黑色塑料按键,塑料按键也只是简单接触与断开这两股金属引线)

按键面板背面走线如下(没什么好看的,只是简单引线接触断开,发图就是告知没有什么复杂电路):

现在我就是想用另外一个单片机的IO口来接入充当键盘输入,根据通信,设置IO口模拟按下某个按键,但是看着键盘是4行x5列(4x5=最多支持20个按键,实际只设了19个按键),共9条线(4行线+5列线=9),网上看了下,当一个按键按下时,MCU需要写读两次才能分别确定行列,从而确定按键是哪个,因为是两次(每次均先写再读),不确定两次间隔时间等等,如果我用IO口模拟按键按下,好像也不好控制,想着是否要换方案了,换成19个继电器,机械继电器啪啪响的难听(淘宝上倒是有卖);固态继电器贵,但是也没成品板子。
------解决方案--------------------
行列扫描的原理就是输出扫描码,读取状态码,匹配之后,得到键码,以识别按键
用MCU来骗MCU,无非就是找到扫描码的端口,读取扫描码,根据模拟按键的需要,送出对应的状态码即可。
------解决方案--------------------
可以用模拟开关来做,比如74HC4066D,4单刀单掷,要那个按键通选通那一路就好了,编程简单,就是需要20个I/O。当然如果不要求多键同时按的话,可以再加一片译码器就不用多少I/O了
如果不加芯片,只用单片机模拟,需要用到外部I/O中断,监测键盘扫描信号,发现有上升/下降沿马上控制对应键输入线作相应变化。如果原键扫描程序延时很短的话可能会出问题
------解决方案--------------------
你这想法不错,不过不能用双刀,因为双刀是同步控制的,变成只有四种组合:X1-Y1, X2-Y2, X3-Y3, X4-Y4
单刀多掷分别控制可行
------解决方案--------------------
不过别忘了,还要有无键按下的状态,所以多掷开关要有多余的悬空位置
------解决方案--------------------
应该一侧悬空就可以了,所以可以做成4X7的阵列