/* LED分布
1
2 3
4
5 6
7
*/
//阳极 码 阴极取反
// 0~f 数码管 ,不带点
const u8 table1[]={
0x77,0x24,0x5d,0x6d,
0x2e,0x6b,0x7b,0x25,
0x7f,0x2f,0x3f,0x7a,
0x53,0x7c,0x5b,0x1b
};
// 0~f 数码管 ,带点
const u8 table2[]={
0xf7,0xa4,0xdd,0xed,
0xae,0xeb,0xfb,0xa5,
0xff,0xaf,0xbf,0xfa,
0xd3,0xfc,0xdb,0x9b
};
DisplaydData[0]= ~table[NowTime.hour/10];
DisplaydData[1]= ~table[NowTime.hour%10];
DisplaydData[2]= ~table[NowTime.minute/10];
DisplaydData[3]= ~table[NowTime.minute%10];
DisplaydData[4]= ~table[NowTime.second/10];
DisplaydData[5]= ~table[NowTime.second%10];
DisplaydData[6]= ~0x00;
宏定义部分
#define LEDGroupSum 7
extern U8 BlinkingBit; //闪烁位 bit 为1则闪烁
extern U8 DisplaydData[LEDGroupSum]; //LED阴极控制
显示函数
void Display(void)
{
static U8 DisplayBit = 0; //POERTB[6:0]
DisplayONEGroupLED(DisplayBit); //DisplayBit=x x代表显示的哪一组LED
DisplayBit++;
if(DisplayBit>LEDGroupSum -1) DisplayBit= 0;
}
static void DisplayONEGroupLED(U8 i)
{
LEDNegative = 0xff; //消隐
if((BlinkingBit& (0x01<<i))&&1==flag.Blinking)LEDNegative = 0xff;//对应LED组闪烁
else LEDNegative = DisplaydData[ i ];
LEDPositive &= 0x80; //bit[6:0]置0
if(i<LEDGroupSum) LEDPositive |= 0x01<<i;//对应bit置1 bit[5:0]
}
定时器中断中 2ms一次
if(250==Count_2ms_Blinking){ //500ms定时
Count_2ms_Blinking = 0;
flag.Blinking = ~flag.Blinking;//闪烁标志
}
来源:CSDN
作者:蜜汁辣酱^_^
链接:https://blog.csdn.net/lala0903/article/details/103484871