发 帖  
原厂入驻New

[经验] 【proteus练一练2.16】数码管显示4X4矩阵键盘按

2012-2-16 09:39:34  9243 键盘 数码管
分享
2
欢迎大家积极讨论:

/*  名称:数码管显示 4X4矩阵
键盘按键号
  说明:按下任意键时,数码
管都会显示其键的序号,扫描程
序首先判断按键发生在哪一列,
然后根据所发生的行附加不同的
值,从而得到按键的序号。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//段码
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};
sbit BEEP=P3^7;
//上次按键和当前按键的序号,该矩阵中序号范围 0~15,16表示无按键
uchar Pre_KeyNo=16,KeyNo=16;
//延时
void DelayMS(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}  
//矩阵键盘扫描
void Keys_Scan()
{
uchar Tmp;
P1=0x0f; //高4 位置0,放入 4 行
DelayMS(1);
Tmp=P1^0x0f;//按键后0f变成 0000XXXX,X中一个为 0,3 个仍为 1,通过异或把 3 个1 变为0,唯
一的 0 变为1
switch(Tmp) //判断按键发生于 0~3 列的哪一列
{
  case 1: KeyNo=0;break;
  case 2: KeyNo=1;break;
  case 4: KeyNo=2;break;
  case 8: KeyNo=3;break;
  default:KeyNo=16; //无键按下  
}
  P1=0xf0;   //低 4 位置0,放入 4 列
DelayMS(1);
Tmp=P1>>4^0x0f;//按键后 f0 变成 XXXX0000,X中有 1 个为 0,三个仍为 1;高4 位转移到低 4位并
异或得到改变的值
switch(Tmp) //对0~3 行分别附加起始值 0,4,8,12
{
  case 1: KeyNo+=0;break;
  case 2: KeyNo+=4;break;
  case 4: KeyNo+=8;break;
  case 8: KeyNo+=12;
}
}
//蜂鸣器
void Beep()
{
uchar i;
for(i=0;i<100;i++)
{
  DelayMS(1);
  BEEP=~BEEP;
}
BEEP=0;
}
//主程序
void main()
{
P0=0x00;
BEEP=0;
while(1)
{
  P1=0xf0;
  IF(P1!=0xf0) Keys_Scan();  //获取键序号
  if(Pre_KeyNo!=KeyNo)
  {
   P0=~DSY_CODE[KeyNo];
   Beep();
   Pre_KeyNo=KeyNo;
  }
  DelayMS(100);
}
}
proteus仿真图:
游客,如果您要查看本帖隐藏内容请回复

相关经验

prk-ing 2012-2-16 13:19:18

回复

举报

沉默的人 2012-2-24 08:53:12
好东西,在学习中谢谢大家支持

回复

举报

jhcwwsck 2012-2-24 19:18:54
真墨迹!
回复

举报

CAD一塌糊涂 2012-2-24 21:27:45
这个看看,老师没怎么讲

回复

举报

7293192131 2012-2-27 21:47:59
回复

举报

kdlong1232010 2012-3-8 14:22:45
是非得失法师法师法师法师
回复

举报

kverdou 2012-4-3 16:32:23
学习下.
回复

举报

xuyaosong 2012-4-16 19:27:54
多谢分享
回复

举报

胖嘟嘟 2012-5-7 17:24:23
回复

举报

805448943 2012-6-17 09:46:38
{:1:}{:1:}
回复

举报

805448943 2012-6-17 10:28:32
{:1:}{:1:}
回复

举报

孤星月 2012-6-19 13:45:15
很好。
回复

举报

聆听梦语 2012-7-9 20:31:06
回复

举报

xc742052395 2012-7-10 17:06:11
迫切想学习····
回复

举报

xie402050431 2012-7-13 20:15:39
受教
回复

举报

598897190 2012-7-24 10:49:17
正好想学习一下
回复

举报

Lovedanpianji 2012-7-24 11:00:28
回复

举报

踏过彩虹桥~ 2012-8-3 23:07:00
不错,有用
回复

举报

jiaqingmin 2012-8-4 20:39:32
good++++++
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
12345下一页
发经验
关闭

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

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