74ls164聯(lián)級應(yīng)用電路:串口連接兩個74LS164驅(qū)動2個LED
數(shù)碼管顯示
單片機(jī)的最小系統(tǒng)是單片機(jī)能夠工作的最小硬件組合,對于8051系列單片機(jī),其電路的最小系統(tǒng)大致相同,主要包括電源、晶體振蕩電路、復(fù)位電路等。
串口
數(shù)據(jù)通信方式包括并行通信和串行通信兩種。并行通信就是多條數(shù)據(jù)線上同時傳送,其優(yōu)點(diǎn):速度快,只適于近距離通信。串行通信就是數(shù)據(jù)以為以為的順序傳送,其優(yōu)點(diǎn):線路簡單,成本低,適合遠(yuǎn)距離通信。
串行通信方式包括:異步串行通信和同步串行通信。異步方式,數(shù)據(jù)傳送不連續(xù),時間間隔任意。同步方式,發(fā)送與接收同步。數(shù)據(jù)傳送方式:單工、半雙工、全雙工、多工。常見的串行通訊有:RS-232、RS-485、CAN總線等。
串行口控制寄存器包括:串行口控制寄存器SCON(控制工作方式)、電源控制寄存器PCON(控制波特率)。SM0、SM1選擇工作方式,SM2用于多機(jī)通信,REN允許接收控制位,TB8/RB8發(fā)送/接收數(shù)據(jù)D8位,TI/RI為發(fā)送/接收中斷標(biāo)志位。
74LS164
串行口工作于方式0,發(fā)送數(shù)據(jù)時,是把串行端口設(shè)置成“串入并出的”輸出口。將它設(shè)置為“串入并出”輸出口時,需外接1片“串入并出”同步移位芯片74LS164或CD4094,本次設(shè)計,用74LS164。
74LS164是8位邊沿觸發(fā)式移位寄存器,具有DIP、SO14等多種封裝形式。其DIP封裝形式如上圖所示。
數(shù)據(jù)通過A或B之一串行輸入,任一輸入端可以用作高電平使能端控制另一輸入端的數(shù)據(jù)輸入,兩個輸入端或者連接在一起,或者把不用的輸入端接高電平,一定不要懸空。時鐘CP每次由低變高時,數(shù)據(jù)右移一位輸入到Q0。Q0是兩個數(shù)據(jù)輸入端A和B的邏輯與。
輸入的數(shù)據(jù)在Q0輸出,并依次右移在其它輸出端口輸出。
LED數(shù)碼管
LED數(shù)碼管是單片機(jī)應(yīng)用系統(tǒng)中常用的輸出設(shè)備,其特點(diǎn)結(jié)構(gòu)簡單,價格便宜。單片機(jī)系統(tǒng)常用7段LED數(shù)碼管,由8個發(fā)光二極管構(gòu)成。 LED數(shù)碼管分為共陽極和共陰極兩種。共陽極LED數(shù)碼管,就是8個LED陽極連接在一起再接高電平。共陰極LED數(shù)碼管,就是8個LED陰極連接在一起再接地。通過相應(yīng)的LED顯示,呈現(xiàn)出對應(yīng)的數(shù)字、符號。
‘串入并出’驅(qū)動LED數(shù)碼管顯示
本次設(shè)計,對撥碼開關(guān)進(jìn)行撥動,從而將信息傳遞給單片機(jī),再由單片機(jī)通過串口工作在方式0將數(shù)據(jù)串行輸出給74LS164,由74LS164并行輸出給LED數(shù)碼管,進(jìn)行相應(yīng)的顯示。實(shí)際操作中,撥碼開關(guān)低四位控制一個74LS164驅(qū)動一個LED數(shù)碼管,而撥碼開關(guān)高四位控制另一個74LS164驅(qū)動另一個LED數(shù)碼管,使兩個LED數(shù)碼管獨(dú)立顯示。
本次設(shè)計涉及到,串口工作方式。串口工作于方式0時,其功能為8位移位寄存器,相當(dāng)于I/0口的擴(kuò)展,再連接74LS164芯片既可實(shí)現(xiàn)“串入并出”的功能。使用查表法,將撥碼開關(guān)的2進(jìn)制數(shù)和LED代碼建立一一對應(yīng)關(guān)系,其中用到了一些編程小技巧。設(shè)計中,又遇到另外一個問題,74LS164級聯(lián)問題,我在網(wǎng)上搜尋了一些問題的答案,再看了書上對74LS164的介紹,于是得到了算是一些結(jié)論吧。將74LS164最后一個輸出端,連在另外一個74LS164的A、B之一的數(shù)據(jù)輸入端,就構(gòu)成了級聯(lián)。在程序中每一次循環(huán)向串口緩存器發(fā)送兩次8位數(shù)據(jù),即可實(shí)現(xiàn)兩個LED數(shù)碼管獨(dú)立顯示(0~F)。
系統(tǒng)原理圖設(shè)計
系統(tǒng)所需元器件包括:AT89C51、瓷片電容CAP30pF、晶振CRYSTAL、電阻RES、電解電容22uF、共陽數(shù)碼管7SEG-COM-AN-GRN、撥碼開關(guān)DIPSW_8、74LS164-IEC、總線。系統(tǒng)設(shè)計原理圖如圖3.1所示。
圖3.1 系統(tǒng)設(shè)計原理圖
程序設(shè)計流程圖
程序
#include“reg51.h”
#define uint unsigned int
#define uchar unsigned char
const uchar tab[]={0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0x80,0X90,0X88,
0X83,0XC6,0XA1,0x86,0X8E}; //LED代碼(0~F)
void main(void)
{
uchar i=0; //變量初始化
uchar j=0;
uchar m=0;
uchar k=0;
SCON=0X00; //設(shè)置串口工作方式為方式0
SBUF=0XC0;
while(TI==0);
TI=0;
while(1)
{
while(P1==i); //查詢撥碼開關(guān)是否有變化
i=P1;
j=~i;
m=j&0xf0; //取撥碼開關(guān)高四位
k=j&0x0f; //取撥碼開關(guān)低四位
m=m》》4; //高四位移到低四位建立對應(yīng)關(guān)系
SBUF=tab[k]; //查表賦值
while(TI==0); //判斷是否發(fā)送完畢
TI=0;
SBUF=tab[m]; //查表賦值
while(TI==0); //判斷是否發(fā)送完畢
TI=0;}}
系統(tǒng)仿真結(jié)果圖如圖所示。
評論