发 帖  
原厂入驻New
[问答] 带有PIC18F4550的Matrix 3x4键盘可能吗?
85 微控制器 接口 MCU
分享
你好。我正在尝试与我的微控制器:PIC18F450接口3X4键盘。在网上复习教程后,我知道在键盘和MCU之间需要上拉电阻。我知道PortB内部有微弱的上拉电阻。我遇到过这个线程:http://www..hip.com/for./m168323.asp.lly,我正在考虑使用PORTB作为我的键盘接口,因为它具有内部上拉功能,但是当然我不能将所有引脚连接到我的键盘引脚上。是否可以将letssayTRISBbit.TRISB0设置为TRISBbit.TRISB3作为输入输出,从而启用上拉电阻,并将rest设置为输入输出禁用上拉电阻。这样可能吗?编辑:谢谢指点!
0
2019-11-5 10:44:50   评论 分享淘帖 邀请回答

相关问题

19个回答
你把它放回到前面。弱的弹头只对被设置为输入的管脚有效。
2019-11-5 11:04:13 评论

举报

通常的方法是使用三个销子来驱动三列,但是每次只设置一个作为输出,驱动低。另外两行被设置为输入模式,这样它们可以浮动。就是你一次选择一列的方式。然后你把四行连接到另外四根插脚上,这四根插脚有上拉电阻。你能从这里算出来吗?
2019-11-5 11:16:53 评论

举报

我不确定我是否理解该怎么做。我所理解的是:我理解您的行逻辑,但我认为我在编码语言中没有弄对。
2019-11-5 11:24:25 评论

举报

您使用“输入”和“输出”是根据PIC的引脚从后面到前面的。您是否考虑矩阵的输入和输出?试试这段代码,它将用所有按钮的状态填充一个3字节的数组。注意,按下的按钮将给出0位,而未按下的按钮将给出1。
2019-11-5 11:32:28 评论

举报

<edit>qhb更快;-)我的一个旧项目的一个示例片段:key.K_*是保存键状态的位字段。该状态是在定时器中断期间设置的,定时器中断轮询键并在main()中采取相应操作时被清除。
2019-11-5 11:40:43 评论

举报

用于检查键的不同代码,但是操纵驱动列的引脚的TRIS位的概念完全相同,每次只激活一个。
2019-11-5 11:53:10 评论

举报

对。我开始这样想。完全忘记了我可以自己选择它,你的意思是写行[]而不是COL[]吗?我假设你是指行[ ]。因此,为了检查数组中的位,是否应该用if条件运行for循环?例如:这有道理吗?
2019-11-5 12:04:56 评论

举报

我不太熟悉BIT领域,事实上这是我第一次遇到它。虽然从一个快速的在线研究,它的想法似乎是有趣的。在没有使用位字段的情况下还有其他方法吗?
2019-11-5 12:20:54 评论

举报

是的,或者有所谓的口罩
2019-11-5 12:32:15 评论

举报

是的,Bitfeld是因为代码是针对孩子的,我认为更容易理解;-)甚至“C”被翻译成德语,带有\define wenn,如果\define sonst.……
2019-11-5 12:44:31 评论

举报

抱歉,我应该调用数组cols[]而不是rows[],因为数组中的每个元素都包含一列按钮。注意,只要您保持一致,您调用“rows”的方向和哪个“column”完全是任意的。
2019-11-5 12:51:55 评论

举报

80年代早期,一家非常好的意大利电子杂志《Nuova Elettronica》出版了一本基于Z80的微型计算机原理图(并且还销售),该微型计算机从六角汇编机开始,后来得到一个伪CGA视频板(后来又改进了一个)。他们在意大利语中介绍了一个基本的翻译。我只听说过一个!事实上,作为一个小女孩,我学会了英语。
2019-11-5 12:59:04 评论

举报

我在描述中提到过,键盘是3x4,即3列4行1 2 3-行14 5 6-行27 8 9-行3*0#-行4|||C1 C2 C3Datasheet:http://www.farnell.com/datasheets/1662617.pdfIn变量num,我试图存储该变量num可能是按下的钥匙。如果这不是正确的方法,那该怎么办呢?编辑:如果你不介意的话,可以帮助我理解为什么“Num”方法不起作用?
2019-11-5 13:06:58 评论

举报

在我建议的代码已经运行之后,每个密钥的状态将被存储在数组中,如下所示:col[0]位04中col[0]位17中col[0]位2*中col[0]位32中col[1]位05中col[1]位05中col[1]位20中col[1]位33中col[2]位06中col[2]位19中col[2]位2#。所以这段代码将告诉您“0”键是否按下。注意,这段代码所做的只是告诉您按钮现在正在按下。假设您正在重复运行代码,它不会导致只在按下按钮时出现任何情况。您将需要额外的代码来检测这是否是新按下的button.n.b。您可以容易地检测何时按下了NO按钮,因为数组的所有三个字节将包含0x0F。
2019-11-5 13:19:36 评论

举报

这就是我所尝试的。不管是连接了键盘,还是按了键,或者用键盘可以做任何事情,我的输出在液晶上都是一样的:我漏掉了什么?是不是我没有插入MCU存储哪个按键的那一部分?我想这就是我在这里做的事情。
2019-11-5 13:30:14 评论

举报

你似乎没有设置你想在LCD上写的位置?不管怎么说,为什么不使用CIPIT3作为调试器来检查每个读之后的行[]?你激活输入的弹出点了吗?
2019-11-5 13:49:20 评论

举报

默认情况下,位置为0x00 h,打印所有语句。要么不读,要么假设所有的东西都立刻按下(我不认为是这样)。很好的捕捉。我更新了代码:我更新了代码,但代码是一样的。它正在执行所有的theif语句。
2019-11-5 14:08:19 评论

举报

我认为所有的CXYDIR都是三位的。如果是,您是否初始化了相应的LAT位低?
2019-11-5 14:15:50 评论

举报

是的,所有的CXYDIR都是TrIS位,CXYDAT是LAT位,我把它们设置为低。我认为最好是粘贴整个代码。上面的代码也包含了LCD功能。
2019-11-5 14:33:12 评论

举报

只有小组成员才能发言,加入小组>>

65个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表