數碼管,舉個例子,8段共陰極數碼管。其實它的結構很簡單,就是8個LED發光二極體,這8個LED發光二極體的正極就是abcdefgdp(小數點)這8個,負極就8個LED連線在一起。
微控制器I/O口比如P0什麼的不是有8個?正好連線到8個發光二極體的正極。然後把數碼管負極接地。當你要顯示數字,比如2時,2對應abdeg這幾個字母對應的LED亮,所以只要微控制器接到abdeg的IO口置高電平就行了,正高負低,LED不就亮了?對應的LED亮了,不就顯示對應的數字了?
至於動態顯示,一般是8個數碼管吧?段的介面不變,還是P0口,而它們的負極呢,不再接地了,而是接到P2口(P1什麼的都行)。P2口來控制哪個數碼管亮。只有當P2口為低電平的時候,LED才有可能導通並亮。
比如你要顯示12345678,你可以先把P0口的段碼調到1,也就是bc亮,P1.1、P1.2置高電平,這樣就是顯示1了,然後就是位選了,1是顯示在第一位,所以你應該把P2.0置低電平,其他位置高電平,這樣,第一個數碼管就顯示1了。顯示2,則把P2.1拉低,其他拉高。這樣弄一個迴圈,數碼管不就從1依次顯示到8了?
不過由於微控制器執行指令很快,如果直接12345678這樣顯示,由於太快,會導致數碼管很暗,所以,你可以在切換數碼管的時候,加上一點點的延時,不過不能太長,不然就會閃了。當然你也可以把顯示程式放到中斷裡,比如沒過10ms就顯示一次,這樣會更好一點。
懂了嗎?
數碼管,舉個例子,8段共陰極數碼管。其實它的結構很簡單,就是8個LED發光二極體,這8個LED發光二極體的正極就是abcdefgdp(小數點)這8個,負極就8個LED連線在一起。
微控制器I/O口比如P0什麼的不是有8個?正好連線到8個發光二極體的正極。然後把數碼管負極接地。當你要顯示數字,比如2時,2對應abdeg這幾個字母對應的LED亮,所以只要微控制器接到abdeg的IO口置高電平就行了,正高負低,LED不就亮了?對應的LED亮了,不就顯示對應的數字了?
至於動態顯示,一般是8個數碼管吧?段的介面不變,還是P0口,而它們的負極呢,不再接地了,而是接到P2口(P1什麼的都行)。P2口來控制哪個數碼管亮。只有當P2口為低電平的時候,LED才有可能導通並亮。
比如你要顯示12345678,你可以先把P0口的段碼調到1,也就是bc亮,P1.1、P1.2置高電平,這樣就是顯示1了,然後就是位選了,1是顯示在第一位,所以你應該把P2.0置低電平,其他位置高電平,這樣,第一個數碼管就顯示1了。顯示2,則把P2.1拉低,其他拉高。這樣弄一個迴圈,數碼管不就從1依次顯示到8了?
不過由於微控制器執行指令很快,如果直接12345678這樣顯示,由於太快,會導致數碼管很暗,所以,你可以在切換數碼管的時候,加上一點點的延時,不過不能太長,不然就會閃了。當然你也可以把顯示程式放到中斷裡,比如沒過10ms就顯示一次,這樣會更好一點。
懂了嗎?