键盘接口实验

键盘接口实验
键盘接口实验

键盘接口实验

一、实验目的

1、熟悉单片机通过行列键盘的接口方法。

2、掌握键盘扫描及处理程序的编程方法和调试方式。

二、实验内容

编程实现按下数字键盘,在数码管上能显示相应数字。

三、实验步骤

1、在Keil C51软件的操作环境,编辑源程序并对源文件进编译。

2、进入protues系统,画出实验电路图。

3、对protues系统和KEILc51系统进行联机设置。

(1)采用单步,设置断点等方法,观察程序走向是否正确。

(2)连续运行程序,依次按动数字键观察LED的显示是否相符。

四、实验:

4.1、电路图:

4.2、电路仿真图:

4.3、参考程序如下(C语言):

#include

typedef unsigned char uint8;

typedef unsigned int uint16;

#define BUZZER() P3 ^= 0x01

code uint8 LED_CODE[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

void delay(uint16 x)

{

uint16 i,j;

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

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

}

uint8 Pre_KeyNO = 16,KeyNO = 16;

void Keys_Scan()

{

uint8 Tmp;

P1 = 0x0f;

delay(1);

Tmp = P1 ^ 0x0f;//高4位输出,低4位输入

switch(Tmp)

{

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;

delay(1);

Tmp = P1 >> 4 ^ 0x0f;//高4位输入,低4位输出switch(Tmp)

{

case 1: KeyNO += 0; break;

case 2: KeyNO += 4; break;

case 4: KeyNO += 8; break;

case 8: KeyNO += 12;

}

}

void Beep()

{

uint8 i;

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

{

delay(1);BUZZER();

}

}

void main()

{

P0 = 0x00;

while(1)

{

P1 = 0xf0;

if(P1 != 0xf0)

Keys_Scan();

if(Pre_KeyNO != KeyNO)

{

P0 = LED_CODE[KeyNO];

Beep();

Pre_KeyNO = KeyNO;

}

delay(10);

}

}

相关主题
相关文档
最新文档