#define _LED_DIRIVE_C_
#include "main.h"
//====================================================================
//==== 数码管管脚宏定义 ====//
#define p_seg_a P3_5
#define p_seg_b P3_4
#define p_seg_c P2_7
#define p_seg_d P0_2
#define p_seg_e P0_0
#define p_seg_f P2_5
#define p_seg_g P2_6
#define p_seg_dp P0_1
#define p_dig_0 P2_2
#define P_dig_1 P2_3
#define P_dig_2 P1_6
//====================================================================
//==== 数码管显示宏定义 ====//
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
#define seg_a BIT0
#define seg_b BIT1
#define seg_c BIT2
#define seg_d BIT3
#define seg_e BIT4
#define seg_f BIT5
#define seg_g BIT6
#define seg_h BIT7
#define seg00 (seg_a+seg_b+seg_c+seg_d+seg_e+seg_f) //"0"
#define seg01 (seg_b+seg_c) //"1"
#define seg02 (seg_a+seg_b+seg_d+seg_e+seg_g) //"2"
#define seg03 (seg_a+seg_b+seg_c+seg_d+seg_g) //"3"
#define seg04 (seg_b+seg_c+seg_f+seg_g) //"4"
#define seg05 (seg_a+seg_c+seg_d+seg_f+seg_g) //"5"
#define seg06 (seg_a+seg_c+seg_d+seg_e+seg_f+seg_g) //"6"
#define seg07 (seg_a+seg_b+seg_c) //"7"
#define seg08 (seg_a+seg_b+seg_c+seg_d+seg_e+seg_f+seg_g) //"8"
#define seg09 (seg_a+seg_b+seg_c+seg_d+seg_f+seg_g) //"9"
#define seg10 (seg_a+seg_b+seg_c+seg_d+seg_e+seg_f+seg_h) //"0."
#define seg11 (seg_b+seg_c+seg_h) //"1."
#define seg12 (seg_a+seg_b+seg_d+seg_e+seg_g+seg_h) //"2."
#define seg13 (seg_a+seg_b+seg_c+seg_d+seg_g+seg_h) //"3."
#define seg14 (seg_b+seg_c+seg_f+seg_g+seg_h) //"4."
#define seg15 (seg_a+seg_c+seg_d+seg_f+seg_g+seg_h) //"5."
#define seg16 (seg_a+seg_c+seg_d+seg_e+seg_f+seg_g+seg_h) //"6."
#define seg17 (seg_a+seg_b+seg_c+seg_h) //"7."
#define seg18 (seg_a+seg_b+seg_c+seg_d+seg_e+seg_f+seg_g+seg_h) //"8."
#define seg19 (seg_a+seg_b+seg_c+seg_d+seg_f+seg_g+seg_h) //"9."
#define seg20 (0x00) //关闭
#define seg21 (seg_g) //"-"
u8 code table_seg[22]=//字形码表
{seg00,seg01,seg02,seg03,seg04,seg05,seg06,seg07,seg08,seg09,
seg10,seg11,seg12,seg13,seg14,seg15,seg16,seg17,seg18,seg19,
seg20,seg21};
/***************数码管缓冲区*********************/
u8 r_dis_buff[3] = {0x00,0x00,0x00}; //
/*******************************************************/
//独立LLED
#define set_Led_ANT (r_dis_buff[2] |= seg_h) //0x10
#define set_Led_SLP (r_dis_buff[2] |= seg_e) //0x04
#define set_Led_TIME (r_dis_buff[2] |= seg_d) //0x08
#define set_Led_SPEED (r_dis_buff[2] |= seg_b) //0x01
#define set_Led_Hr (r_dis_buff[2] |= seg_g) //0x40
#define set_Led_SW (r_dis_buff[2] |= seg_c) //0x20
/***********************************************************/
//显示函数
void LedShow(u8 tmp)
{
CLR_WDT; //CLR WDT
p_seg_a = tmp & BIT0;
p_seg_b = tmp & BIT1;
p_seg_c = tmp & BIT2;
p_seg_d = tmp & BIT3;
p_seg_e = tmp & BIT4;
p_seg_f = tmp & BIT5;
p_seg_g = tmp & BIT6;
p_seg_dp = tmp & BIT7;
}
//数码管扫描函数
void LedScan(void)
{
static u8 r_dig_bit = 0;
CLR_WDT; //CLR WDT
//LedShow(0x00);
p_dig_0 = 1;
P_dig_1 = 1;
P_dig_2 = 1; //关显示 消隐
if(r_dig_bit < 2)
{
LedShow(table_seg[r_dis_buff[r_dig_bit]]); //数码管显示
}
else if(r_dig_bit == 2)
{
LedShow(r_dis_buff[r_dig_bit]); //独立LED显示
}
switch(r_dig_bit)
{
case 0:
p_dig_0 = 0;
break;
case 1:
P_dig_1 = 0;
break;
case 2:
P_dig_2 = 0;
break;
default: break;
}
CLR_WDT; //喂狗
r_dig_bit++;
if(r_dig_bit >= 4)
{
r_dig_bit = 0;
}
}
|