AT89C51單片機高速串行輸出口設計
AT89C51(與MCS-51兼容)單片機的串行口在方式0工作狀態下,使用移位寄存器芯片可以擴展多個8位并行I/O口。在LED點陣顯示屏應用系統中,一般都采用數據同步移位輸出方式,并使用移位寄存器芯片(如74LS595)擴展并行I/O口驅動LED點陣顯示。LED 點陣顯示采用掃描方式,為不產生閃爍感,每秒需要傳送50屏點陣顯示數據,因此有大量的數據要通過同步移位的方式送到顯示驅動電路部分,這就要求單片機能夠快速地輸出數據。AT89C51單片機的串行口在方式0工作狀態下,數據以fosc/12的波特率輸出,1個字節數據寫入SBUF后,需檢查中斷標志位 TI是否為“1”并清“0”TI或延時幾個機器周期后才能繼續寫入了一個數據,輸出速度慢。在LED點陣顯示屏應用系統中,系統與PC機之間的通訊需要使用單片機的串行口,顯示數據的同步移位輸出口只有另外擴展。本文介紹的高速串行同步移位輸出口(以下簡稱擴展串行口)電路,采用模塊化設計,給出基于 TTL和PLD兩種電路的實現方案,波特率提高到fosc,數據輸出不需要等待或延時。
本文引用地址:http://www.j9360.com/article/171685.htm一、擴展串行口與單片機的連接
擴展串行口電路框圖如圖1所示。與并行存儲器芯片類似,擴展串行口被視為一個外部RAM地址單元,直接掛接在AT89C51的外部數據總線上,D0~D7為數據線,CE為片選信號,WE為寫脈沖信號,也是擴展串行口的輸出控制信號。AT89C51 外接晶體振蕩器的振蕩信號經二個與非門整形后為擴展串行口提供時鐘脈沖XTAL2。DAT和CLK分別是擴展串行口的數據輸出端和同步移位脈沖輸出端。
二、操作指令
假設AT89C51分配給擴展串行口的地址是0000H,使用MOVX@DPTR,A或MOVX@R0,A指令將數據寫入擴展串行口并移位數據。下面的程序段將內部RAM數據區首址為30H的32字節數據送擴展串行口同步移位輸出:
MOV P2,#00H ;設置擴展串行口地址高8位
MOV R1,#30H ;設置內部RAM數據區首址
MOV R7,#32 ;輸出字節個數
LOOP:MOV A,@R1 ;從內部RAM數據區讀入1字節
INC R1 ;指向內部RAM數據區下一個地址單元
MOVX @R0,A ;數據送擴展串行口輸出
DJNZ R7,LOOP ;32字節未送完繼續
RET
三、基于TTL電路的設計方案和工作原理
圖2是用TTL電路實現的擴展串行口電路。74LS74是有預置、清零功能的雙上升沿D觸發器,D1~D5構成8脈沖發生器(計數器原理),74LS165是8位并行輸入串行輸出移位寄存器。CPU執行MOVX@R0,A(或MOVX @DPTR,A)指令時,數據被鎖存在74LS165中。產生8脈沖信號的時序如圖3所示。圖3中,Q0~Q5分別是6個D觸發器的輸出端,擴展串行口片選有效(CE=0),寫脈沖WE到來時,WR=0,在時鐘脈沖XTAL2的上升沿觸發器D0的輸出Q0=0,Q0復位Q5,使Q5=1;寫脈沖結束后,WR=1,則WR·Q5=1,計數器的復位端無效,計數器開始計數,同時在Q1端輸出方波脈沖;第8個脈沖結束后,Q5=1,則WR·Q5=0,計數器被復位,停止計數,等待下一個寫脈沖。Q1端輸出的8個脈沖作為同步移位脈沖接74LS165的CLK2(15腳),同時也是擴展串行輸出口的同步移位脈沖輸出信號:由MOVX指令鎖存在74LS165中的數據在同步移位脈沖(CLK)的作用下,從擴展串行輸出口的數據端(DAT)輸出。
51單片機相關文章:51單片機教程
評論