一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

多個(gè)按鍵控制數(shù)碼管顯示數(shù)字

CHANBAEK ? 來源:狂錘硬件 ? 作者:顧 ? 2023-06-28 11:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寫代碼思路

按照之前的文章關(guān)于數(shù)碼管說到的線與,在此之上我們將一個(gè)按鍵拓展為多個(gè)按鍵,對(duì)數(shù)碼管進(jìn)行控制,就需要按鍵掃描函數(shù),數(shù)碼管顯示函數(shù),再加上個(gè)主函數(shù)和延遲函數(shù)就可以搞定。

01.原理圖

圖片

元器件為:7SEG-MPX6-CC、80C51、BUTTON

將原理圖畫好后,根據(jù)元件的連接和元件特性去寫代碼。

02.按鍵掃描函數(shù)

當(dāng)我們按鍵按下時(shí),需要判斷按鍵是否按下,如果按下了,我們需要給一個(gè)鍵標(biāo)志,判斷它已經(jīng)按下了。

按鍵掃描使用的方法為反轉(zhuǎn)法,除此方法外,還有掃描法。

或者你也可以先固定列,再判斷行是否按下,一行行去判斷,如果不在此列,則繼續(xù)下一列,同樣判斷每一行去確定按鍵是哪一個(gè)被按下了?!具@個(gè)方法有空我會(huì)嘗試寫出來】

//********按鍵掃描函數(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ù)

因?yàn)閗ey_value是一個(gè)全局變量,所以并不需要傳參給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ù)

假設(shè)運(yùn)行一行代碼,是10us

那么循環(huán)100次就是1ms。

在延遲函數(shù)中,我加入了一個(gè)參數(shù),為了就是能得到任何我想要延遲的時(shí)間。

例如:當(dāng)k被賦為1時(shí),我們for循環(huán)總共循環(huán)了100次,延時(shí)時(shí)間time = 100 * 10 =1000us = 1ms。

PS:如果需要實(shí)際的執(zhí)行時(shí)間,還需要去debug一下,去算出一行代碼執(zhí)行時(shí)間是多少。

//********延遲函數(shù)             
void Delay(u16 k){
  u16 i,j;
  for(i = 0; i < k ; i++)
    for(j = 0; j< 100  ;j++);
}

05.主函數(shù)

因?yàn)槲覀儗?shí)現(xiàn)的功能分成了各個(gè)函數(shù)去寫,所以我們的主函數(shù)很簡(jiǎn)單,初始化加上我們需要調(diào)用的函數(shù),就可以實(shí)現(xiàn)我們想要的功能了。

void main(){
  //初始化引腳
  P1 = 0xf0;
  P2 = 0x00;
  P3 = 0x00;
  Key_scan();
}

06.結(jié)果展示

未上電時(shí)

圖片

按下第一個(gè)鍵

圖片

按下第六個(gè)鍵

圖片

按下最后一個(gè)鍵

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 原理圖
    +關(guān)注

    關(guān)注

    1326

    文章

    6415

    瀏覽量

    240491
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1889

    瀏覽量

    92629
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64898
  • 按鍵
    +關(guān)注

    關(guān)注

    4

    文章

    227

    瀏覽量

    58076
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    按鍵控制各位數(shù)碼管顯示不同數(shù)字

    用4*4矩陣鍵盤掃描是否有按鍵按下,當(dāng)有按鍵按下第一位數(shù)碼管顯示按下的那個(gè)數(shù)字,接著再按下按鍵
    發(fā)表于 07-19 10:24

    按鍵控制數(shù)碼管顯示

    按鍵s4接在P3.3口,按鍵按下,數(shù)碼管顯示數(shù)字30。求助
    發(fā)表于 06-25 00:47

    請(qǐng)問CH579如何配置一個(gè)按鍵,使用按鍵控制數(shù)碼管顯示數(shù)字加減?

    請(qǐng)問CH579如何配置一個(gè)按鍵,使用按鍵控制數(shù)碼管顯示數(shù)字加減。。。
    發(fā)表于 08-11 07:02

    單片機(jī)c語言按鍵控制LED以及數(shù)碼管

    單片機(jī) c語言 按鍵控制LED 以及數(shù)碼管 熟練 掌握 按鍵 應(yīng)用原理 以及消斗
    發(fā)表于 02-16 17:57 ?24次下載

    按鍵控制單個(gè)數(shù)碼管顯示

    19-按鍵控制單個(gè)數(shù)碼管顯示----------51單片機(jī)源程序 用keil直接打開
    發(fā)表于 06-16 15:36 ?34次下載

    獨(dú)立按鍵控制數(shù)碼管的加減資料下載

    電子發(fā)燒友網(wǎng)站提供《獨(dú)立按鍵控制數(shù)碼管的加減資料下載.rar》資料免費(fèi)下載
    發(fā)表于 05-26 08:00 ?22次下載

    fpga按鍵控制數(shù)碼管顯示

    本文主要介紹了fpga按鍵控制數(shù)碼管顯示程序設(shè)計(jì)。數(shù)碼管是由多個(gè)發(fā)光二極封裝在一起組成“8”字
    發(fā)表于 01-16 16:19 ?1.8w次閱讀
    fpga<b class='flag-5'>按鍵控制</b><b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>

    由FPGA DIY開發(fā)板實(shí)現(xiàn)消抖按鍵控制數(shù)碼管顯示0—9

    wang1113 的消抖按鍵控制數(shù)碼管顯示0—9視頻。
    的頭像 發(fā)表于 06-22 09:57 ?4597次閱讀

    利用FPGA_DIY開發(fā)板實(shí)現(xiàn)按鍵控制數(shù)碼管

    十八筆畫的 FPGA_DIY 按鍵控制數(shù)碼管
    的頭像 發(fā)表于 06-20 02:30 ?6427次閱讀
    利用FPGA_DIY開發(fā)板實(shí)現(xiàn)<b class='flag-5'>按鍵控制</b><b class='flag-5'>數(shù)碼管</b>

    FPGA DIY 按鍵控制數(shù)碼管顯示

    asean的 FPGA DIY 按鍵控制數(shù)碼管顯示的視頻
    的頭像 發(fā)表于 06-20 00:37 ?8157次閱讀

    使用單片機(jī)實(shí)現(xiàn)單只按鍵控制單只數(shù)碼管滾動(dòng)顯示的程序和電路圖

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)單只按鍵控制單只數(shù)碼管滾動(dòng)顯示的程序和電路圖。
    發(fā)表于 06-02 17:28 ?3次下載
    使用單片機(jī)實(shí)現(xiàn)單只<b class='flag-5'>按鍵控制</b>單只<b class='flag-5'>數(shù)碼管</b>滾動(dòng)<b class='flag-5'>顯示</b>的程序和電路圖

    通過按鍵控制數(shù)碼管顯示當(dāng)前數(shù)控增益的PCB源文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是通過按鍵控制數(shù)碼管顯示當(dāng)前數(shù)控增益的PCB源文件免費(fèi)下載。
    發(fā)表于 09-07 08:00 ?1次下載
    通過<b class='flag-5'>按鍵控制</b><b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>當(dāng)前數(shù)控增益的PCB源文件免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)按鍵控制數(shù)碼管閃爍增減顯示的C語言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)按鍵控制數(shù)碼管閃爍增減顯示的C語言程序免費(fèi)下載。
    發(fā)表于 03-16 14:39 ?66次下載

    STM32F103的按鍵控制數(shù)碼管加減仿真

    STM32F103的按鍵控制數(shù)碼管加減仿真
    發(fā)表于 06-21 09:12 ?102次下載

    基于89C51單片機(jī)的按鍵控制單個(gè)數(shù)碼管顯示

    基于89C51單片機(jī)的按鍵控制單個(gè)數(shù)碼管顯示
    發(fā)表于 05-12 16:53 ?3次下載