真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【51單片機(jī)】獨(dú)立按鍵控制LED燈(四種形式)-創(chuàng)新互聯(lián)

💖 作者簡介:大家好,我是澤奀。🏆全棧領(lǐng)域新星創(chuàng)作者 ?作者周榜:81 ?總排名:6434 👑?

網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都衛(wèi)生間隔斷等企業(yè)提供專業(yè)服務(wù)。

📝 個(gè)人主頁:weixin_52632755的博客_澤奀_博客

🎉 點(diǎn)贊?評(píng)論?收藏 == 養(yǎng)成習(xí)慣😊

📣 系列專欄:【51單片機(jī)】系列_澤奀的博客-博客

💬 總結(jié):希望你看完之后,能對(duì)你有所幫助,不足請(qǐng)指正!共同學(xué)習(xí)交流 🖊

???我們并非登上我們所選擇的舞臺(tái),演出并非我們所選擇的劇本。

目錄

🎃獨(dú)立按鍵介紹?

🏓獨(dú)立按鍵原理圖

🎡獨(dú)立按鍵控制LED燈亮滅

🎉C51數(shù)據(jù)運(yùn)算?

🎉C51基本語句C51數(shù)C51數(shù)據(jù)運(yùn)算C51數(shù)據(jù)運(yùn)算據(jù)運(yùn)算

🎄獨(dú)立按鍵控制LED燈狀態(tài)

🎋按鍵的抖動(dòng)

🏒獨(dú)立按鍵控制LED顯示二進(jìn)制

🥍獨(dú)立按鍵控制LED燈移位


🎃獨(dú)立按鍵介紹?
  • 輕觸按鍵:相當(dāng)于是一種電子開關(guān),按下時(shí)開關(guān)接通,松開時(shí)開關(guān)斷開,實(shí)現(xiàn)原理是通過輕觸按鍵內(nèi)部的金屬彈片受力彈動(dòng)來實(shí)現(xiàn)接通和斷開。
  • 英文:independent press button
  • 了解:獨(dú)立按鍵具有四個(gè)"頭",獨(dú)立按鍵主要有四個(gè)部分:1、底座,2、金屬彈片(這個(gè)金屬彈片是鼓起來的,當(dāng)你按下去的時(shí)候它會(huì)變平,松手的時(shí)候又會(huì)鼓起來的),3、就是按鍵的頭,4、就是金屬的蓋子。那么在相同的兩個(gè)引腳當(dāng)中其實(shí)它就是內(nèi)部連接起來的金屬片,無論你按不按下去,它前后的兩個(gè)引腳都是連接起來的。就是始終都是具有導(dǎo)通性質(zhì)的,向外具有兩個(gè)接觸的點(diǎn)。按下的時(shí)候四個(gè)引腳全部都是連接的,松手的時(shí)候兩邊分別連接,之間是斷開的。
  • 如下圖實(shí)物所示:

🏓獨(dú)立按鍵原理圖

  • 這里總共有四個(gè)獨(dú)立按鍵,它們公共的一段都接到了GND電源的負(fù)極,另一端引出了四個(gè)編號(hào)是連接到單片機(jī)板子中的MCU上面,還有一段是接到了IO口上。如下圖所示:

  • 那我們就知道了單片機(jī)上電的時(shí)候所有的IO口默認(rèn)都是高電平,那么就是當(dāng)是如果按鍵沒有按下的時(shí)候那么這個(gè)IO口保證的就是高電平,按下的話那么這個(gè)IO口就變成低電平了。寄存器會(huì)檢測IO口的電平,然后在讀回來這個(gè)寄存器當(dāng)中。如果按鍵松開"我"因該去讀取這個(gè)寄存器那么它其實(shí)就是一個(gè)高電平默認(rèn)為1的一個(gè)高電平,反之。那么根據(jù)這個(gè)現(xiàn)象我們可以得知我們的獨(dú)立按鍵是不是被按下了。
🎡獨(dú)立按鍵控制LED燈亮滅
#includeint main(void)
{
	while(1)
	{
		if(P3_1==0 || P3_0==0)	//如果K1按鍵或K2按鍵按下
		{
			P2_0=0;		//LED1輸出0,點(diǎn)亮
		}
		else
		{
			P2_0=1;		//LED1輸出1,熄滅
		}
	}
}

注意:獨(dú)立按鍵K1按鍵與K2按鍵按鍵網(wǎng)絡(luò)編號(hào)是相反的,K1=P3_1、K2=P3_0。

🎉C51數(shù)據(jù)運(yùn)算?

算術(shù)運(yùn)算符:加減沒什么好說的,乘法和除法注意一下符號(hào)!以及除法是取整的不是四舍五入按照數(shù)學(xué)的運(yùn)算來的,比方舉個(gè)例子:五除以二,按照數(shù)學(xué)的方式是:2.5,在C語言當(dāng)中是2取最小整數(shù),當(dāng)然這是int數(shù)據(jù)類型當(dāng)中是這個(gè)樣子。也有單精度浮點(diǎn)型(float)和雙精度浮點(diǎn)型(double)它們依舊是等于2.5的。那么取余(%)是什么意思呢?其實(shí)很簡單就是還是以五除以二的話在小學(xué)當(dāng)中是2...1,那么這個(gè)其實(shí)就是5%2=1了。再比方說102/10 = 10...2 那么102%10 = 2,所以除號(hào)與取余就是這個(gè)意思了。賦值就是把右邊得出的值或者說是結(jié)果賦值到你左邊的這個(gè)變量。

判斷運(yùn)算符:這個(gè)沒什么好說的,就是在表達(dá)式的值經(jīng)常有判斷表達(dá)式,如果你的表達(dá)式的值為真,那么就執(zhí)行表達(dá)式里面大括號(hào)(作用域)里面的內(nèi)容。在這里注意下等于的判斷表達(dá)式的符號(hào)。

邏輯運(yùn)算符:假設(shè) a = 1,b = 0;

  • &&?稱為邏輯與運(yùn)算符。如果兩個(gè)操作數(shù)都非零,則條件為真。(A && B) 為假。
  • ||? ?稱為邏輯或運(yùn)算符。如果兩個(gè)操作數(shù)中有任意一個(gè)非零,則條件為真 (A || B) 為真。
  • !? ??稱為邏輯非運(yùn)算符。用來逆轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為真則邏輯非運(yùn)算符將使其為假。!(A && B) 為真。

位運(yùn)算:

  • 按位與操作,按二進(jìn)制位進(jìn)行"與"運(yùn)算。運(yùn)算規(guī)則:0&0=0; 0&1=0; 1&0=0; 1&1=1;
  • 按位或運(yùn)算符,按二進(jìn)制位進(jìn)行"或"運(yùn)算。運(yùn)算規(guī)則:0|0=0; 0|1=1; 1|0=1; 1|1=1;

  • 異或運(yùn)算符,按二進(jìn)制位進(jìn)行"異或"運(yùn)算。運(yùn)算規(guī)則:0^0=0; 0^1=1; 1^0=1; 1^1=0;

  • 取反運(yùn)算符,按二進(jìn)制位進(jìn)行"取反"運(yùn)算。運(yùn)算規(guī)則:~0001 = 1110;

  • <

  • >>二進(jìn)制右移運(yùn)算符。將一個(gè)數(shù)的各二進(jìn)制位全部右移若干位,正數(shù)左補(bǔ)0,負(fù)數(shù)左補(bǔ)1,右邊丟棄。

🎉C51基本語句C51數(shù)C51數(shù)據(jù)運(yùn)算C51數(shù)據(jù)運(yùn)算據(jù)運(yùn)算

這些語句都是單片機(jī)以及變成語言比較重要的語句!像這個(gè)判斷語句if以及switch語句,以及while和for的循環(huán)語句在單片機(jī)中都是很重要的。這些都是必須要掌握的知識(shí)點(diǎn)!大家可以多上手代碼,熟練掌握這些判斷語句和循環(huán)語句。任何復(fù)雜的程序都可以由順序、選擇、循環(huán)來進(jìn)行程序代碼的實(shí)現(xiàn),上面的代碼就是典型的if—else的語句。

🎄獨(dú)立按鍵控制LED燈狀態(tài)
#includevoid Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}
int main(void)
{
	while(1)
	{
		if(P3_1==0)			//如果K1按鍵按下
		{
			Delay(20);		//延時(shí)消抖
			while(P3_1==0);	//松手檢測
			Delay(20);		//延時(shí)消抖
			
			P2_0=~P2_0;		//LED1取反
		}
	}
}
🎋按鍵的抖動(dòng)
  • 對(duì)于機(jī)械開關(guān),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開時(shí)也不會(huì)一下子斷開,所以在開關(guān)閉合及斷開的瞬間會(huì)伴隨一連串的抖動(dòng)。

在按鍵閉合的時(shí)候會(huì)產(chǎn)生一些抖動(dòng),沒有按鍵按下的話它就是一個(gè)高電平(1)(單片機(jī)上電的時(shí)候所有的IO口默認(rèn)都是高電平)。在我們按下按鍵的時(shí)候它就會(huì)變成(0),并且由于它的是機(jī)械觸電會(huì)彈開,然后上下抖動(dòng)幾下,然后才會(huì)穩(wěn)定的變成(0)。抖動(dòng)的時(shí)間上面圖中也表示的是(5~10)ms。當(dāng)抖動(dòng)消失的時(shí)候進(jìn)入了一個(gè)穩(wěn)定的低電平(0),這個(gè)持續(xù)時(shí)間是看你手什么時(shí)候松開這個(gè)按鍵。在松手的時(shí)候也會(huì)產(chǎn)生抖動(dòng),它也不會(huì)突然變成高電平(1),也會(huì)抖動(dòng)產(chǎn)生時(shí)間為(5~10)ms。最后,松手。?

按鍵的消抖有兩種方法:

  1. 加個(gè)線,把這個(gè)線通過這些電路里面進(jìn)行一些觸發(fā)器等等,通過一些電路來進(jìn)行操作,把這個(gè)抖動(dòng)進(jìn)行一些過沖,然后再給我們單片機(jī)進(jìn)行點(diǎn)上。比較麻煩!
  2. 通過軟件來進(jìn)行一個(gè)延遲函數(shù),把這個(gè)消抖進(jìn)行操作!
🏒獨(dú)立按鍵控制LED顯示二進(jìn)制
#includevoid Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}
int main(void)
{
	unsigned char LEDNum = 0;
	while(1)
	{
		if(P3_1==0)			
		{
			Delay(20);		
			while(P3_1==0);
			Delay(20);		
							
			LEDNum++;	
			P2=~LEDNum;      
		}
	}
}
  • 這里用?unsigned char 類型是因?yàn)椋簾o符號(hào)字符型(所占1字節(jié) = 8bit位)剛好對(duì)應(yīng)著8位二進(jìn)制的數(shù)據(jù),那這八位二進(jìn)制的正好這個(gè)P2口和這個(gè)寄存器51單片機(jī)保持一致。
  • 注意:P2口上電之后和單片機(jī)的IO上電一樣都是默認(rèn)的是高電平! 1111 1111
  • LEDNum取反給P2的話,其實(shí)變量取反給P2的值上它是并不會(huì)改變這個(gè)變量的值。它的值還是沒有取反的值。在等號(hào)右邊的話,它并不會(huì)改變LEDNum的值。其實(shí)就是取反當(dāng)中你取反的值是右值就不會(huì)被改變。
🥍獨(dú)立按鍵控制LED燈移位
#includevoid Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}
int main(void)
{
	unsigned char LEDNum = 0;//進(jìn)行初始化
	P2 = 0xFE;			
	while(1)
	{
		if(P3_1 == 0)	//如果當(dāng)獨(dú)立按鍵K1按下的話 —— LED燈移位
		{
			Delay(20);	//按鍵消抖
			while(P3_1 == 0);		//檢測松手
			Delay(20);	//按鍵消抖
			
			LEDNum++;	//自增++	
	  		if(LEDNum>=8)
			{
				LEDNum=0;
			}
			P2 = ~(0x01<
  • P2口當(dāng)中的P一定是要大寫的,標(biāo)識(shí)符一定要嚴(yán)格區(qū)分大小寫!
  • 當(dāng)你在定義一個(gè)局部變量的時(shí)候一定要注意賦值初始值,在全局變量定義的話默認(rèn)為0!
  • 這里的K1和K2是接錯(cuò)了,K1 = P3_1;K2 = P3_0;K3 = P3_2;K4 = P3_3;

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前題目:【51單片機(jī)】獨(dú)立按鍵控制LED燈(四種形式)-創(chuàng)新互聯(lián)
本文來源:http://weahome.cn/article/dgieoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部