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