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