• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 光電顯示 > 設計應用 > 串行接口LED數碼管及鍵盤管理器件ZLG7289A的原理與應用

    串行接口LED數碼管及鍵盤管理器件ZLG7289A的原理與應用

    作者: 時間:2004-12-08 來源:網絡 收藏

    摘要:介紹了。該芯片具有SPI串行,可同時驅動8位共陰式管(或64只獨立),還可連接多達64鍵的矩陣,單塊芯片即可完成LED顯示、等全部功能。文章給出了的特點、引腳功能、指令說明和經典電路,并以單片機AT89C51為例,給出了其電路及相應源程序。

    關鍵詞:顯示;鍵盤接口;SPI

    1 概述

    ZLG7289A是廣州周立功單片機發展有限公司自行設計的、具有SPI串行接口功能的、可同時驅動8位共陰式管(或64只獨立LED)的智能顯示驅動芯片。該芯片同時可連接多達64鍵的鍵盤矩陣。單塊芯片即可完成LED顯示以及鍵盤接口的全部功能。

    ZLG7289A內部含有譯碼器,可直接接收BCD碼或16進制碼,并同時具有2種譯碼方式,此外還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。

    通過ZLG7289A自身所具有的片選信號,可以方便地實現多于8 位顯示或多于64 鍵的鍵盤接口。該芯片的主要特性如下:

    ●帶有串行接口,無需外圍元件即可直接驅動LED;

    ●各位可獨立控制譯碼/不譯碼及消隱和閃爍屬性;

    ●具有(循環)左移/(循環)右移指令;

    ●具有段尋址指令,可方便地控制獨立的LED顯示器;

    ●內含64鍵鍵盤控制器以及去抖動電路;

    ●可完全替代其它公司的8279、8155、8255等系列顯示

    2 引腳說明

    ZLG7289A芯片具有標準的DIP28和SOIC28兩種封裝形式。其引腳排列如圖1所示,各引腳的功能說明見表1所列。

    表1 ZLG7289A引腳功能說明

    引 腳名 稱說 明
    1,2VDD正電源
    3,5NC不連接,必須懸空
    4VSS接地
    6CS片選輸入。此腳為低電平時,可向芯片發送指令及讀取鍵盤數據
    7CLK同步時鐘輸入端。向芯片發送數據及讀取鍵盤數據時,此引腳電平上升沿表示數據有效
    8DATA串行數據輸入/輸出端。當芯片接收指令時,此引腳為輸入端;當讀取鍵盤數據時,此引腳在讀指令最后一個時鐘的下降沿變為輸出端。
    9KEY按鍵有效輸出端。平時為高電平,當檢測到有效按鍵時,此引腳變為低電平
    10~16SG~SA段ga驅動輸出
    17DP小數點驅動輸出
    18~25DIG0~DIG7數字0~7驅動輸出
    26CLKOUT振蕩輸出端
    27RCRC振蕩器連接端
    28RESET復位端。低電平有效,當RESET端由低電平變為高電平后,ZLG7289A大約經過18~25ms的時間才會進入正常工作狀態

    3 控制指令說明

    ZLG7289A 的控制指令分為二大類:純指令和帶有數據的指令。

    3.1 純指令

    純指令包括復位(清除)指令(0A4H)、測試指令(0BFH)、左移指令(0A1H)、 右移指令(0A0H)、 循環左移指令(0A3H)、 循環右移指令(0A2H)等。下面以復位(清除)指令(0A4H)為例來進行說明,該指令的格式如下:

    D7D6D5D4D3D2D1D0
    10100100

    當ZLG7289A 接收到該指令后,將所有的顯示清除,所有設置的字符消隱、閃爍等屬性也被一起清除。執行該指令后,芯片所處的狀態與系統上電后所處的狀態一樣。

    3.2 帶有數據的指令

    (1)下載數據且按方式0譯碼指令

    該指令的格式如下:

    D7D6D5D4D3D2D1D0
    10000a2a1a0
    D7D6D5D4D3D2D1D0
    DPXXXd3d2d0d1

    該命令由二個字節組成。前半部分為指令,其中a2 a1 a0 為位地址,d0~d3為數據。具體分配方式如表2所列。當系統接收到此指令時(ZLG7289A將按譯碼方式0進行譯碼)具體的譯碼方式如表3所列。小數點的顯示可由DP位控制,DP為1時,小數點顯示,DP為0時,小數點不顯示。在該指令格式中,x表示沒有影響。

    表2 位地址分配表

    a2a1a0顯示位
    0001
    0012
    0103
    0114
    1005
    1016
    1107
    1118

    表3 譯碼方式表

    d0~d3d3d2d1d07段顯示
    00H00000
    01H00111
    02H00002
    03H00113
    04H01004
    05H01015
    06H01106
    07H01117
    08H10008
    09H10019
    0AH1010-
    0BH1011E
    0CH1100H
    0DH1101L
    0EH1110P
    0FH1111空無顯示

    (2)下載數據且按方式1譯碼指令

    這種指令與上一個指令基本相同。所不同的是,該指令的d0~d3對應的數據位0AH~0FH分別為七段顯示中的A、B、C、D、E、F。該指令的具體格式如下:

    D7D6D5D4D3D2D1D0
    11001a2a1a0
    D7D6D5D4D3D2D1D0
    DPXXXd3d2d0d1

    (3) 讀鍵盤數據指令

    該指令從ZLG7289A讀出當前的按鍵代碼,格式如下:

    D7D6D5D4D3D2D1D0
    00010101
    D7D6D5D4D3D2D1D0
    d7d6d5d4d3d2d0d1

    與其它指令不同的是,此命令的前一個字節0001010B 為單片機傳送到ZLG7289A的指令,而后一個字節d0~d7則為ZLG7289A返回的按鍵代碼。 其范圍為0~3FH(無鍵按下時為0xFF)。在此指令的前半段,ZLG7289A 的DATA 引腳處于高阻輸入狀態,可以用來接收來自微處理器的指令;在指令的后半段,DATA 引腳從輸入狀態轉為輸出狀態,此時將輸出鍵盤代碼的值。故微處理器連接到DATA 引腳的I/O口應當有一個從輸出態到輸入態的轉換過程。

    當ZLG7289A檢測到有效的按鍵時,KEY 腳將從高電平變為低電平,并一直保持到按鍵結束。在此期間,如果ZLG7289A 接收到“讀鍵盤數據指令”,則輸出當前按鍵的鍵盤代碼;如果在接收到“讀鍵盤數據指令”時沒有有效按鍵,ZLG7289A將輸出FFH(11111111B)。

    (4)其它指令

    除以上幾個指令外,ZLG7289A還具有下載數據但不譯碼、閃爍控制、消隱控制、段點亮指令、段關閉等指令,限于篇幅,此處不再詳述。

    圖2

    4 典型

    ZLG7289A 的典型電路如圖2所示,圖中,ZLG7289A 應連接共陰式數碼管,應用中無需用到的數碼管和鍵盤可以不連接,因而可省去數碼管。此外,設置消隱屬性也不會影響鍵盤的使用。

    由于ZLG7289采用的是循環掃描的工作方式,因此,如果采用普通的數碼管,亮度可能不夠,故應采用高亮度或超高亮度的數碼管,且尺寸也不宜選的過大,一般字符高度不超過1 英寸,如使用大型的數碼管,則應選用適當的驅動電路。

    ZLG7289A的RESET復位端在一般情況下,可以直接和VCC相連;而在需要較高可靠性的情況下,則可以連接外部復位電路或直接由MCU 控制。在上電或RESET 端由低電平變為高電平后,通常要經過大約18~25ms的時間,ZLG7289A才會進入正常工作狀態。

    圖3

    5 應用實例

    圖3是以AT89C51單片機為例給出的ZLG7289A與單片機的接口電路。圖中,AT89C51所用時鐘頻率為12MHz?如果使用不同的CPU時鐘頻率,則應注意調整延時時間。下面給出的是該系統的部分程序:

    ;*****************RAM定義

    BIT_COUNT DATA 07FH

    TIMER DATA 07EH

    TIMER1 DATA 07DH

    TEN DATA 07CH

    DATA_IN DATA 020H

    DATA_OUT DATA 021H

    ;**************I/O定義

    DAT BIT P0.6 ;ZLG8279A的 DATA,連接AT89C51的P0.6

    KEY BIT P0.7 ?; ZLG8279A的KEY,連接AT89C51的P0.7

    CS BIT P0.4 ?; ZLG8279A的CS,連接AT89C51的P0.4

    CLK BIT P0.5 ?; ZLG8279A的CLK,連接AT89C51的P0.5

    ORG 0000H

    AJMP START

    ORG 0030H

    START:MOV SP,#2FH ?;堆棧定義

    MOV P1,#11011011B ?;I/O初始化

    MOV TIMER,#50 ? ;25ms定時

    START_DELAY: MOV TIMER1,#255

    START_DELAY1: DJNZ TIMER1,START_DELAY1

    DJNZ TIMER,START_DELAY

    MOV DATA_OUT,#10100100B ?;復位指令

    CALL SEND ;發指令到ZLG8279A

    SETB CS ?;恢復CS高電平

    MAIN:JB KEY,MAIN ?;是否有鍵按下

    MOV DATA_OUT,#00010101B ? ;有鍵按下,發讀鍵盤指令

    CALL SEND

    CALL RECEIVE

    SETB CS ? ;CS置高電平

    MOV B,#10 ?;16進制到BCD碼轉換

    MOV A,DATA_IN

    DIV AB

    MOV TEN,A

    MOV DATA_OUT,#10100001B ?;左移指令

    CALL SEND

    MOV DATA_OUT,#10100001B

    CALL SEND

    MOV DATA_OUT,#10000001B ;下載數據且譯碼指令

    CALL SEND

    MOV DATA_OUT,TEN ?;發送十位數字到ZLG8279A

    CALL SEND

    MOV DATA_OUT,#10000000B ;下載數據且譯碼指令

    CALL SEND

    MOV DATA_OUT,B ?;發送個位數字到ZLG8279A;

    CALL SEND

    SETB CS

    WAIT:JNB KEY,WAIT ?;等待按鍵松開

    JMP MAIN

    ;**** 發送一個字節到ZLG8279A,高位在前

    SEND: MOV BIT_COUNT,#8 ?;記數器設定

    CLR CS ? ;CS置低電平

    CALL LONG_DELAY ;長延時子程序

    SEND_LOOP:MOV C,DATA OUT.7 ;輸出1位

    MOV DAT,C

    SETB CLK ?;CLK置高電平

    MOV A,DATA_OUT ;待發送數據左移

    RL A

    MOV DATA_OUT,A

    CALL SHORT_DELAY ?; 短延時子程序

    CLR CLK ?; CLK置低電平

    CALL SHORT_DELAY

    DJNZ BIT_COUNT,SEND_LOOP ;8位是否發送完畢

    CLR DAT ?;發送完畢,返回

    RET

    ;***接收一個字節到ZLG8279A,高位在前

    RECEIVE:MOV BIT_COUNT,#8 ;記數器設定

    SETB DAT ?;設定P1.2(DATA)為高電平輸入狀態

    CALL LONG_DELAY ;

    RECEIVE_LOOP: SETB CLK ?; CLK置高電平

    CALL SHORT_DELAY

    MOV A,DATA_IN ?;數據左移

    RL A

    MOV DATA_IN,A

    MOV C,DAT ;讀取一位數據

    MOV DATA_IN.0,C

    CLR CLK

    CALL SHORT_DELAY

    DJNZ BIT_COUNT,RECEIVE_LOOP ?; 8位是否接收完畢

    CLR DAT ; 重設DAT口為低電平(輸出狀態)

    RET

    ;**************延時子程序

    LONG_DELAY: MOV TIMER,#25 ;設定延時時間為50μs

    DELAY_LOOP: DJNZ TIMER,DELAY_LOOP

    RET

    SHORT_DELAY:MOV TIMER,#4 ;設定延時時間為50μs

    SHORT_LP: DJNZ TIMER,SHORT_LP

    RET

    END

    6 結束語

    ZLG8279A具有的特點和豐富的指令系統,使得由其組成的LED顯示和鍵盤電路具有外圍電路簡單,功能強大,使用方便,可靠性高,與MCU接口簡單等特點,是LED顯示和鍵盤電路的首選。筆者利用該芯片制作的“學生提問指示儀”,經使用,效果良好。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 呼玛县| 杭州市| 沾益县| 崇阳县| 延津县| 榆社县| 镇坪县| 汾阳市| 常宁市| 宝山区| 剑川县| 永和县| 驻马店市| 博兴县| 樟树市| 葵青区| 靖远县| 马关县| 独山县| 长岭县| 阿瓦提县| 治县。| 泽州县| 绥滨县| 彝良县| 莱芜市| 象山县| 介休市| 莱阳市| 方正县| 察隅县| 竹山县| 奉节县| 大连市| 墨竹工卡县| 盘锦市| 双流县| 吉林市| 鄯善县| 科技| 大荔县|