串行接口LED數(shù)碼管及鍵盤管理ZLG7289A的原理與應(yīng)用
MOV DATA_OUT,#10100001B
CALL SEND
MOV DATA_OUT,#10000001B ;下載數(shù)據(jù)且譯碼指令
CALL SEND
MOV DATA_OUT,TEN ;發(fā)送十位數(shù)字到ZLG8279A
CALL SEND
MOV DATA_OUT,#10000000B ;下載數(shù)據(jù)且譯碼指令
CALL SEND
MOV DATA_OUT,B ;發(fā)送個(gè)位數(shù)字到ZLG8279A;
CALL SEND
SETB CS
WAIT:JNB KEY,WAIT ;等待按鍵松開
JMP MAIN
;**** 發(fā)送一個(gè)字節(jié)到ZLG8279A,高位在前
SEND: MOV BIT_COUNT,#8 ;記數(shù)器設(shè)定
CLR CS ;CS置低電平
CALL LONG_DELAY ;長延時(shí)子程序
SEND_LOOP:MOV C,DATA OUT.7 ;輸出1位
MOV DAT,C
SETB CLK ;CLK置高電平
MOV A,DATA_OUT ;待發(fā)送數(shù)據(jù)左移
RL A
MOV DATA_OUT,A
CALL SHORT_DELAY ; 短延時(shí)子程序
CLR CLK ; CLK置低電平
CALL SHORT_DELAY
DJNZ BIT_COUNT,SEND_LOOP ;8位是否發(fā)送完畢
CLR DAT ;發(fā)送完畢,返回
RET
;***接收一個(gè)字節(jié)到ZLG8279A,高位在前
RECEIVE:MOV BIT_COUNT,#8 ;記數(shù)器設(shè)定
SETB DAT ;設(shè)定P1.2(DATA)為高電平輸入狀態(tài)
CALL LONG_DELAY ;
RECEIVE_LOOP: SETB CLK ; CLK置高電平
CALL SHORT_DELAY
MOV A,DATA_IN ;數(shù)據(jù)左移
RL A
MOV DATA_IN,A
MOV C,DAT ;讀取一位數(shù)據(jù)
MOV DATA_IN.0,C
CLR CLK
CALL SHORT_DELAY
DJNZ BIT_COUNT,RECEIVE_LOOP ; 8位是否接收完畢
CLR DAT ; 重設(shè)DAT口為低電平(輸出狀態(tài))
RET
;**************延時(shí)子程序
LONG_DELAY: MOV TIMER,#25 ;設(shè)定延時(shí)時(shí)間為50μs
DELAY_LOOP: DJNZ TIMER,DELAY_LOOP
RET
SHORT_DELAY:MOV TIMER,#4 ;設(shè)定延時(shí)時(shí)間為50μs
SHORT_LP: DJNZ TIMER,SHORT_LP
RET
END
6 結(jié)束語
ZLG8279A具有的特點(diǎn)和豐富的指令系統(tǒng),使得由其組成的LED顯示和鍵盤電路具有外圍電路簡單,功能強(qiáng)大,使用方便,可靠性高,與MCU接口簡單等特點(diǎn),是LED顯示和鍵盤電路的首選器件。筆者利用該芯片制作的“學(xué)生提問指示儀”,經(jīng)使用,效果良好。
評論