你是否在設(shè)計(jì)電路時(shí)也曾因?yàn)閱纹瑱C(jī)的IO端口不夠用而煩惱過(guò)?更換引腳多的型號(hào)會(huì)增加成本,不更換又完成不了需求?今天就和大家分享一個(gè)ZLG的TinyHMI,看它是怎么巧妙地將IO口以一當(dāng)十。
TinyHMI是一個(gè)簡(jiǎn)易人機(jī)界面板,它提供了8位顯示數(shù)碼管和8個(gè)輸入按鍵,雖然僅僅使用簡(jiǎn)單的串行接口控制,但足能滿足較復(fù)雜的系統(tǒng)對(duì)人機(jī)界面的需求。其實(shí)TinyHMI之所能如此神奇,其中的奧秘就它的兩片74HC595。74HC595具有8位移位寄存器和一個(gè)存儲(chǔ)器,三態(tài)輸出功能,移位寄存器和存儲(chǔ)器有相互獨(dú)立的時(shí)鐘。移位寄存器有一個(gè)串行移位輸入(DS),一個(gè)串行輸出(Q7’),一個(gè)異步的低電平復(fù)位,存儲(chǔ)寄存器有一個(gè)并行8位的,具備三態(tài)的總線輸出,當(dāng)使能OE時(shí),存儲(chǔ)寄存器的數(shù)據(jù)輸出到總線。
如圖2所示,常規(guī)的方式來(lái)控制8位顯示數(shù)碼管和8個(gè)輸入按鍵需要用到24個(gè)IO端口;但如圖3所示,使用兩片74HC595芯片作為驅(qū)動(dòng)的TinyHMI,僅僅只需要用到4個(gè)IO即可完成同樣的需求。TinyHMI的工作原理是通過(guò)DS和SH-CP,先將要顯示的位碼(即要顯示數(shù)碼管哪一位)發(fā)送,再將要顯示的段碼(即要顯示什么符號(hào))發(fā)送,然后再由ST-CP讓所有輸出一統(tǒng)翻轉(zhuǎn),完成一個(gè)完美的“串轉(zhuǎn)并”。因?yàn)閿?shù)碼管是逐位顯示,所以可以在8根位數(shù)據(jù)線上分別連接按鍵,檢測(cè)所有按鍵公共端,根據(jù)公共端狀態(tài)和數(shù)碼管位數(shù)據(jù)線的狀態(tài),就可以得出每個(gè)按鍵的狀態(tài)啦。
圖2 使用常規(guī)方法控制數(shù)碼管和按鍵
圖3 使用74HC595控制數(shù)碼管和按鍵
|