74LS165芯片講解:
外接一個同步移位寄存器 74LS165芯片,拓展一個 8 位 并行輸入端口的電路, 可將接在74LS165芯片的8個開關(guān) S0——S7 的狀態(tài) 通過 串行口方式 0 讀到 單片機(jī)內(nèi)。
SH/LD : (一) 控制端
低電平: 74LS165芯片可以并行輸入數(shù)據(jù),且串行輸入口關(guān)閉
高電平: 并行輸入關(guān)閉,串行輸入口打開,可以向 單片機(jī)串行傳送數(shù)據(jù)。
當(dāng) P1.0引腳連接的開關(guān)S合上的時候,可以進(jìn)行 S0-S7的狀態(tài)數(shù)字量的并行輸入。
單片機(jī)采用中斷的方式來對狀態(tài)進(jìn)行讀取,并從 P2 端口通過 LED 顯示輸出。 (也就是對應(yīng)LED 燈點亮)
仿真電路圖:
參考代碼:
1 #include2 #include"intrins.h" 3 #include 4 #define uint16 unsigned int 5 #define uchar8 unsigned char 6 7 uchar8 nRxByte ; 8 9 sbit P1_0=P1^0; 10 sbit P1_1=0x91; 11 12 void delay ( uint16 i) 13 { 14 uchar8 j; 15 for( ; i>0;i--) 16 for(j=0;j<125;j++) ; 17 18 } 19 20 main() 21 { 22 SCON = 0x10; // 這里設(shè)置了 對應(yīng) REN =1, 允許了串行口接受數(shù)據(jù) 23 ES=1; // 允許串行口中斷 24 EA=1; // 允許全局中斷 25 26 for( ; ; ) ; 27 28 } 29 30 void Serial_Port( ) interrupt 4 // 串行口中斷服務(wù)子程序 31 { 32 33 if(P1_0 == 0) // 解釋: P1^0 =0 表示開關(guān)S 按下, 可讀開關(guān) S0~S7 的狀態(tài),如果不按下,就沒法輸入低電平 34 { 35 36 P1_1=0; // 165芯片允許并行讀入開關(guān)的狀態(tài),串行口關(guān)閉 37 delay(10); 38 39 P1_1=1; // 將 開關(guān)的狀態(tài) 串行 讀入到 串口中 40 41 RI=0 ; // 接收中斷標(biāo)志 RI 清 0 42 43 nRxByte = SBUF ; // 開關(guān)狀態(tài)從 SBUF 讀入到 nRxByte 單元 44 45 P2= nRxByte; // 開關(guān)狀態(tài)數(shù)據(jù)送到 P2 端口, 驅(qū)動 發(fā)光二極管 發(fā)光 46 47 } 48 49 }
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634651 -
移位寄存器
+關(guān)注
關(guān)注
3文章
258瀏覽量
22265 -
74LS165
+關(guān)注
關(guān)注
1文章
6瀏覽量
4044
發(fā)布評論請先 登錄
相關(guān)推薦
評論