18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 單片機 >> 正文

單片機的PO口和P2口的結構:八路鍵控數碼管顯示製作,LED dispalyer

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2018-02-20

八路鍵控數碼管顯示製作,LED dispalyer

關(guan) 鍵字:單片機數碼管顯示電路

 
  通過製作《八路鍵控數碼管》的實訓項目學會(hui) 單片機的PO口和P2口的結構特點及數據的輸入/輸出使用方法、鍵盤輸入原理、數碼管顯示原理等知識點,為(wei) 以後製作多功能八路搶答器做好準備。
  一、任務目標
  
  使用八路直控鍵盤控製一位共陰極數碼管顯示數字。
  二、硬件電路設計
  
  1.顯示電路設計
  
  數碼管由8個(ge) 發光二極管(以下簡稱字段)構成,通過不同的組合可用來顯示數字0—9、字符A~F、H、L、P、R、U、Y、符號“-”及小數點“.”。
 
  數碼管又分為(wei) 共陰極和共陽極兩(liang) 種結構,如下左圖所示為(wei) 共陰極數碼管的外型結構示意圖。下右圖為(wei) 共陰極數碼管的內(nei) 部結構圖。
  共陰極數碼管的8個(ge) 發光二極管的陰極(二極管負端)連接在一起。通常,共陰極接低電平(一般接地),其他管腳接段驅動電路輸出端,當某段驅動電路的輸出端為(wei) 高電平時,則該端所連接的字段導通並點亮,根據發光字段的不同組合可顯示出各種數字和字符。此時,要求段驅動電路能提供額定的段導通電流,還需根據外接電源及額定段導通電流來確定相應的限流電阻。
  我們(men) 知道單片機的PO口可以驅動8個(ge) LS型TTL負載(低電平灌輸電流為(wei) 3.2mA,高電平上拉電流為(wei) 0)。因此我們(men) 選擇單片機的PO口作為(wei) 共陰極數碼管的段驅動電路輸出端,但是必須外接上拉電阻。數碼管顯示電路圖如下圖。
  現在隻需要通過指令控製單片機的PO口輸出相應的高低電平就可以控製數碼管顯示數字0~9。
  如:MOV PO,#06H;顯示數字1。
  MOV PO,#5BH;顯示數字2。
  數碼管字型編碼表如下表所示。
  2.鍵盤電路設計
  
  常見的鍵盤電路形式有直接編碼輸入鍵盤電路(簡稱直控鍵盤)和矩陣鍵盤電路,直控鍵盤是直接用I/O口線構成的單個(ge) 按鍵電路,其特點是每個(ge) 按鍵單獨占用一根I/O口線,每個(ge) 按鍵的工作不會(hui) 影響其它I/O口線的狀態,直控鍵盤的典型電路如下圖所示。
  直控鍵盤電路配置靈活,軟件結構簡單,但每個(ge) 按鍵必須占用一根I/O口線,因此,在按鍵較多時,I/O口線浪費較大,不宜采用,應采用矩陣鍵盤,矩陣鍵盤就不詳細討論了。
  上圖中按鍵輸入均采用低電平有效,因為(wei) P2口內(nei) 部自帶了上拉電阻,所以外電路可不接上拉電阻。
  3.八路鍵控數碼管電路
  
  
  鍵盤電路作為(wei) 單片機的輸入部分,數碼顯示電路作為(wei) 單片機的輸出部分,由鍵盤電路通過單片機控製數碼管顯示電路的八路鍵控數碼管電路設計如下圖。
 
 
 
三、程序設計
  
  1.數碼管工作原理分析
  
  本電路采用的是共陰極數碼管,接到單片機的PO口,現在隻要向PO口輸出相應的字型編碼就可以顯示相應的數字。
  2.鍵盤工作原理分析
  
  P2口作為(wei) 輸入口使用時,要先向P2口寫(xie) 入高電平後才能讀取到正確的輸入電平。在讀取電平的時候應考慮下麵幾點:
 
  (1)檢測有無按鍵按下,並采取軟件措施,消除按鍵機械觸點抖動的影響。一般采用軟件措施:在檢測到有按鍵按下時,執行一個(ge) 10ms左右的延時子程序後,再檢測該鍵電平是否仍保持閉合狀態電平,若仍保持閉合狀態電平,則確認該鍵處於(yu) 閉合狀態;同理,在檢測到該鍵釋放後,也應采用相同的步驟進行確認,從(cong) 而可消除抖動的影響。
  (2)有可靠的邏輯處理辦法。每次隻處理一個(ge) 按鍵,其間任何按鍵的操作對係統不產(chan) 生影響,且無論一次按鍵時間有多長,係統僅(jin) 執行一次按鍵功能程序。
  (3)準確輸出按鍵值(或鍵號),以滿足控製功能的要求。
  3.程序流程圖設計
  
  根據數碼管工作原理的分析和鍵盤工作原理的分析,我們(men) 設計的程序流程圖如下圖。
 
 
  4.程序設計
  
  本程序將會(hui) 用到下麵的條件跳轉指令:
  JZ REL;指令功能:A為(wei) 0跳轉指令,既當累加器A=OOH時跳轉,否則順序執行。
  其中REL是跳轉的相對偏移量,可以是正,向後跳,也可以是負,向前跳,不過不能超過一個(ge) 頁麵。
  不過編程者經常不寫(xie) 實際偏移量而用標號代替,編譯時,軟件自動算出當前位置到目標位置的偏移量。
  JB BIT.REL指令功能:指定位為(wei) 1跳轉指令,即當BIT=1時跳轉,否則順序執行。
  其中BIT是一個(ge) 位變量,如P1.1,PSW.5等。
  ORG OOOOH;隨後的指令代碼從(cong) OOOOH單元開始存放。
  LJMP START;轉到標號START處ORG 0030H;隨後的指令代碼從(cong) 0030H單元開始存放。
  START:MOV P0,#OOH;關(guan) 閉數碼管,不顯示任何內(nei) 容。
  SAOMIAO:MOV P2,#OFFH;對P2口所有位寫(xie) 1,也就是處於(yu) 讀狀態,確保讀數正確。
  CLRA;對累加器A清零。
  MOV A,P2;第一次讀取P2口的數據,並送入累加器A中。
  CPL A;對A按位取反,如果沒有鍵按下,A為(wei) OOH,如果有鍵按下,相應的位為(wei) 1。
  JZ SAOMIAO;如果A=OOH,說明沒有鍵按下,跳到標號SAOMIAO處繼續掃描。如果A不等於(yu) OOH,說明有鍵按下,應該調用10MS的延時去抖子程序。
  LCALL DELAY10MS;調用10MS的延時去抖子程序。
  MOVA,P2;第二次讀取P2口的數據,並送入累加器A中。
  CPL A;對A按位取反,如果沒有鍵按下,A為(wei) OOH,如果有鍵按下,相應的位為(wei) 1。
  JZ SAOMIAO.;如果A=OOH,說明沒有鍵按下,跳到標號SAOMIAO處繼續掃描。如果A不等於(yu) OOH,說明確實有鍵按下,順序執行下麵的程序,判斷是哪個(ge) 鍵按下了。
  JB ACC.O,SZO;如果SO鍵按下,  則ACC.0=1,轉去執行顯示數字0,否則順序執行。
  JB ACC.1,SZ1;如果S1鍵按下,  則ACC.1=1,轉去執行顯示數字1,否則順序執行。
  JB ACC.2,SZ 2;如果S2鍵按下,  則ACC.2=1,轉去執行顯示數字2,否則順序執行。
  JB ACC.3,SZ 3;如果S3鍵按下,  則ACC.3=1,轉去執行顯示數字3,否則順序執行。
  JB ACC.4,SZ 4;如果S4鍵按下,  則ACC.4=1,轉去執行顯示數字4,否則順序執行。
  JB ACC.5,SZ 5;如果S5鍵按下,  則ACC.5=1,轉去執行顯示數字5,否則順序執行。
  JB ACC.6,SZ 6;如果S6鍵按下,  則ACC.6=1,轉去執行顯示數字6,否則順序執行。
  JB ACC.7,SZ 7;如果S7鍵按下,  則ACC.7=1,轉去執行顯示數字7,否則順序執行。
  LJMP SAOMJAO;跳轉到 SAOMJAO處繼續掃描。
  SZO:MOVPO,#3FH;顯示數字0。
  LJMPSAOMIAO;跳轉到SAOMIAO處繼續掃描按鍵。
  SZ1:MOVPO,#06H;顯示數字1。
  LJMPSAOMIAO;跳轉到SAOMIAO處繼續掃描按鍵。
  S22:MOVPO,#5BH;顯示數字2。
  LJMPSAOMIAO;跳轉到SAOMIAO處繼續掃描按鍵。
  S23:MOVPO,#4FH;顯示數字3。
  LJMPSAOMIAO:跳轉到SAOMIAO處繼續掃描按鍵。
  S24:MOVPO,#66H;顯示數字4。
  LJMPSAOMIAO:跳轉到SAOMIAO處繼續掃描按鍵。
  S25:MOVPO,#6DH;顯示數字5。
  LJMPSAOMIAO:跳轉到SAOMIAO處繼續掃描按鍵。
  S26:MOVPO,#7DH;顯示數字6。
  LJMPSAOMIAO;跳轉到SAOMIAO處繼續掃描按鍵。
  S27:MOVPO,#07H;顯示數字7。
  LJMPSAOMIAO:跳轉到SAOMIAO處繼續掃描按鍵。
DELAY10MS:MOVR7,#20;從(cong) 本行開始,到RET結束,為(wei) 10MS延時去抖子程序。
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
 
  四、製作步驟
  
  第一步:按照電路原理圖,列出器件清單,並購買(mai) 相應的器件材料,正常的價(jia) 格是20元以內(nei) 。
  第二步:焊接成電路板,具體(ti) 步驟可以參考前麵幾期的文章。
  第三步:使用Keil C51 uVision2編輯源程序,編譯源代碼並生成目標程序代碼。再把目標程序代碼通過編程器寫(xie) 入到單片機芯片中。
  第四步:把單片機芯片插到“八路鍵控數碼管電路”的緊鎖坐上,並通電、測試、觀察結果。按下SO到S7號按鍵時,數碼管顯示立刻顯示數字0到7。如果同時按下2個(ge) 按鍵,隻會(hui) 顯示編號小的數字。例如:如同時按下S5和S6,隻會(hui) 顯示按鍵編號為(wei) S5對應的數字“5”,而不會(hui) 顯示數字“6”。
  本功能的實現是為(wei) 了以後我們(men) 製作八路搶答器,實踐當中不會(hui) 出現同時按下多個(ge) 按鍵的可能性,總會(hui) 有時間差異的。
 

Tags:單片機,PO口,P2口,八路鍵控數碼管  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁麵
    下到頁底
    晶體管查詢