干簧管計數器中單片機中斷的設計實現
在本文的介紹中,要設計一個干簧管計數器,并用數碼管來顯示。本案例例中,還要接觸單片機一個重要的功能“中斷”。
本文引用地址:http://www.j9360.com/article/148748.htm干簧管是干式舌簧管的簡稱,是一種有觸點的無源電子開關元件,具有結構簡單,體積小便于控制等優點,其外殼一般是一根密封的玻璃營,管中裝有兩個鐵質的彈性簧片電板,還灌有一種叫金屬銠的惰性氣體。平時,玻璃管中的兩個由特殊材料制成的簧片是分開的。
下圖是它的結構示意圖。
當有磁性物質靠近玻璃管時,在磁場磁力線的作用下,管內的兩個簧片被磁化而互相吸引接觸,簧片就會吸合在一起,使結點所接的電路連通。外磁力消失后,兩個簧片由于本身的彈性而分開,線路也就斷開了。
因此,作為一種利用磁場信號來控制的線路開關器件,干簧管可以作為傳感器用,用于計數,限位等,同時還被廣泛使用于各種通信設備中。在實際運用中,通常用永久磁鐵控制這兩根金屬片的接通與否,所以又被稱為“磁控管”。
下圖是干簧管狀態讀入電路,
干簧管狀態讀入電路
當磁鐵靠近干簧管時,相當于按鍵按下,單片機P3.2口為OV,邏輯“0”:當磁鐵拿走時,相當于按鍵抬鍵,P3.2為+5V,邏輯“1”。
我們要做的實驗就是記錄磁鐵靠近干簧管的次數,也就是P3.2口由“1”變成“0”的次數。在寫程序之前先介紹單片機中斷的概念。
舉個例子,如果我們有很多工作要做,偏偏有一個重要的客人要來,而且不知道來的具體時間,我們該怎么辦?沒錯,我們先做工作,客人來了放下工作先接待,等客人走了接著做剛才放下的工作。
單片機的中斷系統也是這樣,中斷請求來臨時,單片機從當前運行的程序中跳出,直接運行中斷服務程序,運行完中斷服務程序后,再回到剛才程序中斷的地方接著運行。
在本實驗的電路設計中,用P3.2口讀取干簧管的狀態,單片機的P3.2口有一個重要的功能,它是外部中斷0的接入口。經過初始化,當P3.2口的狀態從“1”變到“0”時就會觸發外部中斷0,程序會自動跳到我們寫好的中斷服務程序,執行完中斷服務程序后,再回到剛才主程序中斷的地方繼續執行主程序。程序如下:
#include
//存儲數碼管顯示碼的一維數組
unsignedcharShowCode[]=(Oxc0,Oxf9,Oxa4,OxbO,Ox99,Ox92,Ox82,Oxf8,Ox80,Ox90):
//主程序
voiDMAin(void){unsignedchari….
….
….
P1=ShowCode[num];//在數碼管上顯示數字num}
}
【注1】:主程序第一個語句初始化了外部中斷0,將外部中斷0(P3.2)設置為下降沿觸發,即觸發中斷的條件是P3.2口的狀態從“1”變到“0”。
第二句使能了外部中斷0,只有使能中斷,當中斷條件發生時,程序才能跳到中斷服務程序;否則,即使中斷條件發生,程序也不會跳去執行中斷服務程序。
【注2】:中斷服務程序,外部中斷0的中斷向量為0。每次磁鐵靠近干簧管都會使P3.2的狀態從“1”變到“0”,從而觸發中斷,程序會直接跳到本中斷服務程序,num++語句使變量num加1。
磁控管相關文章:磁控管原理
塵埃粒子計數器相關文章:塵埃粒子計數器原理
評論