時間: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.做實驗要獨立完成.
八、對實驗課的建議
做實驗應多給學生時間自主練習,讓同學們對於實驗有更深刻的理解,從實踐中找出問題,解決問題.
以上就是怎麽進行單片機鍵盤接口實驗,進行單片機鍵盤接口實驗的方法教程,希望本文中能幫您解決問題。