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

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

單片機(jī)中按鍵的使用-創(chuàng)新互聯(lián)

在鹿寨等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,外貿(mào)網(wǎng)站建設(shè),鹿寨網(wǎng)站建設(shè)費(fèi)用合理。

上圖為15單片機(jī)矩陣按鍵原理圖;

獨(dú)立按鍵按鍵必須使得J5中2和3兩個(gè)短接;那么如何判斷按鍵按下的的值呢?

原理:

獨(dú)立按鍵:

使得J5中2與3短接則可以觀察原理圖

可以根據(jù)紅色標(biāo)記發(fā)現(xiàn)2與3短接后只能使用S7,S6,S5,S4四個(gè)獨(dú)立按鍵且這四個(gè)獨(dú)立按鍵的一個(gè)端腳是接地的則一定為低電平“0”。那么我們就只能通過P30,P31,P32,P33四個(gè)引腳的高低電平。那么什么是引腳初始化,我們先得讓這四個(gè)引腳全部賦予高電平“1”,當(dāng)按下按鍵的一瞬間這四個(gè)中的某個(gè)引腳將會(huì)通地,從而獲得低電平“0”,則我們就可以通過這四個(gè)引腳的哪個(gè)引腳變?yōu)榈碗娖綇亩袛喟存I值。

void Delay25ms()		//@12.000MHz //15單片機(jī)延遲函數(shù)(功能按鍵消抖)
{
	unsigned char i, j;

	i = 49;
	j = 160;
	do
	{
		while (--j);
	} while (--i);
}
void anjian_init()//按鍵初始化
{
    P3=0xFF//可以直接使得P30=1,P31=1,P32=1,P33=1,此時(shí)應(yīng)當(dāng)確保其他P3口不會(huì)受影響
}
unsigned char KeyNumber()//按鍵判斷
{
    unsigned char K;
    anjian_init();
    if(P30==0){Delay25ms();while(P30==0);Delay25ms();K=7;}
	if(P31==0){Delay25ms();while(P31==0);Delay25ms();K=6;}
	if(P32==0){Delay25ms();while(P32==0);Delay25ms();K=5;}
	if(P33==0){Delay25ms();while(P33==0);Delay25ms();K=4;}
    return K;
}
void main()
{
    unsigned char K;
    while(1)
    {
        K=keyNumber();//不斷檢測(cè)按鍵值
    }
    
}

if(P30==0){Delay25ms();while(P30==0);Delay25ms();K=7;}判斷當(dāng)P30為0時(shí),開始消抖,當(dāng)松下按下的手時(shí)消抖后給K賦值從而判斷為按鍵7被按下;

消抖:

理想狀態(tài)下按鍵時(shí)序圖為:

你得知道現(xiàn)實(shí)一般非常殘酷,看看現(xiàn)實(shí)吧:

如果不用消抖延遲會(huì)出現(xiàn)按鍵識(shí)別出誤電壓不穩(wěn)定;消抖函數(shù)一般比10ms大就行不過一般不要太大30ms以內(nèi)為好;

矩陣按鍵:

矩陣按鍵就必須使得J5中2和1兩個(gè)短接;

根據(jù)獨(dú)立按鍵的規(guī)則我們一般使得按鍵一端為0然后通過另一端檢測(cè);這一次我們將下面紅色標(biāo)記內(nèi)得引腳逐個(gè)賦值為“0”(低電平);后使用下面的檢測(cè)按鍵值。

代碼如下:

void Delay25ms()		//@12.000MHz //15單片機(jī)延遲函數(shù)(功能按鍵消抖)
{
	unsigned char i, j;

	i = 49;
	j = 160;
	do
	{
		while (--j);
	} while (--i);
}
void anjian_init()      //按鍵初始化
{
    P3=0x3F;     //0011 1111
	P42==1;
	P44==1;
}

unsigned char KeyNumber()//按鍵判斷
{
    unsigned char K;
    anjian_init();	
    P30=0;									
	if(P34==0){Delay25ms();while(P34==0);Delay25ms();K=19;}
	if(P35==0){Delay25ms();while(P35==0);Delay25ms();K=15;}
	if(P42==0){Delay25ms();while(P42==0);Delay25ms();K=11;}
	if(P44==0){Delay25ms();while(P44==0);Delay25ms();K=7;}

	anjian_init();	
	P31=0;
	if(P34==0){Delay25ms();while(P34==0);Delay25ms();K=18;}
	if(P35==0){Delay25ms();while(P35==0);Delay25ms();K=14;}
	if(P42==0){Delay25ms();while(P42==0);Delay25ms();K=10;}
	if(P44==0){Delay25ms();while(P44==0);Delay25ms();K=6;}
	
    anjian_init();	
	P32=0;
	if(P34==0){Delay25ms();while(P34==0);Delay25ms();K=17;}
	if(P35==0){Delay25ms();while(P35==0);Delay25ms();K=13;}
	if(P42==0){Delay25ms();while(P42==0);Delay25ms();K=9;}
	if(P44==0){Delay25ms();while(P44==0);Delay25ms();K=5;}
	
    anjian_init();	
	P33=0;
	if(P34==0){Delay25ms();while(P34==0);Delay25ms();K=16;}
	if(P35==0){Delay25ms();while(P35==0);Delay25ms();K=12;}
	if(P42==0){Delay25ms();while(P42==0);Delay25ms();K=8;}
	if(P44==0){Delay25ms();while(P44==0);Delay25ms();K=4;}
	return K;
}
void main()
{
    unsigned char K;
    while(1)
    {
        K=keyNumber();//不斷檢測(cè)按鍵值
    }
    
}
矩陣按鍵逐個(gè)賦值低電平為何都要初始化?

先將按鍵初始化,給P30賦值為“0”若當(dāng)S19按下經(jīng)過消抖以及判斷是否松手和再次消抖則P34立即賦值為“0”;K為19;若是接下來不進(jìn)行按鍵初始化則P34仍然為“0”,則當(dāng)P31賦值為“0”時(shí),此時(shí)K又將賦值為18;最終賦值為16,從而造成按鍵判斷失誤;如果此時(shí)不給P30賦值為“1”則如果按下S18此時(shí)循環(huán)檢測(cè)時(shí)仍然會(huì)檢測(cè)為按下S19。

你是否還在尋找穩(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)查看詳情吧


本文名稱:?jiǎn)纹瑱C(jī)中按鍵的使用-創(chuàng)新互聯(lián)
標(biāo)題來源:http://weahome.cn/article/jogse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部