在單片機(jī)應(yīng)用系統(tǒng)中,顯示器顯示常用兩種方法:靜態(tài)顯示和動(dòng)態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個(gè)顯示器都要占用單獨(dú)的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種方法單片機(jī)中CPU的開銷小?梢蕴峁﹩为(dú)鎖存的I/O接口電路很多,這里以常用的串并轉(zhuǎn)換電路74LS164為例,介紹一種常用靜態(tài)顯示電路,以使大家對(duì)靜態(tài)顯示有一定的了解。
MCS-51單片機(jī)串行口方式0為移位寄存器方式,外接6片 74LS164作為6位LED顯示器的靜態(tài)顯示接口,把8031的RXD作為數(shù)據(jù)輸出線,TXD作為移位時(shí)鐘脈沖。74LS164為TTL單向8位移位寄存器,可實(shí)現(xiàn)串行輸入,并行輸出。其中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個(gè)引腳按邏輯與運(yùn)算規(guī)律輸入信號(hào),共一個(gè)輸入信號(hào)時(shí)可并接。T(第8腳)為時(shí)鐘輸入端,可連接到串行口的TXD端。每一個(gè)時(shí)鐘信號(hào)的上升沿加到T端時(shí),移位寄存器移一位,8個(gè)時(shí)鐘脈沖過后,8位二進(jìn)制數(shù)全部移入74LS164 中。R(第9腳)為復(fù)位端,當(dāng)R=0時(shí),移位寄存器各位復(fù)0,只有當(dāng)R=1時(shí),時(shí)鐘脈沖才起作用。Q1…Q8(第3-6和10-13引腳)并行輸出端分別接LED顯示器的hg···a各段對(duì)應(yīng)的引腳上。在給出了8個(gè)脈沖后,最先進(jìn)入74LS164的第一個(gè)數(shù)據(jù)到達(dá)了最高位,然后再來一個(gè)脈沖會(huì)有什么發(fā)生呢?再來一個(gè)脈沖,第一個(gè)脈沖就會(huì)從最高位移出,搞清了這一點(diǎn),下面讓我們來看電路,6片7LS164首尾相串,而時(shí)鐘端則接在一起,這樣,當(dāng)輸入8個(gè)脈沖時(shí),從單片機(jī)RXD端輸出的數(shù)據(jù)就進(jìn)入到了第一片74LS164中了,而當(dāng)?shù)诙䝼(gè)8個(gè)脈沖到來后,這個(gè)數(shù)據(jù)就進(jìn)入了第二片74LS164,而新的數(shù)據(jù)則進(jìn)入了第一片74LS164,這樣,當(dāng)?shù)诹鶄(gè)8個(gè)脈沖完成后,首次送出的數(shù)據(jù)被送到了最左面的164中,其他數(shù)據(jù)依次出現(xiàn)在第一、二、三、四、五片 74LS164中。
驅(qū)動(dòng)程序:
入口:把要顯示的數(shù)分別放在顯示緩沖區(qū)60H-65H共6個(gè)單元中,并且分別對(duì)應(yīng)各個(gè)數(shù)碼管LED0-LED5。 出口:將預(yù)置在顯示緩沖區(qū)中的6個(gè)數(shù)成相應(yīng)的顯示字形碼,然后輸出到顯示器中顯示。 顯示程序如下:
DISP: MOV SCON,#00H ;初始化串行口方式
MOV R1,#06H ;顯示6位數(shù)
MOV R0,#65H ;60H-65H為顯示緩沖區(qū)
MOV DPTR,#SEGTAB ;字形表的入口地址
LOOP:
MOV A,@R0 ;取最高位的待顯示數(shù)據(jù)
MOVC A,@A+DPTR ;查表獲取字形碼
MOV SBUF,A ;送串口顯示
DELAY: JNB TI,DELAY ;等待發(fā)送完畢
CLR TI ;清發(fā)送標(biāo)志
DEC R0 ;指針下移一位,準(zhǔn)備取下一個(gè)待顯示數(shù)
DJNZ R1,LOOP ;直到6個(gè)數(shù)據(jù)全顯示完。
RET
SETTAB: ;字形表
DB 03H 9FH 27H 0DH 99H 49H 41H 1FH 01H 09H 0FFH
; 0 1 2 3 4 5 6 7 8 9 消隱碼
測(cè)試用主程序
ORG 0000H
AJMP START
ORG 30H
START: MOV SP,#6FH
MOV 65H,#0
MOV 64H,#1
MOV 63H,#2
MOV 62H,#3
MOV 61H,#4
MOV 60H,#5
LCALL DISP
SJMP $
如果按圖示數(shù)碼管排列,則以上主程序?qū)@示的是543210,想想看,如果要顯示012345該怎樣送數(shù)? 你們只接了一個(gè)數(shù)碼管,想想應(yīng)該很容易吧。 74LS165 是一個(gè)8位并入串出的移位寄存器,原理一樣。
|