国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【STC15單片機】簡單的矩陣鍵盤代碼

這篇具有很好參考價值的文章主要介紹了【STC15單片機】簡單的矩陣鍵盤代碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

單片機型號說明:IAP15F2K61S2

新建工程時單片機型號選擇STC15F2K60S2


51單片機矩陣鍵盤代碼


void Delay_ms(int xms)	//15單片機延時函數(shù)
{
	int i;
	long a;
	for (i = xms; i > 0; i --)
		for(a = 810; a > 0; a --);
}

unsigned char KeyJZ_16(void)
{
	unsigned char KeyNumber;
	unsigned char temp;
	
	//第一列
	P3 = 0x7F;	//P37 = 0,其他是1,檢測第一列
	temp = P3;	//按鍵檢測,輸入
	temp &= 0x0F;
	if(temp != 0x0F)
	{
		Delay_ms(20);	//延時20ms來確認(rèn)是否真正按下按鍵
		temp = P3;
		temp &= 0x0F;//檢測是第一列哪個按鍵
		if(temp != 0x0F)
		{
			temp = P3;
			switch (temp)
			{
				case 0x7E : KeyNumber = 7; break;
				case 0x7D : KeyNumber = 6; break;
				case 0x7B : KeyNumber = 5; break;
				case 0x77 : KeyNumber = 4; break;
			}
			while(temp != 0x0f)
			{
				temp = P3;
				temp &= 0x0F;	//因為這條,所以松手檢測才寫成 temp != 0x0f
			}
		}
		
	}
	
	//第二列
	P3 = 0xBF;	
	temp = P3;
	temp &= 0x0F;
	if(temp != 0x0F)
	{
		Delay_ms(20);
		temp = P3;
		temp &= 0x0F;
		if(temp != 0x0F)
		{
			temp = P3;
			switch (temp)
			{
				case 0xBE : KeyNumber = 11; break;
				case 0xBD : KeyNumber = 10; break;
				case 0xBB : KeyNumber = 9; break;
				case 0xB7 : KeyNumber = 8; break;
			}
			while(temp != 0x0f)
			{
				temp = P3;
				temp &= 0x0F;	//因為這條,所以松手檢測才寫成 temp != 0x0f
			}
		}	
	}
	
	//第三列
	P3 = 0xDF;	
	temp = P3;
	temp &= 0x0F;
	if(temp != 0x0F)
	{
		Delay_ms(20);
		temp = P3;
		temp &= 0x0F;
		if(temp != 0x0F)
		{
			temp = P3;
			switch (temp)
			{
				case 0xDE : KeyNumber = 15; break;
				case 0xDD : KeyNumber = 14; break;
				case 0xDB : KeyNumber = 13; break;
				case 0xD7 : KeyNumber = 12; break;
			}
			while(temp != 0x0f)
			{
				temp = P3;
				temp &= 0x0F;	//因為這條,所以松手檢測才寫成 temp != 0x0f
			}
		}	
	}	
	
	//第四列
	P3 = 0xEF;	
	temp = P3;
	temp &= 0x0F;
	if(temp != 0x0F)
	{
		Delay_ms(20);
		temp = P3;
		temp &= 0x0F;
		if(temp != 0x0F)
		{
			temp = P3;
			switch (temp)
			{
				case 0xEE : KeyNumber = 19; break;
				case 0xED : KeyNumber = 18; break;
				case 0xEB : KeyNumber = 17; break;
				case 0xE7 : KeyNumber = 16; break;
			}
			while(temp != 0x0f)
			{
				temp = P3;
				temp &= 0x0F;	//因為這條,所以松手檢測才寫成 temp != 0x0f
			}
		}	
	}
	
	return KeyNumber;
}

本程序燒寫到51單片機應(yīng)該是正常使用的,手頭沒有51開發(fā)板了,暫時沒測試

這個程序燒寫到15單片機,前兩列按鍵不能正常使用


只需要在判斷第一列按鍵那部分程序,前面加上P42 = 0;

在判斷第二列按鍵那部分程序,前面加上P44?= 0;

因為這兩列接線是P42和P44

【STC15單片機】簡單的矩陣鍵盤代碼

?

矩陣按鍵部分代碼(新寫法)


void Delay_ms(int xms)	//15單片機延時函數(shù)
{
	int i;
	long a;
	for (i = xms; i > 0; i --)
		for(a = 810; a > 0; a --);
}

unsigned char KeyJZ_16(void)
{
	unsigned char KeyNumber = 0;
	unsigned char temp;
	
	//第一列
	P3 = 0x7F;	//P37 = 0,其他是1,檢測第一列
	P4 = 0xEF;	//P44 = 0; P42 = 1;	//15單片機第一列占用的引腳
	temp = P3;	//按鍵檢測,輸入
	temp &= 0x0F;
	if(temp != 0x0F)
	{
		Delay_ms(20);	//延時20ms來確認(rèn)是否真正按下按鍵
		temp = P3;
		temp &= 0x0F;//檢測是第一列哪個按鍵
		if(temp != 0x0F)
		{
			temp = P3;
			switch (temp)
			{
				case 0x7E : KeyNumber = 7; break;
				case 0x7D : KeyNumber = 6; break;
				case 0x7B : KeyNumber = 5; break;
				case 0x77 : KeyNumber = 4; break;
			}
			while(temp != 0x0f)
			{
				temp = P3;
				temp &= 0x0F;	//因為這條,所以松手檢測才寫成 temp != 0x0f
			}
		}
		
	}
	
	//第二列
	P3 = 0xBF;
	P4 = 0xFB;	//P42 = 0; P44 = 1;	//15單片機第二列占用的引腳	
	temp = P3;
	temp &= 0x0F;
	if(temp != 0x0F)
	{
		Delay_ms(20);
		temp = P3;
		temp &= 0x0F;
		if(temp != 0x0F)
		{
			temp = P3;
			switch (temp)
			{
				case 0xBE : KeyNumber = 11; break;
				case 0xBD : KeyNumber = 10; break;
				case 0xBB : KeyNumber = 9; break;
				case 0xB7 : KeyNumber = 8; break;
			}
			while(temp != 0x0f)
			{
				temp = P3;
				temp &= 0x0F;	//因為這條,所以松手檢測才寫成 temp != 0x0f
			}
		}	
	}
	
	//第三列
	P3 = 0xDF;	
	P4 = 0xFF;
	temp = P3;
	temp &= 0x0F;
	if(temp != 0x0F)
	{
		Delay_ms(20);
		temp = P3;
		temp &= 0x0F;
		if(temp != 0x0F)
		{
			temp = P3;
			switch (temp)
			{
				case 0xDE : KeyNumber = 15; break;
				case 0xDD : KeyNumber = 14; break;
				case 0xDB : KeyNumber = 13; break;
				case 0xD7 : KeyNumber = 12; break;
			}
			while(temp != 0x0f)
			{
				temp = P3;
				temp &= 0x0F;	//因為這條,所以松手檢測才寫成 temp != 0x0f
			}
		}	
	}	
	
	//第四列
	P3 = 0xEF;	
	temp = P3;
	temp &= 0x0F;
	if(temp != 0x0F)
	{
		Delay_ms(20);
		temp = P3;
		temp &= 0x0F;
		if(temp != 0x0F)
		{
			temp = P3;
			switch (temp)
			{
				case 0xEE : KeyNumber = 19; break;
				case 0xED : KeyNumber = 18; break;
				case 0xEB : KeyNumber = 17; break;
				case 0xE7 : KeyNumber = 16; break;
			}
			while(temp != 0x0f)
			{
				temp = P3;
				temp &= 0x0F;	//因為這條,所以松手檢測才寫成 temp != 0x0f
			}
		}	
	}
	
	return KeyNumber;
}

測試鍵盤是否好使

#include <STC15F2K60S2.H>

unsigned char KeyNum;

void main()
{
	P2 = 0xA0; P0 = 0x00; P2 = 0x80; P0 = 0xFF;		//初始化
	while(1)
	{
		KeyNum = KeyJZ_16();
		if(KeyNum != 0)
		{
			P00 = !P00;	//每次按鍵按下P00狀態(tài)都會取反
		}
			
	}
}

一定要加初始化呀,這次忘了,按鍵根本不好使文章來源地址http://www.zghlxwxcb.cn/news/detail-449516.html

到了這里,關(guān)于【STC15單片機】簡單的矩陣鍵盤代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 這才是單片機44矩陣鍵盤控制數(shù)碼管最簡單的寫法

    這才是單片機44矩陣鍵盤控制數(shù)碼管最簡單的寫法

    這才是單片機4*4矩陣鍵盤控制數(shù)碼管最簡單的寫法 ///插播一條:我自己在今年年初錄制了一套還比較系統(tǒng)的入門單片機教程,想要的同學(xué)找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領(lǐng)取哦。最近比較閑,帶做畢設(shè),帶學(xué)生參加省級或以上比賽/

    2023年04月19日
    瀏覽(23)
  • 【STC15單片機】動態(tài)數(shù)碼管

    【STC15單片機】動態(tài)數(shù)碼管

    目錄 點亮一位數(shù)碼管 動態(tài)數(shù)碼管 100s倒計時 動態(tài)數(shù)碼管封裝代碼 段選:選中哪一位數(shù)碼管 位選:選中的數(shù)碼管要顯示的內(nèi)容 這是我對段選位選的理解,就是選中某個位置,賦值字形碼,顯示想要的圖形 如果只想讓第一個數(shù)碼管顯示,就只需要讓com1 = 1即可,其他comx都=0 如

    2024年02月13日
    瀏覽(23)
  • 基于STC15系列單片機的智能門鎖

    基于STC15系列單片機的智能門鎖

    一、項目背景及功能需求 1.1項目背景 智能門鎖是一種智能化、高效、安全的門鎖,它可以實現(xiàn)密碼識別開鎖方式,極大地提高了門鎖的安全性和便利性。隨著人們對安全性的要求越來越高,智能門鎖已經(jīng)成為了現(xiàn)代家庭和企業(yè)的必備設(shè)備。因此,本項目旨在設(shè)計一款基于S

    2024年02月04日
    瀏覽(25)
  • STC15系列單片機學(xué)習(xí)4:串口通訊

    STC15系列單片機學(xué)習(xí)4:串口通訊

    在使用單片機的串口前,得先知道所使用的單片機有幾個串口,再結(jié)合你的硬件電路圖來使用哪個串口。 以下是STC15各系列單片機的串口數(shù)量,STC15W4K32S4系列有4個串口 工作模式0:同步移位寄存器(官方建議初學(xué)者不學(xué)) 工作模式1:8位串口,波特率可變 工作模式2:9位串口

    2024年04月13日
    瀏覽(28)
  • STC15系列單片機學(xué)習(xí)6:外部中斷

    STC15系列單片機學(xué)習(xí)6:外部中斷

    外部中斷,就是通過單片機IO引腳電平的變化觸發(fā)的中斷。 STC15系列單片機的外部中斷源一共有5個,分別是外部中斷0(INT0)、外部中斷1(INT1)、外部中斷2(INT2)、外部中斷3(INT3)、外部中斷4(INT4);當(dāng)然不是所有的STC15系列單片機都有著5個外部中斷。 中斷源 觸發(fā)行為

    2024年03月12日
    瀏覽(78)
  • C51單片機-按下K0至K15,顯示按鍵標(biāo)號(4x4矩陣鍵盤電路,1個數(shù)碼管)
  • 二、51單片機 使用Proteus仿真掌握矩陣鍵盤(仿真及代碼)

    二、51單片機 使用Proteus仿真掌握矩陣鍵盤(仿真及代碼)

    學(xué)習(xí)內(nèi)容:通過proteus實現(xiàn)對51單片機矩陣的掌握 1 、鍵盤接口設(shè)計。鍵盤——向單片機輸入數(shù)據(jù)、命令等功能,是人機對話的主要手段。由若干按鍵按照一定規(guī)則組成。每一個按鍵實質(zhì)上是一個按鍵開關(guān),按構(gòu)造可分為有觸點開關(guān)按鍵和無觸點按鍵。有觸點開關(guān)按鍵常見的有

    2024年02月11日
    瀏覽(23)
  • STC15F100E單片機模擬串口

    STC15F100E單片機模擬串口

    STC15F100系列單片機是宏晶科技生產(chǎn)的單時鐘/機器周期(1T)的單片機,新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但是速度快6-12倍。 內(nèi)部集成R/C時鐘,5MHz~35MHz寬范圍可設(shè)置,可以省掉外部晶振。 內(nèi)部集成復(fù)位電路,可省掉外部復(fù)位電路。 6個通用I/O口,支持四種模式:準(zhǔn)雙

    2024年02月20日
    瀏覽(24)
  • STC15W104 8腳單片機串口下載程序

    STC15W104 8腳單片機串口下載程序

    單片機串口下載是一種常見的單片機程序下載方式,它通過串口線連接單片機的串口引腳和電腦的串口接口實現(xiàn)。下面是單片機串口下載的基本原理和操作方法: 確定下載模式:大多數(shù)單片機芯片都支持串口下載模式,需要在程序中設(shè)置下載模式。 連接串口:使用串口線連

    2024年02月13日
    瀏覽(24)
  • 微機課設(shè) | 基于STC15單片機的簡易數(shù)字密碼鎖設(shè)計

    微機課設(shè) | 基于STC15單片機的簡易數(shù)字密碼鎖設(shè)計

    在日常的生活和工作中,住宅與部門的安全防范、單位的文件檔案、財務(wù)報表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機械式鑰匙開鎖,人們常需攜帶多把鑰匙,?使用極不方便,?且鑰匙丟失后安全性即大打折扣。在安全技術(shù)防范領(lǐng)域,具有防盜報警功能的

    2024年02月04日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包