74LS164擴(kuò)展的8位LED串行顯示接口電路(一)
硬件部分包括89C52芯片、74LS164芯片、8位數(shù)碼管、電阻、電容等。其中89C52芯片功能為:8K字節(jié)FLASH閃速存儲器,256字節(jié)內(nèi)部RAM,32個I/O口線,3個16位定時/計數(shù)器,一個全雙工串行通訊口,振蕩器及時鐘電路;74LS164功能為:作八位串行入/并行輸出移位寄存器用;數(shù)碼管作用為:顯示數(shù)字結(jié)果。
本實驗顯示的結(jié)果是12345678。利用89C52和74LS164擴(kuò)展8位LED數(shù)碼管顯示,74LS164是將串行輸入轉(zhuǎn)換成并行輸出,用來選擇數(shù)碼管的段顯示,89C51的P2口是用對數(shù)碼管的位選,從而驅(qū)動數(shù)碼管按照程序的指令進(jìn)行顯示。
流程圖設(shè)計
74LS164擴(kuò)展的8位LED串行顯示接口電路(二)
74LS164是串行輸入并行輸出的移位寄存器,每接一片74LS164可擴(kuò)展一個8位并行輸出口,可以作為LED顯示器的8根段選線。實物如圖3-1所示。系統(tǒng)總電路原理圖如圖3-2,為89C52單片機(jī)最小系統(tǒng)與8位數(shù)碼管的連接圖,分別用8個74LS164和8個LED數(shù)碼管。部分硬件電路原理圖如圖3-3所示。
圖3-1 電路連接實物圖
圖3-2 總電路原理圖
圖3-3 部分硬件電路原理圖
數(shù)碼管中有8段LED數(shù)碼管顯示器由8個發(fā)光二極管組成。LED數(shù)碼管顯示器有兩種不一樣的形式:一種是8個發(fā)光二極管的陽極都連在一起的,稱之為共陽極LED數(shù)碼管顯示器;另一種是8個發(fā)光二極管的陰極都連在一起的,稱之為共陰極LED數(shù)碼管顯示器。本次設(shè)計采用共陽極LED數(shù)碼管。
在單片機(jī)應(yīng)用系統(tǒng)中,數(shù)碼管顯示器顯示常用兩種辦法:靜態(tài)顯示和動態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個數(shù)碼管顯示器都要占用單獨的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼,因此,使用這種辦法單片機(jī)中CPU的開銷小。
89C52單片機(jī)外接8片74LS164作為8位LED數(shù)碼管顯示器的靜態(tài)顯示接口,把89C52的RXD作為數(shù)據(jù)輸出線,TXD作為移位時鐘脈沖。
流程圖設(shè)計
由流程圖可知設(shè)置好串口的工作方式,用定時器T1產(chǎn)生波特率,依次傳遞30H到37H八個數(shù)依次傳遞到數(shù)碼管。
程序
#include 《reg52.h》
#include 《absacc.h》
#define uchar unsigned char
#define uint unsigned int
#define a0 DBYTE[0X30]=0x02
#define a1 DBYTE[0X31]=0x00
#define a2 DBYTE[0X32]=0x01
#define a3 DBYTE[0X33]=0x06
#define a4 DBYTE[0X34]=0x00
#define a5 DBYTE[0X35]=0x06
#define a6 DBYTE[0X36]=0x03
#define a7 DBYTE[0X37]=0x00
uchar ledCode[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
void delay(uint t)
{
uint j;
for(;t》0;t--)
for (j=6245;j》0;j--)
{;}
}
main()
{
SCON=0x00;
TMOD=0x10;
TH1=0x39;
TL1=0x16;
TR1=1;
ET1=1;
EA=1;
delay(50);
SBUF=ledCode[a0];
delay(50);
while(TI==0)
{
}
TI=0;
SBUF=ledCode[a1];
delay(50);
while(TI==0)
{
}
TI=0;
SBUF=ledCode[a2];
delay(50);
while(TI==0)
{
}
TI=0;
SBUF=ledCode[a3];
delay(50);
while(TI==0)
{
}
TI=0;
SBUF=ledCode[a4];
while(TI==0)
{
}
TI=0;
delay(50);
SBUF=ledCode[a5];
while(TI==0)
{
}
TI=0;
delay(50);
SBUF=ledCode[a6];
while(TI==0)
{
}
TI=0;
delay(50);
SBUF=ledCode[a7];
while(TI==0)
{
}
TI=0;
delay(50);
}
實驗結(jié)果如圖,30H-37H單元的八位數(shù)據(jù)為20160630。
74LS164擴(kuò)展的8位LED串行顯示接口電路(三)
74LS164是串行輸入并行輸出的移位寄存器,每接一片74LS164可擴(kuò)展一個8位并行輸出口,可以作為LED顯示器的8根段選線。
下圖中擴(kuò)展了8位LED顯示器,分別用4個74LS164作為4個LED的段選輸入。
使用說明
8段LED數(shù)碼管顯示器由8個發(fā)光二極管組成。其中7個長條形的發(fā)光管排列成“日”字形,另一個點形的發(fā)光管在數(shù)碼管顯示器的右下角作為顯示小數(shù)點用,它能顯示各種數(shù)字及部份英文字母。LED數(shù)碼管顯示器有兩種不一樣的形式:一種是8個發(fā)光二極管的陽極都連在一起的,稱之為共陽極LED數(shù)碼管顯示器;另一種是8個發(fā)光二極管的陰極都連在一起的,稱之為共陰極LED數(shù)碼管顯示器。
在單片機(jī)應(yīng)用系統(tǒng)中,數(shù)碼管顯示器顯示常用兩種辦法:靜態(tài)顯示和動態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個數(shù)碼管顯示器都要占用單獨的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼,因此,使用這種辦法單片機(jī)中CPU的開銷小。能供給單獨鎖存的I/O接口電路很多,這里是常用的串并轉(zhuǎn)換電路74LS164,介紹常用的靜態(tài)共陰極顯示電路。
80C51單片機(jī)外接4片74LS164作為8位LED數(shù)碼管顯示器的靜態(tài)顯示接口,把80C51的RXD作為數(shù)據(jù)輸出線,TXD作為移位時鐘脈沖。74LS164為TTL單向8位移位寄存器,可實現(xiàn)串行輸入,并行輸出。其中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個管腳按邏輯與運算規(guī)律輸入信號,公用一個輸入信號時可并接。T(第8腳)為時鐘輸入端,可連接到串行口的TXD端。每一個時鐘信號的上升沿加到T端時,移位寄存器移一位,8個時鐘脈沖過后,8位二進(jìn)制數(shù)全部移入74LS164中。R(第9腳)為復(fù)位端,當(dāng)R=0時,移位寄存器各位復(fù)0,只有當(dāng)R=1時,時鐘脈沖才起作用。Q1…Q8(第3-6和10-13管腳)并行輸出端分別接LED數(shù)碼管顯示器各段對應(yīng)的管腳上。在74LS164獲得時鐘脈沖的瞬間,如果數(shù)據(jù)輸入端(第1,2管腳)是高電平,則就會有一個1進(jìn)入到74LS164的內(nèi)部,如果數(shù)據(jù)輸入端是低電平,則就會有一個0進(jìn)入其內(nèi)部。在給出了8個脈沖后,最先進(jìn)入74LS164的第一個數(shù)據(jù)到達(dá)了最高位,然后再來一個脈沖,第一個脈沖就會從最高位移出。
對于電路,4片7LS164首尾相串,而時鐘端則接在一起,這樣,當(dāng)輸入1個脈沖時,從單片機(jī)RXD端輸出的數(shù)據(jù)就進(jìn)入到了第一片74LS164中了,而當(dāng)?shù)?個脈沖到來后,這個數(shù)據(jù)就進(jìn)入了第二片74LS164,而新的數(shù)據(jù)則進(jìn)入了第一片74LS164,這樣,當(dāng)?shù)?個脈沖完成后,首次送出的數(shù)據(jù)被送到了最后面的74LS164中,其他數(shù)據(jù)依次出現(xiàn)在第一、二、三片74LS164中。在第一個脈沖到來時,除了第一片74LS164中接收數(shù)據(jù)外,其他的也在接收數(shù)據(jù),因為它們的時鐘端都是被接在一起的。
流程圖設(shè)計
評論