微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 矩阵键盘实验程序

矩阵键盘实验程序

时间:12-02 来源:互联网 点击:
试验效果如下:



#include

#define duan P0//段选

#define wei P2//位选

unsigned char code wei1[8] = {

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制 查表的方法控制

unsigned char code duan1[17] = {

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码

unsigned char ge;

unsigned int temp;

void keys(); //键盘扫描函数

void s(unsigned char xms); //延时函数

void DigDisplay(); //动态显示函数

void main(void)

{

while(1)

{

DigDisplay();

keys();

}

}

void DigDisplay()

{

unsigned char i;

unsigned int j;

wei = wei1[i]; //发送位选

duan = duan1[ge]; //发送段码

j = 10; //扫描间隔时间设定

while(j--);

duan = 0x00; //消隐

}

void s(unsigned char xms)

{

unsigned char x,y;

for(x=xms;x>0;x--)

for(y=110;y>0;y--);

}

void keys()

{

P1=0x7f;

temp=P1;

if(temp!=0x7f)

{

s(5);

temp=P1;

if(temp!=0x7f)

{

temp=temp&0x0f;

switch(temp)

{

case 0x07:ge=0;break;

case 0x0b:ge=1;break;

case 0x0d:ge=2;break;

case 0x0e:ge=3;break;

}

while(temp!=0x0f)

{

temp=P1;

temp=temp&0x0f;

DigDisplay();

}

}

}

P1=0xbf;

temp=P1;

if(temp!=0xbf)

{

s(5);

temp=P1;

if(temp!=0xbf)

{

temp=temp&0x0f;

switch(temp)

{

case 0x07:ge=4;break;

case 0x0b:ge=5;break;

case 0x0d:ge=6;break;

case 0x0e:ge=7;break;

}

while(temp!=0x0f)

{

temp=P1;

temp=temp&0x0f;

DigDisplay();

}

}

}

P1=0xdf;

temp=P1;

if(temp!=0xdf)

{

s(5);

temp=P1;

if(temp!=0xdf)

{

temp=temp&0x0f;

switch(temp)

{

case 0x07:ge=8;break;

case 0x0b:ge=9;break;

case 0x0d:ge=10;break;

case 0x0e:ge=11;break;

}

while(temp!=0x0f)

{

temp=P1;

temp=temp&0x0f;

DigDisplay();

}

}

}

P1=0xef;

temp=P1;

if(temp!=0xef)

{

s(5);

temp=P1;

if(temp!=0xef)

{

temp=temp&0x0f;

switch(temp)

{

case 0x07:ge=12;break;

case 0x0b:ge=13;break;

case 0x0d:ge=14;break;

case 0x0e:ge=15;break;

}

while(temp!=0x0f)

{

temp=P1;

temp=temp&0x0f;

DigDisplay();

}

}

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top