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

PIC18F452单片机 矩阵键盘

时间:11-21 来源:互联网 点击:
#include //调用头文件,可以去PICC18软件下去查找PIC18FXX2.H

__CONFIG(1,XT) ; //晶振为外部4M

__CONFIG(2,WDTDIS) ; //看门狗关闭

__CONFIG(4,LVPDIS) ; //禁止低电压编程

#define B7 RB7

#define B6 RB6

#define B5 RB5

#define B4 RB4

#define B3 RB3

#define B2 RB2

#define B1 RB1

#define B0 RB0

#define B PORTB

#define D PORTD

#define E2 RE2

#define E1 RE1

#define E0 RE0

#define C7 RC7

char shuma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delayms(int x)

{

int i,j;

for(i=0;i<=30;i++)

for(j=0;j<=x;j++);

}

int keyscan()

{

B=0x7f;

if(B3==0)

{

delayms(5);

return 16;

}

if(B2==0)

{

delayms(5);

return 12;

}

if(B1==0)

{

delayms(5);

return 8;

}

if(B0==0)

{

delayms(5);

return 4;

}

delayms(5);

B=0xbf;

if(B3==0)

{

delayms(5);

return 15;

}

if(B2==0)

{

delayms(5);

return 11;

}

if(B1==0)

{

delayms(5);

return 7;

}

if(B0==0)

{

delayms(5);

return 3;

}

delayms(5);

B=0xdf;

if(B3==0)

{

delayms(5);

return 14;

}

if(B2==0)

{

delayms(5);

return 10;

}

if(B1==0)

{

delayms(5);

return 6;

}

if(B0==0)

{

delayms(5);

return 2;

}

delayms(5);

B=0xef;

if(B3==0)

{

delayms(5);

return 13;

}

if(B2==0)

{

delayms(5);

return 9;

}

if(B1==0)

{

delayms(5);

return 5;

}

if(B0==0)

{

delayms(5);

return 1;

}

delayms(5);

}

void display(int num)

{

int ge,shi;

ge=num;

shi=num/10;

E2=0;

E1=1;E0=1;

if(shi==0&&ge==0)

D=0x00;

else D=shuma[ge];

delayms(2);

E1=1;E0=0;

if(shi==0)

D=0x00;

else D=shuma[shi];

delayms(2);

D=0x00;

delayms(2);

}

void main(void)

{

int temp,num=0;

ADCON1=0X06; //所有IO均为数字口,模拟量输入禁止

TRISB=0X0f;

TRISD=0x00;

TRISE=0x00;

TRISC=0x00;

while(1)

{

temp=keyscan();

switch(temp)

{

case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:num=temp;C7=1;break;

default:C7=0;break;

}

display(num);

}

}

利用一个I/O口的输入输出变化,有点类似动态扫描,轮流检测每一行是否有按键按下

效果:按下一个键,在数码管上显示该键的数字

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

网站地图

Top