|
|
數碼bai管其實是由發光二極管組成,有共du陰極和共陽極之分,對于共陽極來說,zhi一位數碼管由dao8個二極管組成,他們的陽極接在一起接+5v電源,而各個陰極與某個端口,如p1的8個引腳相連,當某個引腳輸出低電平的時候數碼管對應的二極管亮。 用引腳輸出高低電平來控制數碼管的8個子管的亮滅,達到數字和小數點顯示的效果,通常要給每個數字做一個轉換表,以便在編程的時候忽略轉換過程,達到快速編程的目的,轉換表一般采用枚舉的方式,具體轉換數字和你電路里面的連接方式有關系,用二進制寫出來,再換算成16進制就好了。 數碼管,也稱作輝光管,是一種可以顯示數字和其他信息的電子設備。玻璃管中包括一個金屬絲網制成的陽極和多個陰極。大部分數碼管陰極的形狀為數字。管中充以低壓氣體,通常大部分為氖加上一些汞和/或氬。給某一個陰極充電,數碼管就會發出顏色光,視乎管內的氣體而定,一般都是橙色或綠色。 |
| 你這個圖數碼管顯示P0口輸入段碼,顯示數碼管具體數字;P2^0--P2^4顯示位碼,就是顯示哪一位數碼管亮,如果數碼管位數多的話可以加一個譯碼器。 |
|
數碼管部分使用共陽數碼管,SMG1、2、3、4分別接數碼管的第一位至第四位的公共端,然后A、B……G接數碼管的七個筆畫,DP是小數點,用排阻把他們上拉到5V電源端使其在所有筆畫在單片機未輸出低電平時保持高電位。和數碼管的公共端保持一樣的電平,數碼管不亮。當SGM電平輸出高電平,單片機的P0口輸出對應的筆畫輸出低電平,那在數碼管的筆畫間產生電壓差使數碼管點亮。 舉例:當SGM1端為高電平,P0口的P0^1 P0^2輸出的是低電平,對應數碼管的第一位的B和C筆畫點亮,那就會在第一位顯示1。比如要顯示數字3,就要同時點亮A B C D G等5個筆畫的LED,就要P0口的P0^0; P0^1; P0^2; P0^3; P0^6; 輸出低電平。如此類推。 ![]() (圖片來源于網絡) 對照上邊的數碼管電路會更好理解些。 另外仿真圖可以工作,但實際使用這樣的接法就有不合理的地方,一般的單片機管腳直接驅動LED數碼管電流都供不上,所以在位驅動的地方一般都會使用三極管擴流。或者使用諸如ULN2003那種驅動IC對段供電進行驅動。 ![]() (圖片來源于網絡) 數碼管的驅動有很多種硬件接法,比如245緩沖器,595串轉并驅動……,樓主先理解你自己發的仿真電路后再行研究。 |
| 再補充一下,P0口“不能顯示高電平”【這個說法可能不大準確】(可以仿真的時候看是灰色的),所以需要上拉電阻的幫助。希望有所幫助😅 |
|
這個數碼管是共陽極數碼管,所以寫程序的時候用共陽極數碼管段碼表(當然也可以用共陰極數碼管段碼表,只是寫程序的時候需要取反了),數碼管的更具體原理可以百度,和led其實很像。 A-G和DP是段碼位,用于顯示數字和字母還有小數點;1-4是位碼,用于選擇哪個數碼管亮。兩個合在一起使用需要用到動態掃描。 動態掃描簡單的意思就是通過位碼先選擇哪個數碼管亮,再發送相應的段碼顯示需要顯示的數字字母及小數點;通過通過延時來取決于數碼管閃爍的頻率,只要延時恰當(小于肉眼可以看見的閃爍頻率)即可認為是數碼管無閃爍。希望能有所幫助😅 |