完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
你好。我正在尝试与我的微控制器:PIC18F450接口3X4键盘。在网上复习教程后,我知道在键盘和MCU之间需要上拉电阻。我知道PortB内部有微弱的上拉电阻。我遇到过这个线程:http://www..hip.com/for./m168323.asp.lly,我正在考虑使用PORTB作为我的键盘接口,因为它具有内部上拉功能,但是当然我不能将所有引脚连接到我的键盘引脚上。是否可以将letssayTRISBbit.TRISB0设置为TRISBbit.TRISB3作为输入输出,从而启用上拉电阻,并将rest设置为输入输出禁用上拉电阻。这样可能吗?编辑:谢谢指点!
|
|
相关推荐
19个回答
|
|
|
你把它放回到前面。弱的弹头只对被设置为输入的管脚有效。
|
|
|
|
|
|
通常的方法是使用三个销子来驱动三列,但是每次只设置一个作为输出,驱动低。另外两行被设置为输入模式,这样它们可以浮动。就是你一次选择一列的方式。然后你把四行连接到另外四根插脚上,这四根插脚有上拉电阻。你能从这里算出来吗?
|
|
|
|
|
|
我不确定我是否理解该怎么做。我所理解的是:我理解您的行逻辑,但我认为我在编码语言中没有弄对。
|
|
|
|
|
|
您使用“输入”和“输出”是根据PIC的引脚从后面到前面的。您是否考虑矩阵的输入和输出?试试这段代码,它将用所有按钮的状态填充一个3字节的数组。注意,按下的按钮将给出0位,而未按下的按钮将给出1。
|
|
|
|
|
|
|
|
|
|
|
|
用于检查键的不同代码,但是操纵驱动列的引脚的TRIS位的概念完全相同,每次只激活一个。
|
|
|
|
|
|
|
|
|
|
|
|
我不太熟悉BIT领域,事实上这是我第一次遇到它。虽然从一个快速的在线研究,它的想法似乎是有趣的。在没有使用位字段的情况下还有其他方法吗?
|
|
|
|
|
|
是的,或者有所谓的口罩
|
|
|
|
|
|
是的,Bitfeld是因为代码是针对孩子的,我认为更容易理解;-)甚至“C”被翻译成德语,带有define wenn,如果define sonst.……
|
|
|
|
|
|
抱歉,我应该调用数组cols[]而不是rows[],因为数组中的每个元素都包含一列按钮。注意,只要您保持一致,您调用“rows”的方向和哪个“column”完全是任意的。
|
|
|
|
|
|
80年代早期,一家非常好的意大利电子杂志《Nuova Elettronica》出版了一本基于Z80的微型计算机原理图(并且还销售),该微型计算机从六角汇编机开始,后来得到一个伪CGA视频板(后来又改进了一个)。他们在意大利语中介绍了一个基本的翻译。我只听说过一个!事实上,作为一个小女孩,我学会了英语。
|
|
|
|
|
|
我在描述中提到过,键盘是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”方法不起作用?
|
|
|
|
|
|
在我建议的代码已经运行之后,每个密钥的状态将被存储在数组中,如下所示: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。
|
|
|
|
|
|
这就是我所尝试的。不管是连接了键盘,还是按了键,或者用键盘可以做任何事情,我的输出在液晶上都是一样的:我漏掉了什么?是不是我没有插入MCU存储哪个按键的那一部分?我想这就是我在这里做的事情。
|
|
|
|
|
|
你似乎没有设置你想在LCD上写的位置?不管怎么说,为什么不使用CIPIT3作为调试器来检查每个读之后的行[]?你激活输入的弹出点了吗?
|
|
|
|
|
|
默认情况下,位置为0x00 h,打印所有语句。要么不读,要么假设所有的东西都立刻按下(我不认为是这样)。很好的捕捉。我更新了代码:我更新了代码,但代码是一样的。它正在执行所有的theif语句。
|
|
|
|
|
|
我认为所有的CXYDIR都是三位的。如果是,您是否初始化了相应的LAT位低?
|
|
|
|
|
|
是的,所有的CXYDIR都是TrIS位,CXYDAT是LAT位,我把它们设置为低。我认为最好是粘贴整个代码。上面的代码也包含了LCD功能。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
454 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3529 浏览 3 评论
1121浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1094浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
460浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 16:38 , Processed in 1.356863 second(s), Total 110, Slave 92 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2138