无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

51單片機(jī)100例實(shí)例之17例

2021-02-01 15:12 作者:技術(shù)流阿宅  | 我要投稿

//項(xiàng)目名稱:數(shù)碼管顯示矩陣鍵盤按鍵值

//項(xiàng)目再創(chuàng)作者:科技小宅神

//完成時(shí)間:2021/01/21


proteus仿真圖


#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

//定義蜂鳴器接口位置

sbit BEEP = P3^0;

//七段數(shù)碼管數(shù)組:1~16-0

uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};

//上次按鍵號(hào)和當(dāng)前按鍵序號(hào),在矩陣鍵盤中,序號(hào)范圍為0~15,16則為無(wú)按鍵

uchar Pre_KeyNO = 16,KeyNO = 16;


//延時(shí)子程序

void DelayMS(uint ms)

{

? uchar t;

while(ms--)

{

for(t=0;t<120;t++);

}

}

//矩陣鍵盤掃描子程序

void Keys_Scan()

{

? uchar Tmp;

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

DelayMS(1);

Tmp = P1 ^ 0x0f;//按鍵按下后0x0f變成0000 xxxx,

?//x中有1個(gè)為0,其他任為1,通過(guò)異或把3個(gè)1變成0,唯一的0變成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;//無(wú)按鍵按下

}

P1 = 0xf0;//低4位置0,放入4列

DelayMS(1);

Tmp = P1 >> 4 ^ 0x0f;//按鍵按下后0x0f變成 xxxx 0000,

?//x中有1個(gè)為0,其他任為1,通過(guò)右移,高4位轉(zhuǎn)移到低4位,

?//并異或把3個(gè)1變成0,唯一的0變成1

? ? ? ? ? ? ? ? ??

switch(Tmp)//對(duì)0~3行分別附加起始值0,4,8,12

{

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;//給低電平,恢復(fù)不響工作狀態(tài)

}

//主程序

void main()

{

? P0 = 0x00;//初始化

while(1)//死循環(huán)

{

P1 = 0xf0;//初始化

if(P1 != 0xf0)//當(dāng)有按下按鍵,則進(jìn)行矩陣鍵盤掃描子程序(獲得按鍵序號(hào))

? ?Keys_Scan();

if(Pre_KeyNO != KeyNO)//上次按鍵號(hào)和當(dāng)前按鍵序號(hào)不一致時(shí),

{

P0 = ~DSY_CODE[KeyNO];//通過(guò)按鍵值,在數(shù)組中取得相應(yīng)的值,并從P0口輸出

Beep();

Pre_KeyNO = KeyNO;//上次按鍵序號(hào)=當(dāng)前按鍵序號(hào)

}

DelayMS(100);

}

}


51單片機(jī)100例實(shí)例之17例的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
海盐县| 富川| 额敏县| 安溪县| 张掖市| 察雅县| 藁城市| 黔西县| 德阳市| 乐东| 双柏县| 什邡市| 鄂托克旗| 兴城市| 卢龙县| 乐都县| 万州区| 山东省| 西乌珠穆沁旗| 乾安县| 浑源县| 景洪市| 商河县| 越西县| 宁化县| 高尔夫| 齐河县| 乌兰浩特市| 河曲县| 甘孜县| 黑山县| 临桂县| 云龙县| 杭锦旗| 紫金县| 海宁市| 钟山县| 海盐县| 闸北区| 咸宁市| 凌源市|