日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]/* 名稱:數(shù)碼管顯示 4X4 矩陣鍵盤按鍵號說明:按下任意鍵時(shí),數(shù)碼管都會顯示其鍵的序號,掃描程序首先判斷按鍵發(fā)生在哪一列,然后根據(jù)所發(fā)生的行附加不同的值,從而得到按鍵的序號。*/#include<reg51.h>#define uc

/*  名稱:數(shù)碼管顯示 4X4 矩陣

鍵盤按鍵號

說明:按下任意鍵時(shí),數(shù)碼

管都會顯示其鍵的序號,掃描程

序首先判斷按鍵發(fā)生在哪一列,

然后根據(jù)所發(fā)生的行附加不同的

值,從而得到按鍵的序號。

*/

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

//段碼

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 

0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};

sbit BEEP=P3^7;

//上次按鍵和當(dāng)前按鍵的序號,該矩陣中序號范圍 0~15,16 表示無按鍵

uchar Pre_KeyNo=16,KeyNo=16;

//延時(shí)

void DelayMS(uint x)

{

uchar i;

while(x--) for(i=0;i<120;i++);

}

//矩陣鍵盤掃描

void Keys_Scan()

{

uchar Tmp;

P1=0x0f; //高 位置 0,放入 

DelayMS(1);

Tmp=P1^0x0f;//按鍵后 0f 變成 0000XXXX中一個為 0,個仍為 1,通過異或把 個 變?yōu)?nbsp;0,唯

一的 變?yōu)?nbsp;1

switch(Tmp) //判斷按鍵發(fā)生于 0~3 列的哪一列

{

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;   //低 位置 0,放入 

DelayMS(1);

Tmp=P1>>4^0x0f;//按鍵后 f0 變成 XXXX0000中有 個為 0,三個仍為 1;高 位轉(zhuǎn)移到低 位并

異或得到改變的值

switch(Tmp) //對 0~3 行分別附加起始值 04,812

{

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++)

{

DelayMS(1); 

BEEP=~BEEP;

}

BEEP=0;

}

 

//主程序

void main()

{

P0=0x00;

BEEP=0;

while(1)

{

P1=0xf0;

if(P1!=0xf0) Keys_Scan(); //獲取鍵序號

if(Pre_KeyNo!=KeyNo)

P0=~DSY_CODE[KeyNo];

Beep(); 

Pre_KeyNo=KeyNo;

DelayMS(100);

}

}

 

擴(kuò)展閱讀:4X4矩陣鍵盤控制條形LED 顯示程序

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉