天天看點

基于proteus的51單片機仿真執行個體七十二、并口轉序列槽器件74HC165應用執行個體(續)

1、本例使用單片機的序列槽,使序列槽工作于移位寄存器模式,165的串行輸出端口連接配接到單片機的串行資料輸入端,單片機的串行資料發送端負責發送移位時鐘脈沖,與165的CLK引腳相連。學要注意的是SH/LD引腳,為高時表示資料開始移位,為低時讀入8位資料。在開始移位之前,需要先從并行輸入端口讀入資料,這時SH/LD端口應置0.這時165的8位資料輸入端口的資料被讀入。然後将SH/LD端置高,鎖存這8位資料,開始移位操作,在TXD端的移位脈沖控制下,8位并行資料逐位串行發送到SO引腳。   2、在keil c51中建立工程ex60,編寫如下程式代碼,編譯并生成ex60.hex檔案 //利用序列槽讀取74HC165的串行輸出資料

#include <reg51.h>   //

#include <intrins.h>   //

sbit SPL = P3^2;   //資料鎖存端口定義 //延時函數

void delay(unsigned int x)

{

  unsigned char i;

 while(x--)

 {

   for(i = 0;i < 120;i++);

 }

} //主函數

void main(void)

{

  SCON = 0x10;  //設為序列槽模式0,允許序列槽接收資料

 while(1)

 {

   SPL = 0;     //鎖存端清0,讀入8位資料

  SPL =1;     //鎖存端置1,鎖存讀入的資料

  while(RI == 0);  // 等待接收中斷标志

  RI = 0;   // 清0中斷标志

  P2 = SBUF;  //接收到的字元送到P2口

  delay(20);  }

}   3、在proteus中建立仿真檔案ex60.dsn,電路原理圖如下所示

基于proteus的51單片機仿真執行個體七十二、并口轉序列槽器件74HC165應用執行個體(續)

4、将ex60.hex檔案載入at89c51中,啟動仿真,按動撥碼開關,觀察運作結果。下圖是某一時刻程式運作結果。

基于proteus的51單片機仿真執行個體七十二、并口轉序列槽器件74HC165應用執行個體(續)

繼續閱讀