仿真原理图如下(proteus仿真工程文件和单片机C源码可到本帖附件中下载)
部分源码:完整请见附件
- 单片机源程序如下:
- //功能:晶振11.0592M,矩阵按键应用,16种按键对用16种输出
- #include<reg51.h>
- unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,0x80,0x90};//0~9的数码
- void delay(unsigned int i)
- {while(i--);}
- /**************************************
- 函数名:jianzhi()
- 函数功能:当有按键按下时,判断是哪一个按键按下,16个按键对应16种输出
- 返回值: result. result=0 忙,result=1 不忙。
- ***************************************/
- void jianzhi()
- {
- switch(P2)
- {
- //判断第一行哪一个按键按下,让P0口输出
- case 0xee:P0=duan[0];break;
- case 0xed:P0=duan[1];break;
- case 0xeb:P0=duan[2];break;
- case 0xe7:P0=duan[3];break;
- //判断第二行哪一个按键按下,让P0口输出
- case 0xde:P0=duan[4];break;
- case 0xdd:P0=duan[5];break;
- case 0xdb:P0=duan[6];break;
- case 0xd7:P0=duan[7];break;
- //判断第三行哪一个按键按下,让P0口输出
- case 0xbe:P0=duan[8];break;
- case 0xbd:P0=duan[9];break;
- case 0xbb:P0=0xbb;break;
- case 0xb7:P0=0xb7;break;
- //判断第四行哪一个按键按下,让P0口输出
- case 0x7e:P0=0x7e;break;
- case 0x7d:P0=0x7d;break;
- case 0x7b:P0=0x7b;break;
- case 0x77:P0=0x77;break;
- }
- }
- void main()
- {
- while(1)
- {
- P2=0xef; //对第一行进行扫描,判断是否有按键按下
- if(P2!=0xef){jianzhi();}
复制代码 仿真文件和C源程序下载:
矩阵键盘电路的控制与应用.zip
(196.07 KB, 售价: 3 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|