51单片机 如何4*4矩阵键盘输入按键 继电器输出信号 51单片机 c语言编程 4*4矩阵键盘如何实现等待按键松开功...

51\u5355\u7247\u673a\u5982\u4f55\u901a\u8fc74*4\u77e9\u9635\u952e\u76d8\u8f93\u5165\u4e00\u4e2a\u4e24\u4f4d\u6570,\u9001\u7ed9\u4e00\u4e2a\u53d8\u91cf\uff1f\u6c42\u52a9\u3002\u3002\u3002

\u53ef\u4ee5\u7684\uff0c\u5047\u5982\u952e\u76d8\u626b\u63cf\u7a0b\u5e8f\u662f
#include
#define uchar unsigned char
uchar key()
{
//\u952e\u76d8\u626b\u63cf
}
main()
{
uchar keycode[2],i=0,x;
uchar a;
while(1)
{
x=key;
if(x<10)
{
keycode[i]=x;
if(i==1)a=keycode[0]*10+keycode[1];
}
i++;
i&=0x01;
}
}

1\u3001\u5728\u7a0b\u5e8f\u68c0\u6d4b\u5230\u6309\u952e\u540e\uff0c\u52a0\u4e2a\u5ef6\u65f6\u53bb\u6296\uff0c\u4e0d\u8981\u52a0\u677e\u624b\u68c0\u6d4b\u3002\u7136\u540e\u6267\u884c\u7b2c\u4e00\u4e2a\u6309\u952e\u76f8\u5bf9\u5e94\u7684\u7a0b\u5e8f\u3002\u7136\u540e\u7ee7\u7eed\u6309\u952e\u626b\u63cf\u3002\u6ce8\u610f\u8fd9\u91cc\u8bf4\u7684\u662f\u7ee7\u7eed\uff0c\u4e5f\u5c31\u662f\u7ee7\u7eed\u5f80\u4e0b\u68c0\u6d4b\u3002\u5426\u5219\u7684\u7a0b\u5e8f\u5c31\u53ea\u80fd\u6267\u884c\u7b2c\u4e00\u4e2a\u6309\u952e\u6240\u5bf9\u5e94\u7684\u7a0b\u5e8f\u4e86\u3002\u8fd9\u6837\uff0c\u5c31\u80fd\u68c0\u6d4b\u5230\u7b2c\u4e8c\u6b21\u6309\u952e\u7684\u952e\u503c\u4e86\u3002

2\u3001\u4f8b\u7a0b\uff1a
uchar shaomiao(){uchar l,h;P1=0xf0;//\u83b7\u53d6\u9ad8\u56db\u4f4d\u4fe1\u606f\u3002\u5728\u6b64\u4f4e\u56db\u4f4d\u63a5\u5230\u884c\u3002\u884c\u4f4e\u7535\u5e73l=P1|0x0f;P1=l;//\u53ea\u628a\u88ab\u6309\u4e0b\u952e\u6240\u5728\u5217\u7f6e\u4f4eh=P1|0xf0;switch(h){case 0xfe:h=0;break;//1111 1110case 0xfd:h=1;break;case 0xfb:h=2;break;case 0xf7:h=3;break;}switch(l){case 0xef:l=0;break;//1110 1111case 0xdf:l=1;break;case 0xbf:l=2;break;case 0x7f:l=3;break;}P1=0xf0;/******\u5173\u952e\u95ee\u9898\u89e3\u51b3\u5982\u4e0b******/while(P1!=0xf0){while(P1!=0xf0);//\u7b49\u5f85\u653e\u5f00\u6309\u952edelayms(50);//\u9632\u6b62\u6296\u52a8}return(h*4+l);}

...........

 Inter0_process() interrupt 2                //外部中断1

 {

  Key_scan();//你的键盘扫描程序(中断服务程序),一旦触发中断,将运行至本段。

 }

 

 

    //主程序     

 main()

{  

 ...........

  ...........

   ...........

 EX1=1;                                                //开中断一 P3.3

 IT1=1;                                                //下降沿触发

 ET1=1;

 EA=1; 

 ...........

 ...........

}

注:图中的键盘接法都是独立按键接发,

矩阵键盘没有见过能直接触发中断的。



这个原理挺简单的,不过我也好久没用了,具体的记得不是那么清楚。 你拿本单片机的书(应该讲原理的书的都可以),找到编码键盘那块,看一会就会了~~
基本原理:当你按键按下后,键盘程序进行行列扫描,就可以确定为哪一个按键,然后跳到相应的子程序(你这边就是控制继电器了)!

补充回答:
那你就进行相应的设置,开外部中断等,然后就把下面的键盘和转移程序放到中断里面(即一般情况时程序停在等待中断处,当你中断按钮按下后,然后就进入子程序,等待你的键盘数字按键。。。)

你这个根本没必要用中断,直接检测S1状态,当低电平时改变一个位变量,进入矩阵键盘扫描,矩阵键盘有动作后再恢复位变量检测S1.

如果用中断,S1会在任何时候都有效。

1。用按键S1触发中断应该注意:对中端口采取必要滤波措施。
2。你的方案不太简洁:s1引起中断,仍后再去读4X4,可以用4与门接到中端口上,省去s1按键。
3。驱动继电器不能直接使用单片机口,不过也要看什么继电气。最好用驱动芯片。
4:继电器的线包要用防浪涌二极管。继电器触点电流或电压较高要对触点并联适当电容,减少对单片机pc针,或者中端口干扰引起误动作。
5:检查继电器电源功率,看看驱动电流(电压)能否维持继电器吸合。
本人qq:1034767769。e-m:[email protected]

扩展阅读:4x4矩阵键盘教程 ... 监控矩阵键盘图片 ... 4x4矩阵计算过程图 ... 单片机4 4矩阵键盘程序 ... 4x4矩阵键盘proteus名字 ... 单片机数码管0-15显示 ... 4x4矩阵键盘显示1-16 ... 4x4矩阵键盘数码显示管 ... 单片机4x4矩阵键盘键值图 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网