標籤:
先把定義拉過來:
LED數位管是由多個發光二極體封裝在一起組成“8”字型的器件,引線已在內部串連完成,只需引出它們的各個筆劃,公用電極。LED數位管常用的段數一般為7段,有的另加一個小數點 。LED數位管根據LED的接法不同,分為共陰和共陽兩類 。
貼原理圖
其實就兩點 :由於板子上有8個數位管,而每個數位管有8段,稱選擇顯示哪一個數位管的東西為位選,稱單個數位管顯示數字幾的東西為段選,位選由P2.2 p2.3 p2.4 控制
數位管IO口為P0 對於每一個數位管,顯示數字幾隻要控制PO的8個段就可以了,低電平點亮,如00000001為a段亮,其他的段不亮。
位選圖如下:
輸入中的A B C分別代表P2.2 P2.3 P2.4
/******************************************************************************** 實 驗 名 : 數位管實驗* 使用的IO : 數位管使用P0* 實驗效果 : 數位管顯示數字 5201314* 注 意 :*******************************************************************************/#include <reg52.h>#include <intrins.h>#define GPIO_LED P2#define GPIO_DIG P0#define uint unsigned int#define uchar unsigned charsbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9的值unsigned char code MY_CODE[7]={5,2,0,1,3,1,4};void DIG_DISPLAY(){uchar i,j;for(i=0;i<8;i++){switch(7-i){case 0:LSA=0;LSB=0;LSC=0;break;case 1:LSA=1;LSB=0;LSC=0;break;case 2:LSA=0;LSB=1;LSC=0;break;case 3:LSA=1;LSB=1;LSC=0;break;case 4:LSA=0;LSB=0;LSC=1;break;case 5:LSA=1;LSB=0;LSC=1;break;case 6:LSA=0;LSB=1;LSC=1;break;case 7:LSA=1;LSB=1;LSC=1;break;}if(i==7)continue;GPIO_DIG=DIG_CODE[MY_CODE[i]];j=10;while(j--);GPIO_DIG=0x00;//消隱}}void main(){while(1){DIG_DISPLAY();}}
51單片機第三彈---數位管顯示