要想說清你圖中數碼管驅動電路原理,首先應該明白數碼管原理,請看下面從網上搜來的,很詳細:
數碼管顯示原理
我們最常用的是七段式和八段式LED數碼管,八段比七段多了一個小數點,其他的基本相同。所謂的八段就是指數碼管里有八個小LED發光二極管,通過控制不同的LED的亮滅來顯示出不同的字形。數碼管又分為共陰極和共陽極兩種類型,其實共陰極就是將八個LED的陰極連在一起,讓其接地,這樣給任何一個LED的另一端高電平,它便能點亮。而共陽極就是將八個LED的陽極連在一起。其原理圖如下。

其中引腳圖的兩個COM端連在一起,是公共端,共陰數碼管要將其接地,共陽數碼管將其接正5伏電源。一個八段數碼管稱為一位,多個數碼管并列在一起可構成多位數碼管,它們的段選線(即a,b,c,d,e,f,g,dp)連在一起,而各自的公共端稱為位選線。顯示時,都從段選線送入字符編碼,而選中哪個位選線,那個數碼管便會被點亮。數碼管的8段,對應一個字節的8位,a對應最低位,dp對應最高位。所以如果想讓數碼管顯示數字0,那么共陰數碼管的字符編碼為00111111,即0x3f;共陽數碼管的字符編碼為11000000,即0xc0。可以看出兩個編碼的各位正好相反。如下圖。

從LZ的圖中控制數碼管“位”選腳的PNP三極管可知,圖中的4位數碼管是“共陽極”型的。由此可見,MCU P1 口是控制“段”選(筆畫)的,P3口的P4~P7是控制“位”選的(就是控制想要亮的那個數碼管,給該位“0”亮)。具體到如要想數碼管顯示0~F中某個數,那么需要一個共陽極的數碼管0~f的段編碼。如下這樣的:
unsigned char code table[]={ //共陽極0~f數碼管編碼
0xc0,0xf9,0xa4,0xb0,//0~3
0x99,0x92,0x82,0xf8,//4~7
0x80,0x90,0x88,0x83,//8~b
0xc6,0xa1,0x86,0x8e //c~f
};
程序中調用即可。
|