係統粉 > 係統教程 > 電腦軟件教程

怎麽進行單片機鍵盤接口實驗,進行單片機鍵盤接口實驗的方法

發布時間:2017-07-04 14:41:24    瀏覽數:

今天給大家帶來怎麽進行單片機鍵盤接口實驗,進行單片機鍵盤接口實驗的方法,讓您輕鬆解決問題。

實驗六鍵盤接口實驗

一、實驗目的

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.做實驗要獨立完成.

八、對實驗課的建議

做實驗應多給學生時間自主練習,讓同學們對於實驗有更深刻的理解,從實踐中找出問題,解決問題.

以上就是怎麽進行單片機鍵盤接口實驗,進行單片機鍵盤接口實驗的方法教程,希望本文中能幫您解決問題。

上一篇:如何在vs2010使用快捷鍵格式化代碼,在vs2010使用快捷鍵格式化代碼的方法 下一篇:怎麽改變Windows係統語言,改變Windows係統語言的方法

電腦軟件相關教程