8051单片机串行口扩展矩阵键盘接口与应用

来源:本站
导读:目前正在解读《8051单片机串行口扩展矩阵键盘接口与应用》的相关信息,《8051单片机串行口扩展矩阵键盘接口与应用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《8051单片机串行口扩展矩阵键盘接口与应用》的详细说明。
简介:本文主要为8051单片机串行口扩展矩阵键盘接口与应用,下面一起来学习一下:

由于8051的串行口在方式0工作状态下,可以方便地通过移位寄存器74LS164扩展并行输出口。因此,可以将这些并行口线作为列线,与P3口的行线构成行列式键盘。每占用一条P3口线可增加8个按键,用户根据需要可增减。

在8051的串行口方式0工作状态下,结合P3.4和P3.5实现2*8键盘。如图所示。

8051单片机串行口扩展矩阵键盘接口与应用

C51软件设计:

#include<stdio.h> //预处理

#include<reg51.h>

#include<intrins.h>

unsigned char getkey(void); //键盘扫描函数

void proc1(void); //定义按键处理程序1

void proc2(void); //定义按键处理程序2

void proc3(void); //定义按键处理程序3

void proc4(void); //定义按键处理程序4

……

bit0=P3.4;

bit1=P3.5;

void delay(void); //定义延时函数

void main(void) //主函数

{

unsigned char idata key;

SCON=0x00; //串口初始化

ES=0;

EA=0; //关闭中断

while(1)

{

key=getkey();

if(key!=0xff)

switch (key)

{

case 0x00:

proc0();

braek;

case 0x01:

proc1();

braek;

case 0x02:

proc2();

braek;

case 0x03:

proc3();

braek;

……

……

……

default:

break;

}

}

}

unsigned char getkey(void) //键盘扫描函数

{

unsigned char idata key_code,col=0; mask=0x00;

TI=0;

SBUF=mask;

while(TI==0);

if((bit0&bit1)!= 0)

return(0xff);

delay();

if((bit0&bit1)!= 0)

return(0xff);

mask=0xfe;

while(col!=8)

{

TI=0;

SBUF=mask;

while(TI==0);

if((bit0&bit1)!= 0)

{

mask=mask<<1;

mask=mask|0x01;

col=col+1;

continue;

}

else break;

}

if(col==8)

return(0xff);

if(bit0==1) key_code=col;

else key_code=8+col;

while(bit0&bit1==0);

return(key_code);

}

void delay(void) /*延时10毫秒*/

{

unsigned int i=10;

while(i--);

}

提醒:《8051单片机串行口扩展矩阵键盘接口与应用》最后刷新时间 2024-03-14 00:53:28,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《8051单片机串行口扩展矩阵键盘接口与应用》该内容的真实性请自行鉴别。