74LS165芯片講解:
外接一個同步移位寄存器 74LS165芯片,拓展一個 8 位 并行輸入端口的電路, 可將接在74LS165芯片的8個開關 S0——S7 的狀態(tài) 通過 串行口方式 0 讀到 單片機內(nèi)。
SH/LD : (一) 控制端
低電平: 74LS165芯片可以并行輸入數(shù)據(jù),且串行輸入口關閉
高電平: 并行輸入關閉,串行輸入口打開,可以向 單片機串行傳送數(shù)據(jù)。
當 P1.0引腳連接的開關S合上的時候,可以進行 S0-S7的狀態(tài)數(shù)字量的并行輸入。
單片機采用中斷的方式來對狀態(tài)進行讀取,并從 P2 端口通過 LED 顯示輸出。 (也就是對應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; // 這里設置了 對應 REN =1, 允許了串行口接受數(shù)據(jù) 23 ES=1; // 允許串行口中斷 24 EA=1; // 允許全局中斷 25 26 for( ; ; ) ; 27 28 } 29 30 void Serial_Port( ) interrupt 4 // 串行口中斷服務子程序 31 { 32 33 if(P1_0 == 0) // 解釋: P1^0 =0 表示開關S 按下, 可讀開關 S0~S7 的狀態(tài),如果不按下,就沒法輸入低電平 34 { 35 36 P1_1=0; // 165芯片允許并行讀入開關的狀態(tài),串行口關閉 37 delay(10); 38 39 P1_1=1; // 將 開關的狀態(tài) 串行 讀入到 串口中 40 41 RI=0 ; // 接收中斷標志 RI 清 0 42 43 nRxByte = SBUF ; // 開關狀態(tài)從 SBUF 讀入到 nRxByte 單元 44 45 P2= nRxByte; // 開關狀態(tài)數(shù)據(jù)送到 P2 端口, 驅動 發(fā)光二極管 發(fā)光 46 47 } 48 49 }
-
單片機
+關注
關注
6030文章
44489瀏覽量
631978 -
移位寄存器
+關注
關注
2文章
258瀏覽量
22212 -
74LS165
+關注
關注
1文章
6瀏覽量
4029
發(fā)布評論請先 登錄
相關推薦
評論