当前位置:系统粉 >  系统教程 > 电脑软件教程 >  怎麽进行单片机键盘接口实验,进行单片机键盘接口实验的方法

怎麽进行单片机键盘接口实验,进行单片机键盘接口实验的方法

时间:2017-07-04 来源:互联网 浏览量:

今天给大家带来怎麽进行单片机键盘接口实验,进行单片机键盘接口实验的方法,让您轻松解决问题。

实验六键盘接口实验

一、实验目的

1.掌握keilC51软件与PROTEUS软件联合仿真调试的方法;

2.掌握单片机的键盘接口电路;

3.掌握单片机键盘扫描原理

4.掌握单片机的去抖原理及处理办法

二、实验仪器与设备

1.微机1台  2. keilC51集成开发环境   3.Proteus仿真软件

三、实验内容

1、用PROTEUS设计一矩阵键盘接口电路。要求利用P1接口接一4*4矩阵键盘。串行口通过一74LS164接一共阴极数码管。

2.用线反转法和行扫描法分别编写矩阵键盘识别程序,并将按键的键值0~F通过串行口输出,显示在数码管上。

3.将P1口矩阵键盘改为8个独立按键,重新编写识别和显示程序。

四、实验原理及步骤

1.用PROTEUS设计键盘接口电路;

2.在KEIL C51中编写键盘识别程序,编译通过后,与PROTEUS联合调试;

3.按动任意键观察键值是否能正确显示。

五、电路设计及调试

(1)实验电路

(2)程序设计与调试

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar code  temble[]={0xfc, 0x60,0xda, 0xf2, 0x66, 0xb6, 0xbe, 0xe0, 0xfe, 0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};

sbit  BEEP=P3^6;

uchar Pre_KeyNo=16,KeyNo=16;

void delay(uint z)

{

     uchar t;

     while(z--)for(t=0;t<120;t++);

}

void Keys_Scan()

{

uchar Tmp;

P1=0x0f;

delay(1);

Tmp=P1^0x0f;

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;

switch(Tmp)

{

   case 1: KeyNo+=0;break;

   case 2: KeyNo+=4;break;

   case 4: KeyNo+=8;break;

   case 8: KeyNo+=12;

}

}

void Beep()

{

   uchar i;

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

    {

      delay(1);

      BEEP=~BEEP;

   }

    BEEP=0;

}

void Send_data(uchar c)

{

     SBUF=c;

     while(TI==0);

     TI=0;

}

void main()

{

   BEEP=0;

   SCON=0x00;

   TI=1;

   while(1)

   {

        P1=0xf0;

        if(P1!=0xf0) Keys_Scan();

        if(Pre_KeyNo!=KeyNo)

        {

           Send_data(temble[KeyNo]);

            Beep();

           Pre_KeyNo=KeyNo;

         }

         delay(100);

    }

}

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchar code    number[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchar code  temble[]={0xfc, 0x60,0xda, 0xf2, 0x66, 0xb6, 0xbe, 0xe0, 0xfe, 0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};

sbit  BEEP=P3^6;

void delay(uint z)

{

     uchar t;

     while(z--)for(t=0;t<100;t++);

}

void Beep()

{

   uchar i;

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

    {

      delay(1);

      BEEP=~BEEP;

   }

    BEEP=0;

}

void Send_data(uchar c)

{

     SBUF=c;

     while(TI==0);

     TI=0;

}

void main()

{

   uchar temp,i,num,Key;

   BEEP=0;

   SCON=0x00;

   TI=1;

   while(1)

   {

     P1=0x00;

        if(P1!=0x00)

        {

          delay(500);

          if(P1!=0x00)

          {

          temp=P1;

              P1=0xff;

              Key=temp|P1;

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

                if(Key==number[i])

                {

                  Beep();

                     num=i;

                     break;

             }

               Send_data(temble[num]);

            delay(100);

          }

        }

    }

}

(3)实验中遇到的问题:

1.编写的程序不能延迟,延迟时间过短,将时间调整后即可

2.延迟函数要放于适当位置

六、实验说明

1.矩阵键盘识别一般包裹以下内容:

(1)判断有无键按下

(2)键盘扫描取得闭合键的行、列号

(3)用计算法或者查表法取得键值

(4)判断闭合键是否释放,如果没有释放则继续等待

(5)间将闭合键键值保存,同时转去执行该闭合键的功能。

七、实验总结

1.掌握了proteus基本的操作方法.

2.做实验时要仔细,要按步骤来,,避免人为错误。

3.做实验要独立完成.

八、对实验课的建议

做实验应多给学生时间自主练习,让同学们对于实验有更深刻的理解,从实践中找出问题,解决问题.

以上就是怎麽进行单片机键盘接口实验,进行单片机键盘接口实验的方法教程,希望本文中能帮您解决问题。

我要分享:
版权信息

Copyright @ 2011 系统粉 版权声明 最新发布内容 网站导航