51单片机按键检测问题

我想让这三个发光二极管(红色的)任何一个键被按下,都能正常发光。目前供电实测电压是DC5.33V,采用R16采用200欧的。(5330-1700)/200=18.15毫安。这样就算三个灯同时亮起来,分是的电流是6毫安左右。
这是我的思路和分析。这样设计,没有什么错误吧?红色发光二极管压降是1.6-1.8V吧?

三个二极管、一个电阻,确实是一个与门。

电阻的计算公式,正确。
二极管的导通电压、电流,选择的基本合理。

可以进行实际电路的安装、测试。

实际上,现在的二极管,发光效率,逐年的提高,已经不用 6mA,就很醒目了。
不同颜色的二极管,导通电压,也有差异,选用较小的,才利于触发中断。
得进行反复实验,才能完成设计。

在程序中,注意不要使 P3.2 输出低电平,否则,会有较大的灌电流出现。追问

发光二极管导通压降1.7v左右,p3.2口是中断口,开关接通后,p3.2口是1.7v,单片机并不认识,所以图错了,

追答

如果是 0.7V 的普通二极管,就可以了。

追问

楼下说到了肖特基二极管,不知你是否知道?因为我想当按键按下后有个发光二极管可以看见。不知他说的那种二极管应该如何接

追答

肖特基二极管,不是发光的。
它,不符合你的设计要求。

其主要特点是导通、截止转换速度较快。
用在这里,有些浪费了功能。

如果,不想发光,就使用普通的 1N4148 即可,几分钱/个。
导通电压是 0.7V,可以让 P3.2 觉察到低电平。

追问

我是想说把肖特基二极管串联在发光二极管后面,然后p3.2口接在发光二极管的阴极,和肖特基二极管的阳极,这样电压不就是肖特基二极管的导通压降了吗?电压更低,单片机更容易识别、0.7v感觉很玄啊。

追答

发光二极管串联肖特基,可以。

0.7V感觉很玄啊。
是可以的,我实际实验过。
当电源电压是+5V时,能够可靠的触发中断。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-07
你的R13-R15这三个电阻没什么作用啊。
况且你单片机的引脚根本没有控制作用。
你要么把LED灯的共阴极变成是单片机的控制脚,因为单片机的灌电流能力很强追问

这是与门电路啊。当一个按键被按下后,触发中断。判断哪个键被按下了。图0.8V-2V单片机机不认识。图我改了下,看下楼的图

第2个回答  2013-05-07
1、单片机检测这三个按键是可以的,电路可以实现,只需检测P4.0、P3.7、P3.6引脚的状态,读取输入值为0则是相连接的按键闭合,为1 按键释放状态。P3.2无需检测,此端平时为高电平1,按键闭合时后为1.5V左右,单片机不一定能够正常读取,所以此引脚可以断开不用。
2、单片机按键的扫描应该具有消抖延时程序提高可靠性,通常还要检测按键释放后才确认此按键真正有效。追问

P3.2可是中断口呢。我是用中断来读取按键信息的,但是发光二极管阳极电压是1.7V左右。就不能让它发光以示被按下了? 用二极管呢压降是0.7V,又看不见它发光,有什么好方法让它用上发光的二极管呢

追答

那就另加3个肖特基二极管和一个电阻,接法与发光管接法一样,来代替现在的电路接到P3.2作为中断源,肖特基可以使用SS12系列,结电压为0.2V左右,单片机可以检测到。

追问

你说的意思是在发光二极管后面串联一个肖特基二极管?,然后p3.2口接在肖特基二极管的阳极和发光二极管的阴极?结电压0.2V?可以不用改变R16,200欧的电阻?如果方便可以提供一下你说的图吗,谢谢了

追答

不是。肖特基二极管及电阻的接法与发光管及其电阻完全一样,不是串联,是并联。电阻4.7K~10K都可以。这样明白了吧?这是一个非常简单的电路,你看看不行再给你画图。

追问

我想让它继续发光以示按键被按下了?串联应该可行吧?只是中断口取在发光二极管的阴极和肖特基的阳极之间?

追答

串联不行,二极管电路对你的发光管电路没有影响,无需考虑亮不了等其他问题。二极管的负极分别与发光管的负极相连,三个正极接电阻为中断输出,电阻另一端接电源。

追问

你的意思是两个相同的电路吧?只是二极管不同,可是串联在发光后面为什么不行呢?比如二极管导通压降是0.4v,中断口就在二极管的阳极。按钮按下后,导通,中断口的电压就应该是0.4v的啊,只是前面多串了个发光二极管分压的啊?为什么你说串联就不行

追答

用串联的方法是不能实现的,为什么要用不成立的电路呢?必须是并联的,在电路中另加三个二极管和一个电阻。没时间画图了

第3个回答  2013-05-07
分析没错。

但R16的阻值太小了。用470比较合适。追问

470的话,一个发光二极管亮是7毫安左右,那三个一起亮,就只有2.5毫安左右了。发光二极管不就点不亮了?

追答

肯定能点亮。

第4个回答  2013-05-07
按键按下后,单片机管脚并不能判断为低电平。因为单片机会把0.8v以上的电源认为是高电平。另外还想问问楼主,为啥要这样接电路?追问

与门电路嘛,我把图改了下,你再看看,这样能给低电平信号了吗?,按键被按下,P3.2低电平,进入中断。然后判断是哪个键被按下?R16的电阻是否太小?
不好意思,图不对。我就想让它,有个按键被按下后,触发P3.2中断,然后检测哪个被按下,还要亮灯。是不是只能接个二极管他的压降只有0.7V满足单片机的低电平0.8V呢?

追答

即使用0.7压降的二极管,按键也会很不灵敏。并不建议使用这种电路来检测按键。如果真的要这样实现可以试试使用或非门芯片。其实如果是小程序直接使用按键扫描就可以了。如果你程序比较大,可以使用带AD中断的单片机,一个管脚就可以带至少8个按键。

51单片机矩阵键盘检测方面的问题
第一个问题,应该是考虑如果先开锁存器,在那一时刻,P0的值还是上一次给P0赋的值,下在一条语句才将这次的值给P0,这样会造成数码管的余辉,静态显示的时候,因为太快看不到,动态显示时,就会比较明显了。第二个问题他的程序应该检测的是高四位,是否被拉低,因为temp和0xf0与,低四位不管是什...

51单片机按键检测问题
三个二极管、一个电阻,确实是一个与门。电阻的计算公式,正确。二极管的导通电压、电流,选择的基本合理。可以进行实际电路的安装、测试。实际上,现在的二极管,发光效率,逐年的提高,已经不用 6mA,就很醒目了。不同颜色的二极管,导通电压,也有差异,选用较小的,才利于触发中断。得进行反复实验,...

51单片机按键式计数器 程序一直显示有错,在void(jj),请帮忙解答一下...
你这个按键电路不行,你要加上一个上拉电阻才行,不然按键没按时,其IO口状态无法识别出是高电平还是低电平。char j=0;\/\/没空格 void jj(void) \/\/没参数就写个void 你这个代码有个很大的缺陷就是按键检测放在主循环里调用,你稍微按一下,程序都可以执行了几遍按键检测了,所以你无法可以正常...

关于51单片机矩阵键盘的问题。
(1)P3口是准双向IO口(注意与双向IO口的区别),它 的硬件结构决定着,读取之前先写1,再读取,读取的结果才可能是正确的,你可以区域查查书。(2)4X4 矩阵键盘的8根线直接连在IO上,而独立按键有一根线固定是接地的,这就意味着必须采取扫面或者线反转的方法。比如其中一根行线赋0,相当于...

51单片机的矩阵键盘检测问题
扫描按键有没有释放,如果释放再加个消抖延时,再扫描有没有释放,如果按键释放则确认已经松手了。我是这么做的,可以用

51单片机中按键检测时间问什么将数据清零的这段代码取消注释后,数码管...
代码上看是没问题的 估计是你的KEY3一直被按下了吧 检查电路连接是不是有问题 也就是说KEY1和KEY2和KEY3是不是一样的电路

51单片机 矩阵键盘 检测的命令
temp的值会受到按键的影响,例如变成:7e或别的值等。

单片机按钮的问题
P2.1 是高电平。单片机输出高电平的能力,极其低,可以由外设,很容易的加以改变。所以,单片机输出电平,就是设置为输入状态。如果,按键按下,仍然是高电平,那么,就无法区分,按下、还是没有按下。所以,按键的另一端,必须接地,按下后,送来低电平。按键松开,单片机就自己恢复成为高电平。

有木有大神啊,这是51单片机矩阵键盘的一个程序,其中的那个松手检测没...
单片机默认都是1。按键都是0。所以按下去单片机自然就是0。如果你检测是1的话。那你的按键就没有按下去。

求助大神,51单片机程序量很大,低电平检测按键没反应。怎么办?_百度知 ...
那是在执行其它程序呢,没时间检测按键。看你的按键程序是写成了子程序了,还是放在主程序中了?按键的作用是什么?什么时候要用。主程序中可根据不同运行状态调用部分子函数。需要开机按键设置时,优先执行按键程序,其它需要设置以后才能运行的子函数暂时不调用,减少单片机被占用过多。设置后,不需要按键...

相似回答