上面unsigned char code table【】我之前沒有搞注釋,現在解釋一下unsigned char是數組類型 code是編碼的意識 table是數組名 【】里的是顯示數字的控制發光二極管的編碼從左到右分別是1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
會了一個數碼管之后就要弄八個數碼管或者六個數碼管甚至更多 我就舉最有代表的時鐘六位數碼管顯示。當數碼一多,就要分別控制每個數碼管 這就要用到另一個I/O控制口P2,控制方法和數碼管一樣,就是把六個數碼管看成是六個二極管,通過控制共陰或者共陽端的電位高低來控制數碼管的亮滅!
#include<reg51.h> //51系列單片機頭文件
#define uchar unsigned char //宏定義
uchar code table []={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/***************************數碼管掃描延時****************************/
void delays(void)
{
uint i,j;
for(i=0;i<2;i++)
for(j=0;j<110;j++);
}
void main(void)
{
P0=table [1];
P2=0xfd;
delays();
P0=table [2];
P2=0xfe;
delays();
P0=table [3];
P2=0xf7;
delays();
P0=table [4];
P2=0xfb;
delays();
P0=table [5];
P2=0xdf;
delays();
P0=table [6];
P2=0xef;
delays();
while(1)
} 顯示的效果就是012345這是靜態顯示 如果是你想要動態顯示在上面的程序里用一個for循環語句table【】內用字母或簡單運算表示
簡單舉例:
#include<reg51.h> //51系列單片機頭文件
#define uchar unsigned char //宏定義
uchar code table []={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/***************************數碼管掃描延時****************************/
void delays(void)
{
uint i,j;
for(i=0;i<2;i++)
for(j=0;j<110;j++);
}
void main( )
{ uchar i;
while(1)//無限循環語句
{
For(i=0;i<9;i++)//循環語句
{ if(i==9) //選擇語句
{
i=0;
}
P0=table [ i];
P2=0xfd;
delays();
P0=table [ i];
P2=0xfe;
delays();
P0=table [ i];
P2=0xf7;
delays();
P0=table [ i];
P2=0xfb;
delays();
P0=table [ i];
P2=0xdf;
delays();
P0=table [ i];
P2=0xef;
delays();
}
}
} 顯示效果是不斷循環顯示000000、111111、222222、~~~、999999當然也可以顯示不一樣的,原理都一樣 參數改變 顯示效果也不一樣!