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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

八路鍵控數(shù)碼管顯示制作

電子設計 ? 來源:xx ? 2019-01-26 07:03 ? 次閱讀

通過制作《八路鍵控數(shù)碼管》的實訓項目學會單片機的PO口和P2口的結(jié)構特點及數(shù)據(jù)的輸入/輸出使用方法、鍵盤輸入原理、數(shù)碼管顯示原理等知識點,為以后制作多功能八路搶答器做好準備。

一、任務目標

使用八路直控鍵盤控制一位共陰極數(shù)碼管顯示數(shù)字。

二、硬件電路設計

1.顯示電路設計

數(shù)碼管由8個發(fā)光二極管(以下簡稱字段)構成,通過不同的組合可用來顯示數(shù)字0—9、字符A~F、H、L、P、R、U、Y、符號“-”及小數(shù)點“.”。

數(shù)碼管又分為共陰極和共陽極兩種結(jié)構,如下左圖所示為共陰極數(shù)碼管的外型結(jié)構示意圖。下右圖為共陰極數(shù)碼管的內(nèi)部結(jié)構圖。

共陰極數(shù)碼管的8個發(fā)光二極管的陰極(二極管負端)連接在一起。通常,共陰極接低電平(一般接地),其他管腳接段驅(qū)動電路輸出端,當某段驅(qū)動電路的輸出端為高電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字和字符。此時,要求段驅(qū)動電路能提供額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。

我們知道單片機的PO口可以驅(qū)動8個LS型TTL負載(低電平灌輸電流為3.2mA,高電平上拉電流為0)。因此我們選擇單片機的PO口作為共陰極數(shù)碼管的段驅(qū)動電路輸出端,但是必須外接上拉電阻。數(shù)碼管顯示電路圖如下圖。

現(xiàn)在只需要通過指令控制單片機的PO口輸出相應的高低電平就可以控制數(shù)碼管顯示數(shù)字0~9。

如:MOV PO,#06H;顯示數(shù)字1。

MOV PO,#5BH;顯示數(shù)字2。

數(shù)碼管字型編碼表如下表所示。

2.鍵盤電路設計

常見的鍵盤電路形式有直接編碼輸入鍵盤電路(簡稱直控鍵盤)和矩陣鍵盤電路,直控鍵盤是直接用I/O口線構成的單個按鍵電路,其特點是每個按鍵單獨占用一根I/O口線,每個按鍵的工作不會影響其它I/O口線的狀態(tài),直控鍵盤的典型電路如下圖所示。

直控鍵盤電路配置靈活,軟件結(jié)構簡單,但每個按鍵必須占用一根I/O口線,因此,在按鍵較多時,I/O口線浪費較大,不宜采用,應采用矩陣鍵盤,矩陣鍵盤就不詳細討論了。

上圖中按鍵輸入均采用低電平有效,因為P2口內(nèi)部自帶了上拉電阻,所以外電路可不接上拉電阻。

3.八路鍵控數(shù)碼管電路


鍵盤電路作為單片機的輸入部分,數(shù)碼顯示電路作為單片機的輸出部分,由鍵盤電路通過單片機控制數(shù)碼管顯示電路的八路鍵控數(shù)碼管電路設計如下圖。

三、程序設計

1.數(shù)碼管工作原理分析

本電路采用的是共陰極數(shù)碼管,接到單片機的PO口,現(xiàn)在只要向PO口輸出相應的字型編碼就可以顯示相應的數(shù)字。

2.鍵盤工作原理分析

P2口作為輸入口使用時,要先向P2口寫入高電平后才能讀取到正確的輸入電平。在讀取電平的時候應考慮下面幾點:

(1)檢測有無按鍵按下,并采取軟件措施,消除按鍵機械觸點抖動的影響。一般采用軟件措施:在檢測到有按鍵按下時,執(zhí)行一個10ms左右的延時子程序后,再檢測該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認該鍵處于閉合狀態(tài);同理,在檢測到該鍵釋放后,也應采用相同的步驟進行確認,從而可消除抖動的影響。

(2)有可靠的邏輯處理辦法。每次只處理一個按鍵,其間任何按鍵的操作對系統(tǒng)不產(chǎn)生影響,且無論一次按鍵時間有多長,系統(tǒng)僅執(zhí)行一次按鍵功能程序。

(3)準確輸出按鍵值(或鍵號),以滿足控制功能的要求。

3.程序流程圖設計

根據(jù)數(shù)碼管工作原理的分析和鍵盤工作原理的分析,我們設計的程序流程圖如下圖。

4.程序設計

本程序?qū)玫较旅娴臈l件跳轉(zhuǎn)指令:

JZ REL;指令功能:A為0跳轉(zhuǎn)指令,既當累加器A=OOH時跳轉(zhuǎn),否則順序執(zhí)行。

其中REL是跳轉(zhuǎn)的相對偏移量,可以是正,向后跳,也可以是負,向前跳,不過不能超過一個頁面。

不過編程者經(jīng)常不寫實際偏移量而用標號代替,編譯時,軟件自動算出當前位置到目標位置的偏移量。

JB BIT.REL指令功能:指定位為1跳轉(zhuǎn)指令,即當BIT=1時跳轉(zhuǎn),否則順序執(zhí)行。

其中BIT是一個位變量,如P1.1,PSW.5等。

ORG OOOOH;隨后的指令代碼從OOOOH單元開始存放。

LJMP START;轉(zhuǎn)到標號START處ORG 0030H;隨后的指令代碼從0030H單元開始存放。

START:MOV P0,#OOH;關閉數(shù)碼管,不顯示任何內(nèi)容。

SAOMIAO:MOV P2,#OFFH;對P2口所有位寫1,也就是處于讀狀態(tài),確保讀數(shù)正確。

CLRA;對累加器A清零。

MOV A,P2;第一次讀取P2口的數(shù)據(jù),并送入累加器A中。

CPL A;對A按位取反,如果沒有鍵按下,A為OOH,如果有鍵按下,相應的位為1。

JZ SAOMIAO;如果A=OOH,說明沒有鍵按下,跳到標號SAOMIAO處繼續(xù)掃描。如果A不等于OOH,說明有鍵按下,應該調(diào)用10MS的延時去抖子程序。

LCALL DELAY10MS;調(diào)用10MS的延時去抖子程序。

MOVA,P2;第二次讀取P2口的數(shù)據(jù),并送入累加器A中。

CPL A;對A按位取反,如果沒有鍵按下,A為OOH,如果有鍵按下,相應的位為1。

JZ SAOMIAO.;如果A=OOH,說明沒有鍵按下,跳到標號SAOMIAO處繼續(xù)掃描。如果A不等于OOH,說明確實有鍵按下,順序執(zhí)行下面的程序,判斷是哪個鍵按下了。

JB ACC.O,SZO;如果SO鍵按下, 則ACC.0=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字0,否則順序執(zhí)行。

JB ACC.1,SZ1;如果S1鍵按下, 則ACC.1=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字1,否則順序執(zhí)行。

JB ACC.2,SZ 2;如果S2鍵按下, 則ACC.2=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字2,否則順序執(zhí)行。

JB ACC.3,SZ 3;如果S3鍵按下, 則ACC.3=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字3,否則順序執(zhí)行。

JB ACC.4,SZ 4;如果S4鍵按下, 則ACC.4=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字4,否則順序執(zhí)行。

JB ACC.5,SZ 5;如果S5鍵按下, 則ACC.5=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字5,否則順序執(zhí)行。

JB ACC.6,SZ 6;如果S6鍵按下, 則ACC.6=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字6,否則順序執(zhí)行。

JB ACC.7,SZ 7;如果S7鍵按下, 則ACC.7=1,轉(zhuǎn)去執(zhí)行顯示數(shù)字7,否則順序執(zhí)行。

LJMP SAOMJAO;跳轉(zhuǎn)到 SAOMJAO處繼續(xù)掃描。

SZO:MOVPO,#3FH;顯示數(shù)字0。

LJMPSAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。

SZ1:MOVPO,#06H;顯示數(shù)字1。

LJMPSAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。

S22:MOVPO,#5BH;顯示數(shù)字2。

LJMPSAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。

S23:MOVPO,#4FH;顯示數(shù)字3。

LJMPSAOMIAO:跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。

S24:MOVPO,#66H;顯示數(shù)字4。

LJMPSAOMIAO:跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。

S25:MOVPO,#6DH;顯示數(shù)字5。

LJMPSAOMIAO:跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。

S26:MOVPO,#7DH;顯示數(shù)字6。

LJMPSAOMIAO;跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。

S27:MOVPO,#07H;顯示數(shù)字7。

LJMPSAOMIAO:跳轉(zhuǎn)到SAOMIAO處繼續(xù)掃描按鍵。

DELAY10MS:MOVR7,#20;從本行開始,到RET結(jié)束,為10MS延時去抖子程序。

D1: MOV R6,#250

D2: DJNZ R6,D2

DJNZ R7,D1

RET

END

四、制作步驟

第一步:按照電路原理圖,列出器件清單,并購買相應的器件材料,正常的價格是20元以內(nèi)。

第二步:焊接成電路板,具體步驟可以參考前面幾期的文章。

第三步:使用Keil C51 uVision2編輯源程序,編譯源代碼并生成目標程序代碼。再把目標程序代碼通過編程器寫入到單片機芯片中。

第四步:把單片機芯片插到“八路鍵控數(shù)碼管電路”的緊鎖坐上,并通電、測試、觀察結(jié)果。按下SO到S7號按鍵時,數(shù)碼管顯示立刻顯示數(shù)字0到7。如果同時按下2個按鍵,只會顯示編號小的數(shù)字。例如:如同時按下S5和S6,只會顯示按鍵編號為S5對應的數(shù)字“5”,而不會顯示數(shù)字“6”。

本功能的實現(xiàn)是為了以后我們制作八路搶答器,實踐當中不會出現(xiàn)同時按下多個按鍵的可能性,總會有時間差異的。

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

    關注

    6040

    文章

    44605

    瀏覽量

    637232
  • 數(shù)碼管
    +關注

    關注

    32

    文章

    1883

    瀏覽量

    91305
收藏 人收藏

    評論

    相關推薦

    八路搶答器設計論文

    八路搶答器設計論文數(shù)碼顯示八路搶答器的設計:搶答器作為一種電子產(chǎn)品,早已廣泛應用于各種智力和知識競賽場合,但目前所使用的搶答器存在分立元件使用較多,造成每
    發(fā)表于 12-01 21:13

    八路搶答器數(shù)電

    作為一個八路搶答器實現(xiàn)的功能,應該是在位選手進行搶答時能夠準確的鎖定第一位搶答選手的號數(shù),并且準確的顯示出來,它的顯示結(jié)果不會因為別的選手的搶答而影響它的
    發(fā)表于 05-27 16:57

    八路彩燈設計求助

    磁片電容兩塊。發(fā)光二極12支。設計一個八路彩燈,要求如下:1、八路彩燈從左到右依次亮,時間間隔0.5s;2、八路彩燈從右到左依次滅,時間間隔0.5s;3、
    發(fā)表于 05-04 14:56

    八路搶答器設計相關資料分享

    //八路搶答器說明:P2.7口為顯示個位數(shù)碼管的位選線;P2.6口為顯示十位數(shù)碼管的位選線;搶答或倒計時結(jié)束后按復位鍵進行下一次搶答.#in
    發(fā)表于 11-22 07:49

    數(shù)碼管的結(jié)構和功能,如何使用數(shù)碼管

    數(shù)碼管顯示一、實驗目的:1、了解數(shù)碼管的結(jié)構和功能;2、學會如何區(qū)分三極的三個引腳并正確使用三極;‘3、學會利用“星星點燈”實驗原理來控
    發(fā)表于 01-10 07:42

    利用ADC0809實現(xiàn)八路電壓采集系統(tǒng)的設計

    【資源下載】下載地址:點擊下載1220百度網(wǎng)盤數(shù)碼管顯示,測量八路電壓表。#define addo (5.0/255.0)#define zero 0.005//用于校準AD的誤差void main
    發(fā)表于 01-13 07:33

    數(shù)碼管的分類

    數(shù)碼管的分類     數(shù)碼管按段數(shù)分為七段數(shù)碼管八段數(shù)碼管八段數(shù)碼管比七段數(shù)碼管
    發(fā)表于 11-06 11:41 ?7498次閱讀

    數(shù)碼管顯示

    數(shù)碼管顯示簡單功能。八位數(shù)碼管,位選使用74hc595 段選使用74hc138顯示0-7.
    發(fā)表于 12-02 10:17 ?15次下載

    51單片機四搶答器(LED燈_數(shù)碼管顯示_蜂鳴器提示音)C語言源程序

    簡單的八路搶答器(LED燈_數(shù)碼管顯示_蜂鳴器提示音)
    發(fā)表于 01-12 18:32 ?136次下載

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

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

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

    本文主要介紹了fpga按鍵控數(shù)碼管顯示程序設計。數(shù)碼管是由多個發(fā)光二極封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們
    發(fā)表于 01-16 16:19 ?1.7w次閱讀
    fpga按<b class='flag-5'>鍵控</b>制<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>

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

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

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

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

    數(shù)碼管顯示電路的設計及制作

    數(shù)碼管是單片機的常用輸出設備,其接法靈活,硬件接線較繁瑣。為方便自己做實驗,筆者利用手頭的元器件制作了一塊多功能數(shù)碼管顯示實驗板。這塊實驗板由
    的頭像 發(fā)表于 08-21 15:25 ?4.1w次閱讀
    <b class='flag-5'>數(shù)碼管</b><b class='flag-5'>顯示</b>電路的設計及<b class='flag-5'>制作</b>

    通過按鍵控數(shù)碼管顯示當前數(shù)控增益的PCB源文件免費下載

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