I/O口不能完全用于輸入/輸出操作,當(dāng)需要擴(kuò)展外部存儲(chǔ)器時(shí),P0、P2口用作地址總線和數(shù)據(jù)總線,此時(shí)能用的I/O口就只有P1和P3口,如果再使用串行通信,I/O口就不夠使用了,需要擴(kuò)展I/O口
兩種方式:
① 采用普通鎖存器、三態(tài)門等芯片來進(jìn)行簡單的擴(kuò)展(如74LS373或74LS244等)
②采用可編程的I/O芯片來擴(kuò)展(如8255或8155等)
要求:用4個(gè)開關(guān)控制4個(gè)LED的亮滅狀態(tài),其中采用74LS244控制開關(guān)的輸入,采用74LS373控制LED輸出
代碼:
電路圖:
過程分析:
#18 P0=0xff;通過拉高P0口置為1111 1111,即關(guān)閉LED燈;
#19 com=0;對CD4071 U2.A的1和CD4071 U2.B的5輸入一個(gè)0;
#20 rd = 0;對CD4071 U2.A的2輸入一個(gè)0;
由于CD4071的功能是執(zhí)行邏輯或運(yùn)算,1和2分別輸入0,則3輸出0給74LS244的OE口;
74LS244緩沖驅(qū)動(dòng)器的OE為使能端,低電平是有效的,高電平時(shí)輸出為三態(tài),此時(shí)通過CD4071傳給OE低電平,使開關(guān)的電平可以通過74LS244傳入P0;
開關(guān)狀態(tài)傳入P0;
#21 temp = P0;通過定義的unsigned char temp來存放P0的狀態(tài)
#22 rd = 1;對CD4071 U2.A的2輸入一個(gè)1;
1=0;2=1;此時(shí)或門輸出為1;
74LS244的OE端高電平時(shí)輸出為三態(tài),關(guān)閉74LS244
#23 wr = 1;對CD4071 U2.B的6輸入一個(gè)1;
此時(shí)5=0;6=1;CD4071 U2.B的7輸出一個(gè)1;
74LS343的OE為低電平時(shí),用作地址鎖存器;LE為高電平時(shí),輸出Q0-Q7狀態(tài)與D0-D7狀態(tài)相同;當(dāng)LE發(fā)生負(fù)跳變(1->0)時(shí),輸入端的D0-D7鎖入Q0-Q7
#24 P0 = temp;temp中的數(shù)據(jù)存入P0,傳送到74LS343的D端;
#25 wr = 0;對CD4071 U2.B的6輸入一個(gè)0;
此時(shí)5=0;6=0;CD4071 U2.B的7輸出一個(gè)0;
LE的狀態(tài)從1->0,發(fā)生負(fù)跳變,輸出Q0-Q7
LED等接受到開關(guān)的情況,發(fā)生亮滅。
實(shí)驗(yàn)結(jié)果
-
led
+關(guān)注
關(guān)注
242文章
23843瀏覽量
674040 -
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
54文章
8695瀏覽量
149938 -
串行通信
+關(guān)注
關(guān)注
4文章
588瀏覽量
36184
發(fā)布評(píng)論請先 登錄
單片機(jī)I/O口擴(kuò)展及應(yīng)用,下載
CAT9554A IO 口擴(kuò)展芯片
PC并行端口作為數(shù)字I/O口的應(yīng)用

I2C總線在并行口擴(kuò)展方面的應(yīng)用

I2C 總線8 位遠(yuǎn)程I-O 擴(kuò)展口芯片PCF8574 的原

使用擴(kuò)展芯片實(shí)現(xiàn)端口擴(kuò)展的實(shí)例資料合集免費(fèi)下載

I2C并行口擴(kuò)展芯片PCF8574T中文數(shù)據(jù)手冊
51單片機(jī)入門 - 并行I/O口擴(kuò)展實(shí)例(74LS244/74LS373/4071)

并行I/O口

并行口I/O擴(kuò)展芯片CH351技術(shù)手冊

評(píng)論