欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MCU-51:獨立按鍵控制LED燈的動作-創(chuàng)新互聯(lián)

目錄
  • 一、獨立按鍵
  • 二、獨立按鍵控制LED亮滅
  • 二、消除按鍵抖動
    • 2.1 按鍵的抖動
    • 2.2 控制LED燈狀態(tài)-消除按鍵抖動
    • 三、獨立按鍵控制LED顯示二進制
  • 四、獨立按鍵控制LED燈移位

創(chuàng)新互聯(lián)專注于莒南企業(yè)網(wǎng)站建設,響應式網(wǎng)站設計,商城系統(tǒng)網(wǎng)站開發(fā)。莒南網(wǎng)站建設公司,為莒南等地區(qū)提供建站服務。全流程按需網(wǎng)站策劃,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務一、獨立按鍵

輕觸按鍵:相當于是一種電子開關,按下時開關接通,松開時開關斷開,實現(xiàn)原理是通過輕觸按鍵內部的金屬彈片受力彈動來實現(xiàn)接通和斷開
在這里插入圖片描述
獨立按鍵原理圖
在這里插入圖片描述
這里總共有四個獨立按鍵,它們公共的一段都接到了GND電源的負極,另一端引出了四個編號是連接到單片機板子中的MCU上面,還有一段是接到了IO口上。
那我們就知道了單片機上電的時候所有的IO口默認都是高電平,那么就是當是如果按鍵沒有按下的時候那么這個IO口保證的就是高電平,按下的話那么這個IO口就變成低電平了。寄存器會檢測IO口的電平,然后在讀回來這個寄存器當中。如果按鍵松開去讀取這個寄存器那么它其實就是一個高電平默認為1的一個高電平,反之。那么根據(jù)這個現(xiàn)象我們可以得知我們的獨立按鍵是不是被按下了。

二、獨立按鍵控制LED亮滅

通過查詢原理圖得知:K1=P3_1,則代碼如下

#includesbit led1=P2^0;
sbit key1=P3^1;
void main()
{while(1)
	{if(key1==0)
		{	led1=0;
		}
		else
		{	led1=1;
		}
	}
}

如果通過獨立1鍵或獨立2鍵都能控制亮滅該怎么寫,這里就用到C語言的邏輯符號
回顧一下
在這里插入圖片描述
在這里插入圖片描述
那么代碼應該如下

#includesbit led1=P2^0;
sbit key1=P3^1;
sbit key2=P3^0;
void main()
{while(1)
	{if(key1==0||key2==0)
		{	led1=0;
		}
		else
		{	led1=1;
		}
	}
}
二、消除按鍵抖動 2.1 按鍵的抖動

對于機械開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開,所以在開關閉合及斷開的瞬間會伴隨一連串的抖動
在這里插入圖片描述
在按鍵閉合的時候會產(chǎn)生一些抖動,沒有按鍵按下的話它就是一個高電平(1)(單片機上電的時候所有的IO口默認都是高電平)。在我們按下按鍵的時候它就會變成(0),并且由于它的是機械觸電會彈開,然后上下抖動幾下,然后才會穩(wěn)定的變成(0)。抖動的時間上面圖中也表示的是(510)ms。當抖動消失的時候進入了一個穩(wěn)定的低電平(0),這個持續(xù)時間是看你手什么時候松開這個按鍵。在松手的時候也會產(chǎn)生抖動,它也不會突然變成高電平(1),也會抖動產(chǎn)生時間為(510)ms。最后,松手。

按鍵的消抖有兩種方法:
加個線,把這個線通過這些電路里面進行一些觸發(fā)器等等,通過一些電路來進行操作,把這個抖動進行一些過沖,然后再給我們單片機進行點上。比較麻煩!
通過軟件來進行一個延遲函數(shù),把這個消抖進行操作!

2.2 控制LED燈狀態(tài)-消除按鍵抖動

根據(jù)上面的敘述轉換成代碼

#includesbit led1=P2^0;
sbit key1=P3^1;
void delay(int i)
{while(i--);
}
void main()
{while(1)
	{if(key1==0)
		{	delay(20);
			while(key1==0);
			delay(20);
			led1=~led1;
		}
	}
}
三、獨立按鍵控制LED顯示二進制

直接上代碼

#includesbit key1=P3^1;
void Delay(int i)
{while(i--);
}
int main(void)
{unsigned char LEDNum = 0;
	while(1)
	{if(key1==0)			
		{	Delay(20);		
			while(key1==0);
			Delay(20);		
							
			LEDNum++;	
			P2=~LEDNum;      
		}
	}
}

這里用 unsigned char 類型是因為:無符號字符型(所占1字節(jié) = 8bit位)剛好對應著8位二進制的數(shù)據(jù),那這八位二進制的正好這個P2口和這個寄存器51單片機保持一致。

注意:P2口上電之后和單片機的IO上電一樣都是默認的是高電平! 1111 1111

LEDNum取反給P2的話,其實變量取反給P2的值上它是并不會改變這個變量的值。它的值還是沒有取反的值。在等號右邊的話,它并不會改變LEDNum的值。其實就是取反當中你取反的值是右值就不會被改變。

四、獨立按鍵控制LED燈移位
#includesbit key1=P3^1;
sbit key2=P3^0;
void Delay(int i)
{while(i--);
}
int main(void)
{unsigned char LEDNum = 0;
	P2=0xFE;
	while(1)
	{if(key1==0)			
		{	Delay(20);		
			while(key1==0);
			Delay(20);		
							
			LEDNum++;	
			if(LEDNum>=8)
			{		LEDNum=0;
			}
			P2=~(0x01<	Delay(20);		
			while(key2==0);
			Delay(20);		
							
			LEDNum--;	
			if(LEDNum==0)
			{		LEDNum=7;
			}
			P2=~(0x01<

P2口當中的P一定是要大寫的,標識符一定要嚴格區(qū)分大小寫!
當你在定義一個局部變量的時候一定要注意賦值初始值,在全局變量定義的話默認為0!

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

當前標題:MCU-51:獨立按鍵控制LED燈的動作-創(chuàng)新互聯(lián)
文章路徑:http://www.chinadenli.net/article46/dhejeg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)網(wǎng)站導航外貿網(wǎng)站建設品牌網(wǎng)站設計微信小程序網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)