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

【STM32】4x4矩陣鍵盤(pán)

這篇具有很好參考價(jià)值的文章主要介紹了【STM32】4x4矩陣鍵盤(pán)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

key.c

#include "key.h"
#include "delay.h"

void key_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//關(guān)閉jtag,使能SWD,可以用SWD模式調(diào)試
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//行:推挽輸出
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_13;//行連接的引腳
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//列:上拉輸入,檢測(cè)高低電頻來(lái)判斷按鍵是否按下,有按鍵按下為0,沒(méi)有按鍵按下為1
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6;//列連接的引腳
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStructure);

}

//通過(guò)一行行掃描,檢測(cè)到0即為按下,返回按鈕,方法比較簡(jiǎn)單,感覺(jué)比寄存器好理解
u8 KEY_Scan(u8 mode)
{	 
	static u8 key_up=1;//按鍵按松開(kāi)標(biāo)志
	if(mode)key_up=1;  //支持連按	mode:0,不支持連續(xù)按;1,支持連續(xù)按;
	
	//檢測(cè)第一行
	key_row1_low;key_row2_high;key_row3_high;key_row4_high;
	if(key_up&&(S1==0||S2==0||S3==0||S4==0))
	{
		delay_ms(10);//去抖動(dòng) 
		key_up=0;
		if(S1==0)return S1_PRES;
		else if(S2==0)return S2_PRES;
		else if(S3==0)return S3_PRES;
		else if(S4==0)return S4_PRES;
		
	}else if(S1==1&&S2==1&&S3==1&&S4==1)key_up=1; 

	//檢測(cè)第二行
    key_row1_high;key_row2_low;key_row3_high;key_row4_high;
	if(key_up&&(S5==0||S6==0||S7==0||S8==0))
	{
		delay_ms(10);//去抖動(dòng) 
		key_up=0;
		if(S5==0)return S5_PRES;
		else if(S6==0)return S6_PRES;
		else if(S7==0)return S7_PRES;
		else if(S8==0)return S8_PRES;
		
	}else if(S5==1&&S6==1&&S7==1&&S8==1)key_up=1; 
	
	//檢測(cè)第三行
	key_row1_high;key_row2_high;key_row3_low;key_row4_high;
	if(key_up&&(S9==0||S10==0||S11==0||S12==0))
	{
		delay_ms(10);//去抖動(dòng) 
		key_up=0;
		if(S9==0)return S9_PRES;
		else if(S10==0)return S10_PRES;
		else if(S11==0)return S11_PRES;
		else if(S12==0)return S12_PRES;
		
	}else if(S9==1&&S10==1&&S11==1&&S12==1)key_up=1; 

	//檢測(cè)第四行
  key_row1_high;key_row2_high;key_row3_high;key_row4_low;
	if(key_up&&(S13==0||S14==0||S15==0||S16==0))
	{
		delay_ms(10);//去抖動(dòng) 
		key_up=0;
		if(S13==0)return S13_PRES;
		else if(S14==0)return S14_PRES;
		else if(S15==0)return S15_PRES;
		else if(S16==0)return S16_PRES;
		
	}else if(S13==1&&S14==1&&S15==1&&S16==1)key_up=1; 
	
	return 0;// 無(wú)按鍵按下
}

?

key.h文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-655772.html

#ifndef __KEY_H
#define __KEY_H	
#include "sys.h"
#include"stm32f10x.h"

#define S1  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)//讀取按鍵S1,PC9
#define S2  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)//讀取按鍵S2,PC8
#define S3  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)//讀取按鍵S3,PC7
#define S4  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_6)//讀取按鍵S4,PC6
#define S5  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)//讀取按鍵S5,PC9
#define S6  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)//讀取按鍵S6,PC8
#define S7  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)//讀取按鍵S7,PC7
#define S8  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_6)//讀取按鍵S8,PC6
#define S9  GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)//讀取按鍵S9,PC9
#define S10 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)//讀取按鍵S10,PC8
#define S11 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)//讀取按鍵S11,PC7
#define S12 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_6)//讀取按鍵S12,PC6
#define S13 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)//讀取按鍵S13,PC9
#define S14 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)//讀取按鍵S14,PC8
#define S15 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)//讀取按鍵S15,PC7
#define S16 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_6)//讀取按鍵S16,PC6
#define S1_PRES  1
#define S2_PRES  2
#define S3_PRES  3
#define S4_PRES  4
#define S5_PRES  5
#define S6_PRES  6
#define S7_PRES  7
#define S8_PRES  8
#define S9_PRES  9
#define S10_PRES 10
#define S11_PRES 11
#define S12_PRES 12
#define S13_PRES 13
#define S14_PRES 14
#define S15_PRES 15
#define S16_PRES 16

#define key_row1_low   GPIO_WriteBit(GPIOC,GPIO_Pin_3,Bit_RESET) //第一行
#define key_row1_high  GPIO_WriteBit(GPIOC,GPIO_Pin_3,Bit_SET) 
#define key_row2_low   GPIO_WriteBit(GPIOC,GPIO_Pin_2,Bit_RESET) //第二行
#define key_row2_high  GPIO_WriteBit(GPIOC,GPIO_Pin_2,Bit_SET) 
#define key_row3_low   GPIO_WriteBit(GPIOC,GPIO_Pin_0,Bit_RESET) //第三行
#define key_row3_high  GPIO_WriteBit(GPIOC,GPIO_Pin_0,Bit_SET) 
#define key_row4_low   GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET) //第四行
#define key_row4_high  GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET) 

void key_Init(void);
u8 KEY_Scan(u8 mode);

#endif

到了這里,關(guān)于【STM32】4x4矩陣鍵盤(pán)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • STM32 Proteus仿真4x4矩陣15位搶答器數(shù)碼管TM1637顯示-0039

    STM32 Proteus仿真4x4矩陣15位搶答器數(shù)碼管TM1637顯示-0039

    STM32?Proteus仿真4x4矩陣15位搶答器數(shù)碼管TM1637顯示-0039 Proteus 仿真小實(shí)驗(yàn): STM32?Proteus仿真4x4矩陣15位搶答器數(shù)碼管TM1637顯示-0039 功能: 硬件組成:STM32F103R6單片機(jī)?+TM1637驅(qū)動(dòng)4位數(shù)碼管+4x4矩陣鍵盤(pán)+蜂鳴器 1.有一個(gè)開(kāi)啟鍵,點(diǎn)擊后蜂鳴器短響一聲,開(kāi)始搶答。此后4位數(shù)碼管倒計(jì)

    2024年02月08日
    瀏覽(21)
  • Arduino UNO 4X4矩陣鍵盤(pán)

    Arduino UNO 4X4矩陣鍵盤(pán)

    目錄 一,硬件 二,原理 三,電路圖 四,代碼 ?五,實(shí)物圖 Arduino UNO 4X4矩陣鍵盤(pán) ????????連接矩陣鍵盤(pán)的8個(gè)IO全部上拉,先使行線(xiàn)變?yōu)檩斎?,列線(xiàn)變?yōu)檩敵霾榈碗娖?,若有按鍵按下,則對(duì)應(yīng)的行線(xiàn)接地,判斷哪個(gè)行線(xiàn)為低電平,則可讀出第幾行有按鍵被按下;然后使列

    2024年02月16日
    瀏覽(21)
  • STM32單片機(jī)4*4矩陣鍵盤(pán)相關(guān)代碼

    STM32單片機(jī)4*4矩陣鍵盤(pán)相關(guān)代碼

    ? ? ? ?矩陣鍵盤(pán)是我們學(xué)習(xí)32單片機(jī)中十分常見(jiàn)的模塊。對(duì)于我們掌握32單片機(jī)的基本要求有很大的幫助。其核心原理是利用鍵盤(pán)按鍵按下時(shí)產(chǎn)生的電位變化來(lái)判斷是否按下以及利用行列電平變化來(lái)得到按鍵在矩陣鍵盤(pán)位置的思路。本文簡(jiǎn)述其使用的相關(guān)代碼。 ? ??????

    2024年02月07日
    瀏覽(29)
  • 基于FPGA的4x4矩陣鍵盤(pán)控制器verilog開(kāi)發(fā)實(shí)現(xiàn)

    基于FPGA的4x4矩陣鍵盤(pán)控制器verilog開(kāi)發(fā)實(shí)現(xiàn)

    歡迎訂閱《FPGA學(xué)習(xí)入門(mén)100例教程》、《MATLAB學(xué)習(xí)入門(mén)100例教程》 目錄 一、理論基礎(chǔ) 二、核心程序 三、測(cè)試結(jié)果 ? ? ? ?基于FPGA的4x4矩陣鍵盤(pán)控制器是一種使用FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)來(lái)實(shí)現(xiàn)對(duì)4x4矩陣鍵盤(pán)進(jìn)行控制的設(shè)備。該控制器能夠有效地降低硬件資源的使用,提高系

    2024年02月11日
    瀏覽(21)
  • word 如何編寫(xiě)4x4矩陣

    word 如何編寫(xiě)4x4矩陣

    百度上給的教程,打印出來(lái)沒(méi)有對(duì)齊 https://jingyan.baidu.com/article/6b182309995f8dba58e159fc.html 百度上的方式試了一下,不會(huì)對(duì)齊。導(dǎo)致公式看起來(lái)很奇怪。 下面方式會(huì)自動(dòng)對(duì)齊 摸索了一下發(fā)現(xiàn)可以用下面這種方式編寫(xiě) 4x4 矩陣。先創(chuàng)建一個(gè) 3x3矩陣,然后選擇其中一個(gè)矩陣,右鍵插入

    2024年02月04日
    瀏覽(21)
  • 矩陣乘法優(yōu)化:4x4矩陣塊優(yōu)化方法

    MMult_4x4_3.h 一次計(jì)算C中的4x4小塊 0.24gflops 2.1% 1 MMult_4x4_4.h 一次計(jì)算C中的4x4小塊 0.24gflops 2.1% 1 MMult_4x4_5.h 一次計(jì)算C中的4x4小塊,將16個(gè)循環(huán)合并一個(gè) 0.25gflops 2.2% 1 MMult_4x4_6.h 一次計(jì)算C中的4x4小塊(我們?cè)诩拇嫫髦欣奂覥的元素,并對(duì)a的元素使用寄存器) 1.75gflops 16.0% 1 MMult_4x4_7.h 在

    2024年02月15日
    瀏覽(30)
  • STC15WProteus仿真HX711電子秤串口計(jì)價(jià)稱(chēng)重4x4鍵盤(pán)STC15W4K32S4

    STC15WProteus仿真HX711電子秤串口計(jì)價(jià)稱(chēng)重4x4鍵盤(pán)STC15W4K32S4

    STC15WProteus仿真HX711電子秤串口計(jì)價(jià)稱(chēng)重4x4鍵盤(pán)STC15W4K32S4 Proteus 仿真小實(shí)驗(yàn): STC15WProteus仿真HX711電子秤串口計(jì)價(jià)稱(chēng)重4x4鍵盤(pán)STC15W4K32S4 功能: 硬件組成:STC15W4K32S4單片機(jī)?+LCD12864顯示器+4x4矩陣鍵盤(pán)+HX711電子秤 1.單片機(jī)通過(guò)HX711讀取稱(chēng)重傳感器數(shù)據(jù)計(jì)算出重量,重量乘于單價(jià)可以

    2024年02月12日
    瀏覽(23)
  • UG\NX二次開(kāi)發(fā) 獲取部件的4x4矩陣

    UG\NX二次開(kāi)發(fā) 獲取部件的4x4矩陣

    文章作者:里海 來(lái)源網(wǎng)站: https://blog.csdn.net/WangPaiFeiXingYuan 輸入部件occ,獲取矩陣。用函數(shù)UF_ASSEM_ask_transform_of_occ(),比較直接。 輸入部件的實(shí)例或事例,獲取矩陣。用函數(shù)UF_ASSEM_ask_component_data()。 通過(guò)部件事例獲取實(shí)例的方法

    2024年02月14日
    瀏覽(26)
  • UG\NX二次開(kāi)發(fā) 獲取部件的4x4矩陣的方法

    UG\NX二次開(kāi)發(fā) 獲取部件的4x4矩陣的方法

    文章作者:里海 來(lái)源網(wǎng)站: https://blog.csdn.net/WangPaiFeiXingYuan 方法1: 輸入部件occ,獲取矩陣。用函數(shù)UF_ASSEM_ask_transform_of_occ(),比較直接。 方法2: 輸入部件的實(shí)例或事例,獲取矩陣。用函數(shù)UF_ASSEM_ask_component_data()。 通過(guò)部件事例獲取實(shí)例的方法 相關(guān)函數(shù): ? ?

    2024年02月12日
    瀏覽(27)
  • STM32單片機(jī)學(xué)習(xí)3--STM32控制鍵盤(pán)

    STM32單片機(jī)學(xué)習(xí)3--STM32控制鍵盤(pán)

    單片機(jī)型號(hào):STM32F103C8T6 開(kāi)發(fā)環(huán)境:Keil5 4種輸入模式 上拉輸入模式:在默認(rèn)狀態(tài)下(GPIO引腳無(wú)輸入),讀取得的GPIO引腳數(shù)據(jù)為1,高電平(與Vdd相連的為上拉電阻); 下拉輸入模式:在默認(rèn)狀態(tài)下(GPIO引腳無(wú)輸入),讀取得的GPIO引腳數(shù)據(jù)為0,低電平(與Vss相連的為下拉電

    2024年02月10日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包