功能說明:
4個共陽極七段顯示器每次顯示4個數字,從0-F共有16個字,分成3-0,7-4,B-8,F-C四組數字,每次顯示一組,依次顯示,循環不止。
電路說明:
本實驗所使用的共陽極七段顯示器是由4個七段顯示器做在一起,所以4個七段顯示器共享一組七段控制線,而每一個七段顯示器都有自己的共陽極腳,故這組共陽極七段顯示器共有12只引腳。
晶體管Q1-Q4 作為電子開關,使用PNP型三極管,當晶體管的基極為低電位時,發射極與集電極導通,但是會有0.2V的壓降。
由于每一個晶體管的發射極都可接上電源供給所控制的共陽極七段顯示器,故在七段顯示器的每一段LED上必須串接一個電阻,以防止LED被燒毀。因為發射極可以直接接VCC而無須再串接電阻,但需注意基極必須接一個數千歐的電阻,這樣晶體管才會正常工作。
完整的程序文件下載地址:http://www.izizhuan.cn/f/htdef.rar
程序:
#include "HT48F50E.H"
const unsigned char number[16]={
0x81,0xcf,0x92,0x86,
0xcc,0xa4,0xa0,0x8f,
0x80,0x84,0x88,0xe0,
0xb1,0xc2,0xb0,0xb8}; //數碼管顯示0-F
void delayms(unsigned int dly)
{
unsigned int i;
for(i=0;i<dly;i++)
{
_delay(984);
}
} //延時函數1MS
void main()
{
unsigned char j;
_pac=0x00;
_pbc=0x00; //PA,PC輸出選擇
while(1) //大循環
{
for(j=0;j<50;j++) //循環顯示
{
_pb=0xfe; //選通第一位數碼管
_pa=number[0]; //顯示0
delayms(5); //延時5MS(下同)
_pb=0xfd;
_pa=number[1];
delayms(5);
_pb=0xfb;
_pa=number[2];
delayms(5);
_pb=0xf7;
_ pa=number[3];
delayms(5);
}
for(j=0;j<50;j++)
{
_pb=0xfe;
_pa=number[4];
delayms(5);
_pb=0xfd;
_pa=number[5];
delayms(5);
_pb=0xfb;
_pa=number[6];
delayms(5);
_pb=0xf7;
_pa=number[7];
delayms(5);
}
for(j=0;j<50;j++)
{
_pb=0xfe;
_pa=number[8];
delayms(5);
_pb=0xfd;
_pa=number[9];
delayms(5);
_pb=0xfb;
_pa=number[10];
delayms(5);
_pb=0xf7;
_pa=number[11];
delayms(5);
}
for(j=0;j<50;j++)
{
_pb=0xfe;
_pa=number[12];
delayms(5);
_pb=0xfd;
_pa=number[13];
delayms(5);
_pb=0xfb;
_pa=number[14];
delayms(5);
_pb=0xf7;
_pa=number[15];
delayms(5);
}
}
}

