单片机矩阵键盘按键C语言程序.doc

上传人:b****2 文档编号:1642740 上传时间:2022-10-23 格式:DOC 页数:2 大小:28KB
下载 相关 举报
单片机矩阵键盘按键C语言程序.doc_第1页
第1页 / 共2页
单片机矩阵键盘按键C语言程序.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机矩阵键盘按键C语言程序.doc

《单片机矩阵键盘按键C语言程序.doc》由会员分享,可在线阅读,更多相关《单片机矩阵键盘按键C语言程序.doc(2页珍藏版)》请在冰豆网上搜索。

单片机矩阵键盘按键C语言程序.doc

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharsmg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

ucharsmg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78};

//有一篇74HC573必须为高电平

//*************************8

//12M频率下大约50US延时

//**************************

voiddelay_50us(uintt)

{

ucharj;

for(;t>0;t--)

for(j=19;j>0;j--);

}

voiddelay_50ms(uintt)

{

ucharj;

for(;t>0;t--)

for(j=6245;j>0;j--);

}

/*这个程序可以不用松手检测,因为我们程序首选判断键是否按下

然后发现按下后我们延时5MS,然后再检测。

确实是按下啦。

我们再执行

在第二个循环假如我们继续检测,那么消耗时间10MS这个短时间中

我们的按键已经松手啦。

不会在执行后面的。

*/

voidmain()

{

ucharkey_l,key_h;

ucharkey;

while

(1)

{

P3=0xf0; //首先给P3口赋值

key_l=P3;//从p3口读一个数据到key_l

key_l=key_l&0xf0;

if(key_l!

=0xf0)//如果不等于的话,说明有按键按下去

{

delay_50us(100);//稍微延时一下

if(key_l!

=0xf0)

{

key_l=P3&0xf0;//11100000再读一次P3的值然后和0xf0相与

key_l=key_l|0x0f; //11101111

P3=key_l;//在把key_l的值送给P3口

//此时P3口的值为11101111,而正在此时我们把键按下啦因此按下的键为11101110与11101111

//相与还是11101110;

key_h=P3;//再读一次P3口,键还是按下,可以得到行的值。

key_h=key_h&0x0f;//00001110

key_l=key_l&0xf0;//11100000

key=key_l+key_h; //11101110

}

}

switch(key)

{

case0xee:

P1=smg_du[0];break;

case0xde:

P1=smg_du[1];break;

case0xbe:

P1=smg_du[2];break;

case0x7e:

P1=smg_du[3];break;

case0xed:

P1=smg_du[4];break;

case0xdd:

P1=smg_du[5];break;

case0xbd:

P1=smg_du[6];break;

case0x7d:

P1=smg_du[7];break;

case0xeb:

P1=smg_du[8];break;

case0xdb:

P1=smg_du[9];break;

case0xbb:

P1=smg_du[10];break;

case0x7b:

P1=smg_du[11];break;

case0xe7:

P1=smg_du[12];break;

case0xd7:

P1=smg_du[13];break;

case0xb7:

P1=smg_du[14];break;

case0x77:

P1=smg_du[15];break;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1