STM32 矩陣鍵盤控制數碼管

2021-09-28 15:29:25 字數 1941 閱讀 5003

在以往的32部落格中,見過了數碼管和矩陣鍵盤,今天就將他們結合起來,如何用矩陣鍵盤去控制數碼管。

我們都知道數碼管可以顯示從0-9十位數字,也可以顯示從a-f的字母,將數碼管和2*2矩陣鍵盤結合起來也就是使用四個按鍵分別控制加,減,置0和全部點亮。

加減的功能不用多說也就是從0加到f,如果繼續增加的話又從0開始,減也是一樣,置0也就是將資料恢復為初始狀態,全部點亮是為了檢驗數碼管是否可以正常工作。

話不多說,咱們來看一下**實現

key.c:設定按鍵

#include "key.h"

#include "delay.h"

#include "usart.h"

//pb5~7設定成數入

//pb8~10設定成輸出

void key_init1(void)

void key_init2(void)

u8 key_scan1()

else

return 0;

}u8 key_scan2()

else return 0;

}u8 key_out(void)

}}

smg.h

#ifndef __smg_h

#define __smg_h

#include "sys.h"

#include "delay.h"

u8 smg_init(void);

#endif

key.h:控制按鍵

#ifndef __key_h

#define __key_h

#include "sys.h"

#define key1h_pres 1

#define key2h_pres 2

#define key1l_pres 1

#define key2l_pres 2

#define key5_in pbin(5) //pb5

#define key6_in pbin(6) //pb6

//pb7

#define key5_out pbout(5)

#define key6_out pbout(6)

#define key8_in pbin(8)

#define key9_in pbin(9)

#define key8_out pbout(8) //pb8

#define key9_out pbout(9) //pb9

void key_init1(void);

void key_init2(void);

u8 key_scan1();

u8 key_scan2();

u8 key_out(void);

#endif

light.c:主函式

#include "sys.h"

#include "usart.h"

#include "delay.h"

#include "led.h"

#include "key.h"

#include "smg.h"

int main(void)

else if(r==key1h_pres)

else

break;

switch(k)

case 1:

case 2:

case 3:

case 4:

case 5:

case 6:

case 7:

case 8:

case 9:

}} }

矩陣鍵盤 數碼管

在沒有數字顯示的開始,順序為矩陣鍵盤後,依次顯示的數碼管0 f,6同時數字控制靜態展示。數字控制和矩陣式鍵盤 首先關閉全部的數碼管的段選不讓數碼管顯示不論什麼數字。然後位選中全部的數碼管,接下來僅僅須要選中全部的數碼管,以後的操作的僅僅須要送段選資料即可了,接著進入while 大迴圈不停的掃瞄鍵盤是...

STM32板子上的數碼管亮度不夠

最近在做乙個數碼管,其他人的程式數碼管亮度很高,但是我的程式亮度不高,後來在網上搜尋結果,查尋原因,現記錄如下 長期點亮就是 數碼管最亮 的時候。但動態顯示中,要換種說法 最大可能讓它長期亮,就是 數碼管最亮的時候。也就是說,數碼管亮的時間越長,它就越亮。又但是,動態顯示中,數碼管亮的時間越長,幾個...

STM32板子上的數碼管亮度不夠

最近在做乙個數碼管,其他人的程式數碼管亮度很高,但是我的程式亮度不高,後來在網上搜尋結果,查尋原因,現記錄如下 長期點亮就是 數碼管最亮 的時候。但動態顯示中,要換種說法 最大可能讓它長期亮,就是 數碼管最亮的時候。也就是說,數碼管亮的時間越長,它就越亮。又但是,動態顯示中,數碼管亮的時間越長,幾個...