1、數碼管實際上是由7個發光二極管組成一個8字形,另外一個發光二極管做成圓點型,這樣就構成了一個數碼管。所有的8個二級管的正極或者負極都連到一個公共端點上,對於公共端連在正極的數碼管,稱爲共陽極數碼管,反之稱爲共陰極數碼管。
根據數碼管的內部結構原理,可以很清楚的知道數碼管顯示數字的原理。
2、由於單片機的IO口的驅動能力有限,而數碼管點亮時需要較大的電流,所以在用單片機構成數碼管顯示系統時,需要增加驅動電路,最簡單的驅動電路就是利用三極管的電流放大能力來輸出較大的電流,
3、讓數碼管顯示數字的步驟爲:
1)使數碼管的公共端連到電源(共陽極)或者地(共陰極)上。
2)向數碼管的各個段輸出不同的電平。
本例使用單個數碼管循環顯示0-9這10個數字。
4、在keil c51中新建工程ex47,編寫如下程序代碼,編譯並生成ex47.hex文件
#include <reg51.h> //包含頭文件
//延時函數,延時約200ms
void delay(void)
{
unsigned char i,j;
for(i = 0; i < 255;i++)
{
for(j = 0;j < 255;j++);
}
}
//主函數
void main(void)
{
unsigned char i;
unsigned char code Tab[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90};
//定義數字0-9的段碼錶
P2 = 0xfe; //P2.0輸出低電平,數碼管電源導通
while(1)
{
for(i = 0;i < 10;i++) //循環10次。數碼管循環顯示數字0-9
{
P0 = Tab[i]; //P0口輸出數字0-9對應的段碼
delay(); //延時
}
}
}
5、在proteus中新建仿真文件ex47.dsn,電路原理圖如下所示:
需要說明的是在proteus中,查找排阻(不帶公共端)和數碼管的方法。
查詢數碼管元件時,輸入關鍵字“7seg-com..”後,就可以看到各種數碼管的電路符號。根據需要選擇相應數碼管即可。
排阻的查找方法:查找帶公共端的排阻時,輸入關鍵字“respack”即可。
不帶公共端的排阻,輸入關鍵字“RX8”即可
6、將ex47.hex文件載入at89c51中,啓動仿真,按動按鍵,觀察程序運行結果,下圖是某一時刻程序運行結果