寫代碼思路
按照之前的文章關于數(shù)碼管說到的線與,在此之上我們將一個按鍵拓展為多個按鍵,對數(shù)碼管進行控制,就需要按鍵掃描函數(shù),數(shù)碼管顯示函數(shù),再加上個主函數(shù)和延遲函數(shù)就可以搞定。
01.原理圖
元器件為:7SEG-MPX6-CC、80C51、BUTTON
將原理圖畫好后,根據(jù)元件的連接和元件特性去寫代碼。
02.按鍵掃描函數(shù)
當我們按鍵按下時,需要判斷按鍵是否按下,如果按下了,我們需要給一個鍵標志,判斷它已經按下了。
按鍵掃描使用的方法為反轉法,除此方法外,還有掃描法。
或者你也可以先固定列,再判斷行是否按下,一行行去判斷,如果不在此列,則繼續(xù)下一列,同樣判斷每一行去確定按鍵是哪一個被按下了。【這個方法有空我會嘗試寫出來】
//********按鍵掃描函數(shù)
void Key_scan(){
if(P1!=0xf0)
{
Delay(10); //延遲10ms
if(P1!=0xf0)
{
key_value = P1;
P1 = 0x0f;
key_value += P1;
key_flag = 1;
Display(); //數(shù)碼管顯示函數(shù)
P1 = 0xf0;
}
}
else
{
key_flag = 0;
}
}
03.數(shù)碼管顯示函數(shù)
因為key_value是一個全局變量,所以并不需要傳參給Display函數(shù),直接拿去判斷就可以了。
//********數(shù)碼管顯示函數(shù)
void Display(){
if(key_value==key_pad[0])
P2 = Table_cc[0];
else if(key_value==key_pad[1])
P2 = Table_cc[1];
else if(key_value==key_pad[2])
P2 = Table_cc[2];
else if(key_value==key_pad[3])
P2 = Table_cc[3];
else if(key_value==key_pad[4])
P2 = Table_cc[4];
else if(key_value==key_pad[5])
P2 = Table_cc[5];
else if(key_value==key_pad[6])
P2 = Table_cc[6];
else if(key_value==key_pad[7])
P2 = Table_cc[7];
else if(key_value==key_pad[8])
P2 = Table_cc[8];
else if(key_value==key_pad[9])
P2 = Table_cc[9];
else if(key_value==key_pad[10])
P2 = Table_cc[10];
else if(key_value==key_pad[11])
P2 = Table_cc[11];
else if(key_value==key_pad[12])
P2 = Table_cc[12];
else if(key_value==key_pad[13])
P2 = Table_cc[13];
else if(key_value==key_pad[14])
P2 = Table_cc[14];
else if(key_value==key_pad[15])
P2 = Table_cc[15];
}
04.延遲函數(shù)
假設運行一行代碼,是10us
那么循環(huán)100次就是1ms。
在延遲函數(shù)中,我加入了一個參數(shù),為了就是能得到任何我想要延遲的時間。
例如:當k被賦為1時,我們for循環(huán)總共循環(huán)了100次,延時時間time = 100 * 10 =1000us = 1ms。
PS:如果需要實際的執(zhí)行時間,還需要去debug一下,去算出一行代碼執(zhí)行時間是多少。
//********延遲函數(shù)
void Delay(u16 k){
u16 i,j;
for(i = 0; i < k ; i++)
for(j = 0; j< 100 ;j++);
}
05.主函數(shù)
因為我們將實現(xiàn)的功能分成了各個函數(shù)去寫,所以我們的主函數(shù)很簡單,初始化加上我們需要調用的函數(shù),就可以實現(xiàn)我們想要的功能了。
void main(){
//初始化引腳
P1 = 0xf0;
P2 = 0x00;
P3 = 0x00;
Key_scan();
}
06.結果展示
未上電時
按下第一個鍵
按下第六個鍵
按下最后一個鍵
-
原理圖
+關注
關注
1335文章
6418瀏覽量
243337 -
數(shù)碼管
+關注
關注
32文章
1889瀏覽量
93394 -
函數(shù)
+關注
關注
3文章
4400瀏覽量
66365 -
按鍵
+關注
關注
4文章
228瀏覽量
58326
發(fā)布評論請先 登錄
按鍵控制各位數(shù)碼管顯示不同數(shù)字
請問CH579如何配置一個按鍵,使用按鍵控制數(shù)碼管的顯示數(shù)字加減?
fpga按鍵控制數(shù)碼管顯示

由FPGA DIY開發(fā)板實現(xiàn)消抖按鍵控制數(shù)碼管顯示0—9
通過按鍵控制數(shù)碼管顯示當前數(shù)控增益的PCB源文件免費下載

使用單片機實現(xiàn)按鍵控制單個數(shù)碼管顯示的C語言實例免費下載

評論