|
這個帖子有答案
求助:可有認(rèn)識這個小數(shù)碼管的朋友?求資料或驅(qū)動方式 http://www.zg4o1577.cn/bbs/dpj-185110-1.html
- /*--------------------------------------------------------------------------*/
- /***@file led_7c7s.c
- @brief 7*7數(shù)據(jù)管顯示屏蔽驅(qū)動
- @details
- @author wjq
- @date
- @note
- */
- /*----------------------------------------------------------------------------*/
- /**********************************************************************************************************************
- --------------------------------------------
- | K1 K3 ---- ---- ---- ---- K6 |
- | | | | | . | | | | |
- | ---- ---- ---- ---- |
- | | | | | . | | | | |
- | K2 K4 ---- ---- ---- ---- K7 |
- --------------------------------------------
- 7線LED屏陣列如下,其中A,B,C...為LED屏的段,0,1,2.... 表示對應(yīng)的連接IO
- 參考下圖表,當(dāng)需要點亮某個段時,左邊的拉高,右邊的拉低點亮相應(yīng)位置,
- 如要點亮1A段,則將0號IO拉高,1號IO拉低 ,如果我們要顯示一個數(shù)據(jù),則要依次掃描7個IO
- 0 1 2 3 4 5 6
- 0 X 1A 1B 1E K4 K1 -
- 1 1F X 2A 2B 2E 2D -
- 2 1G 2F X K5 3B K2 K7
- 3 1C 2G 3F X 3C 4E -
- 4 1D 2C 3G 3A X 4C 4G
- 5 3D K3 3E 4D 4F X 4B
- 6 K6 K8 4A X - - X
- ************************************************************************************************************************/
- #include "include.h"
- #include "task_music.h"
- #include "user_fm.h"
- #include "task_clock.h"
- #include "task.h"
- u8 __idata batchargecout;
- #if LED_7P7S_EN
- //定義COM口是否是同一排P口的。比如都是P2口
- #define SAME_COM_P 0
- #if SAME_COM_P
- #define LED_COM P2
- #define LED_COM_DIR P2DIR
- #else
- #define LED_COM_0_ON P2 |= BIT(2);
- #define LED_COM_1_ON P2 |= BIT(3);
- #define LED_COM_2_ON P2 |= BIT(4);
- #define LED_COM_3_ON P2 |= BIT(5);
- #define LED_COM_4_ON P2 |= BIT(6);
- #define LED_COM_5_ON P3 |= BIT(0);
- #define LED_COM_6_ON P3 |= BIT(1);
- #define LED_COM_0_OFF P2 &= ~BIT(2);
- #define LED_COM_1_OFF P2 &= ~BIT(3);
- #define LED_COM_2_OFF P2 &= ~BIT(4);
- #define LED_COM_3_OFF P2 &= ~BIT(5);
- #define LED_COM_4_OFF P2 &= ~BIT(6);
- #define LED_COM_5_OFF P3 &= ~BIT(0);
- #define LED_COM_6_OFF P3 &= ~BIT(1);
- #define COM_DIR0_IN P2DIR |= BIT(2);
- #define COM_DIR1_IN P2DIR |= BIT(3);
- #define COM_DIR2_IN P2DIR |= BIT(4);
- #define COM_DIR3_IN P2DIR |= BIT(5);
- #define COM_DIR4_IN P2DIR |= BIT(6);
- #define COM_DIR5_IN P3DIR |= BIT(0);
- #define COM_DIR6_IN P3DIR |= BIT(1);
- #define COM_DIR0_OUT P2DIR &= ~BIT(2);
- #define COM_DIR1_OUT P2DIR &= ~BIT(3);
- #define COM_DIR2_OUT P2DIR &= ~BIT(4);
- #define COM_DIR3_OUT P2DIR &= ~BIT(5);
- #define COM_DIR4_OUT P2DIR &= ~BIT(6);
- #define COM_DIR5_OUT P3DIR &= ~BIT(0);
- #define COM_DIR6_OUT P3DIR &= ~BIT(1);
- #define ALL_COM_DIRIN {P2DIR |= 0x7c;P3DIR |= 0x03;}
- #define ALL_COM_OFF {P2 &= ~0x7c; P3 &= ~0x03;}
- u8 LED_COM;
- u8 LED_COM_DIR;
- #endif
-
- extern u8 __idata bVoiceOn;
- static u8 __idata syslastbatval= 0xff;
- u8 __idata curMenu;
- u8 __idata LED_5com7seg_dispBuf[5];
- u8 p_disp_buff2_value[7];
- u8 __idata COM_T;
- u8 returnCount;
- bool __bdata HalfsecFlash;
- bool __bdata ftimeflag = false;
- u16 __idata inputNum;
- typedef void(*H)(void);
- //extern val
- extern type_task_music_ctl t_msc;
- extern type_task_fm_ctl t_fm;
- extern type_t_clock t_clock;
- extern u8 clockset_count;
-
- #pragma constseg=LED_TBL
- const u8 LED_7p7seg_Table[10] =
- {
- LED_7p7seg_0,
- LED_7p7seg_1,
- LED_7p7seg_2,
- LED_7p7seg_3,
- LED_7p7seg_4,
- LED_7p7seg_5,
- LED_7p7seg_6,
- LED_7p7seg_7,
- LED_7p7seg_8,
- LED_7p7seg_9
- };
- const u8 LED_7p7seg_repeatTable[4][3] =
- {
- {LED_7p7seg_A,LED_7p7seg_L,LED_7p7seg_L},
- {LED_7p7seg_F,LED_7p7seg_0,LED_7p7seg_L},
- {LED_7p7seg_S,LED_7p7seg_I,LED_7p7seg_N},
- {LED_7p7seg_R,LED_7p7seg_A,LED_7p7seg_N}
- };
- const u8 LED_7p7seg_eqTable[6][3] =
- {
- {LED_7p7seg_N,LED_7p7seg_0,LED_7p7seg_R},
- {LED_7p7seg_P,LED_7p7seg_0,LED_7p7seg_P},
- {LED_7p7seg_R,LED_7p7seg_0,LED_7p7seg_C},
- {LED_7p7seg_J,LED_7p7seg_A,LED_7p7seg_Z},
- {LED_7p7seg_C,LED_7p7seg_L,LED_7p7seg_A},
- {LED_7p7seg_C,LED_7p7seg_0,LED_7p7seg_U}
- };
- #pragma constseg=default
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示四位數(shù)字
- @param num 需要顯示的數(shù)字
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void DispNum_7p7seg(u16 num)@"LED_7COM_API"
- {
- u16 numtmp;
-
- numtmp = num;
-
- u8 ii;
- for(ii = 4; ii > 0; ii--)
- {
- LED_5com7seg_dispBuf[ii-1] = LED_7p7seg_Table[num % 10];
- num /= 10;
- /* //如果是加快了掃屏頻率或者是FM下面降頻,調(diào)用DispNum_5com7seg時,有可能
- //出現(xiàn)還在執(zhí)行這個函數(shù)的時候,掃描以及把前面的“0”顯示出來的效果
- */
- if((curMenu == MENU_FRE))
- {
- if(numtmp < 1000)
- {
- LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
- }
- else if(numtmp < 100)
- {
- LED_5com7seg_dispBuf[1] = LED_7p7seg_BLANK;
- }
- else if(numtmp < 10)
- {
- LED_5com7seg_dispBuf[2] = LED_7p7seg_BLANK;
- }
- }
- }
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示播放時間
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void LED_playtime_display_7p7seg(void)@"LED_7COM_API"
- {
- u8 a,b;
- a = t_msc.cur_time.min / 10;
- b = t_msc.cur_time.min - 10*a;
- LED_5com7seg_dispBuf[0] = LED_7p7seg_Table[a];
- LED_5com7seg_dispBuf[1] = LED_7p7seg_Table[b];
- a = t_msc.cur_time.sec / 10;
- b = t_msc.cur_time.sec - 10*a;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_Table[a];
- LED_5com7seg_dispBuf[3] = LED_7p7seg_Table[b];
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示音量
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_VOL_7p7seg(void)@"LED_7COM_API"
- {
- DispNum_7p7seg(sys_ctl.volume);
- LED_5com7seg_dispBuf[1] = LED_7p7seg_V;
- LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示音量
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_Voice_Switch(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[1] = LED_7p7seg_V;
-
- LED_5com7seg_dispBuf[2] = LED_7p7seg_0;
- if(bVoiceOn)
- {
- LED_5com7seg_dispBuf[3] = LED_7p7seg_N;
- }
- else
- {
- LED_5com7seg_dispBuf[3] = LED_7p7seg_F;
- }
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示音量的‘V’和'P'
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_VOLUP_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[1] = LED_7p7seg_V;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_P;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示音量的‘D’和'N'
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_VOLDOWN_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[1] = LED_7p7seg_D;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_N;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示RTC
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_RTC_7p7seg(void)@"LED_7COM_API"
- {
- #if TASK_RTC_EN
-
- u16 disptmp;
-
- disptmp = t_time.hour*100+ t_time.minute;
- DispNum_7p7seg(disptmp);
- LED_5com7seg_dispBuf[4] |= LED_DDOT;
-
- if((HalfsecFlash))
- {
- if(t_clock.sub_sta == STA_SHOW_CLOCK)//&&(!Alarm_Rtc_Flag))
- LED_5com7seg_dispBuf[4] &= ~LED_DDOT;
- }
-
- if((HalfsecFlash)&&(clockset_count >= (RETURN_TIME -1))&&(clockset_count < RETURN_TIME_RTCSET))
- {
- if(t_clock.set_sta == STA_SET_TIME_HOUR)
- {
- LED_5com7seg_dispBuf[0] = 0;
- LED_5com7seg_dispBuf[1] = 0;
- }
- else if(t_clock.set_sta == STA_SET_TIME_MIN)
- {
- LED_5com7seg_dispBuf[2] = 0;
- LED_5com7seg_dispBuf[3] = 0;
- }
- }
- #endif
-
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示FM模式下的頻率
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_FRE_7p7seg(void)@"LED_7COM_API"
- {
- u16 fmfrq;
-
- fmfrq = t_fm.freq / 10;
-
- DispNum_7p7seg(fmfrq);
- if(LED_5com7seg_dispBuf[0] == LED_7p7seg_0)
- LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
- LED_5com7seg_dispBuf[4] |= LED_FM;
- LED_5com7seg_dispBuf[4] |= LED_FM_DOT;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示輸入的數(shù)字
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_Input_Number_7p7seg(void)@"LED_7COM_API"
- {
- DispNum_7p7seg(inputNum);
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示MP3模式下的播放時間和當(dāng)前在線媒體:SD或者USB
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void MENU_Play_7p7seg(void)@"LED_7COM_API"
- {
- LED_playtime_display_7p7seg();
- LED_5com7seg_dispBuf[4] |= /*LED_PLAY | */LED_DDOT;
-
- if (fs_cur_dev() != DEVICE_UDISK)
- LED_5com7seg_dispBuf[4] |= LED_SD;
- else
- LED_5com7seg_dispBuf[4] |= LED_USB;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示播放模式
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_Play_Mode_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
- LED_5com7seg_dispBuf[1] = LED_7p7seg_repeatTable[(u8)sys_ctl.mode_play][0];
- LED_5com7seg_dispBuf[2] = LED_7p7seg_repeatTable[(u8)sys_ctl.mode_play][1];
- LED_5com7seg_dispBuf[3] = LED_7p7seg_repeatTable[(u8)sys_ctl.mode_play][2];
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示文件序號和當(dāng)前在線媒體:SD或者USB
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_Next_7p7seg(void)@"LED_7COM_API"
- {
- DispNum_7p7seg(t_msc.music_num);
- //LED_5com7seg_dispBuf[4] |= LED_PLAY;
-
- if (fs_cur_dev() != DEVICE_UDISK)
- LED_5com7seg_dispBuf[4] |= LED_SD;
- else
- LED_5com7seg_dispBuf[4] |= LED_USB;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示文件序號和當(dāng)前在線媒體:SD或者USB
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_ALLNUM_7p7seg(void)@"LED_7COM_API"
- {
- DispNum_7p7seg(t_msc.music_total);
- //LED_5com7seg_dispBuf[4] |= LED_PLAY;
-
- if (fs_cur_dev() != DEVICE_UDISK)
- LED_5com7seg_dispBuf[4] |= LED_SD;
- else
- LED_5com7seg_dispBuf[4] |= LED_USB;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示當(dāng)前電臺序號
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_FMNext_7p7seg(void)@"LED_7COM_API"
- {
- DispNum_7p7seg(t_fm.ch_sel);
- LED_5com7seg_dispBuf[1] = LED_7p7seg_P;
- LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
- LED_5com7seg_dispBuf[4] |= LED_FM;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示REC 錄音
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_Rec(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[1] = LED_7p7seg_R;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_E;
- LED_5com7seg_dispBuf[3] = LED_7p7seg_C;
- if (fs_cur_dev() == DEVICE_UDISK)
- LED_5com7seg_dispBuf[4] |= LED_USB;
- else if (fs_cur_dev() == DEVICE_SDMMC)
- LED_5com7seg_dispBuf[4] |= LED_SD;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示-sp-擴(kuò)音器用
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_Spear(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[0] = LED_7p7seg__;
- LED_5com7seg_dispBuf[1] = LED_7p7seg_S;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_P;
- LED_5com7seg_dispBuf[3] = LED_7p7seg__;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示”PC“
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_PCconnect_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[1] = LED_7p7seg_P;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_C;
- //LED_5com7seg_dispBuf[4] |= LED_USB;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED關(guān)閉
- @param 無
- @return 無
- @note 空函數(shù),留待擴(kuò)展
- */
- /*----------------------------------------------------------------------------*/
- void Menu_OFF_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[1] = LED_7p7seg_0;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_F;
- LED_5com7seg_dispBuf[3] = LED_7p7seg_F;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示”NO“
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_NULL_7p7seg(void)@"LED_7COM_API"
- {
-
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示”NO“
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_NO_Device_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[1] = LED_7p7seg_N;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_0;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示”NO“
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_NO_Music_7p7seg(void)@"LED_7COM_API"
- {
- Menu_NO_Device_7p7seg();
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),暫停時的菜單顯示
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_Pause_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[0] = LED_7p7seg_P;
- LED_5com7seg_dispBuf[1] = LED_7p7seg_A;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_U;
- LED_5com7seg_dispBuf[3] = LED_7p7seg_S;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示當(dāng)前使用的EQ
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void Menu_EQ_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[0] = LED_7p7seg_BLANK;
- LED_5com7seg_dispBuf[1] = LED_7p7seg_eqTable[sys_ctl.eq_num][0];
- LED_5com7seg_dispBuf[2] = LED_7p7seg_eqTable[sys_ctl.eq_num][1];
- LED_5com7seg_dispBuf[3] = LED_7p7seg_eqTable[sys_ctl.eq_num][2];
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示”LINE“
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void MENU_linein_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[0] = LED_7p7seg_L;
- LED_5com7seg_dispBuf[1] = LED_7p7seg_I;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_N;
- LED_5com7seg_dispBuf[3] = LED_7p7seg_E;
- LED_5com7seg_dispBuf[4] |= LED_AUX;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示”----“
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void MENU_Waiting_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[0] = LED_7p7seg_L;
- LED_5com7seg_dispBuf[1] = LED_7p7seg_0;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_A;
- LED_5com7seg_dispBuf[3] = LED_7p7seg_d;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED顯示函數(shù),顯示”HI“
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void MENU_Power_on_7p7seg(void)@"LED_7COM_API"
- {
- LED_5com7seg_dispBuf[0] = LED_7p7seg_H;
- LED_5com7seg_dispBuf[1] = LED_7p7seg_I;
- LED_5com7seg_dispBuf[2] = LED_7p7seg_F;
- LED_5com7seg_dispBuf[3] = LED_7p7seg_I;
-
- }
- /*----------------------------------------------------------------------------*/
- /**@brief LED初始化函數(shù),不顯示
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void LED_7p7seg_Init(void)@"TASK_RECORD_SEG_1"
- {
- #if (!SAME_COM_P)
- p_disp_buff2_value[0] = 0;
- p_disp_buff2_value[1] = 0;
- p_disp_buff2_value[2] = 0;
- p_disp_buff2_value[3] = 0;
- p_disp_buff2_value[4] = 0;
- p_disp_buff2_value[5] = 0;
- p_disp_buff2_value[6] = 0;
- ALL_COM_DIRIN;
- ALL_COM_OFF;
- #endif
-
- LED_COM_DIR |= 0xFE; //P20保持不變
- COM_T = 0;
- }
- #pragma constseg=LED_7p7s_CONST
- const H menu_LED_7p7seg[] =
- {
- Menu_NULL_7p7seg,
- Menu_EQ_7p7seg,
- Menu_VOL_7p7seg,
- Menu_FRE_7p7seg,
- Menu_Input_Number_7p7seg,
- Menu_NO_Music_7p7seg,
- MENU_Play_7p7seg,
- Menu_Play_Mode_7p7seg,
- Menu_Next_7p7seg,
- Menu_Pause_7p7seg,
- Menu_NO_Device_7p7seg,
- MENU_Power_on_7p7seg,
- MENU_Waiting_7p7seg,
- MENU_linein_7p7seg,
- Menu_FMNext_7p7seg,
- Menu_PCconnect_7p7seg,
- Menu_OFF_7p7seg,
- Menu_VOLUP_7p7seg,
- Menu_VOLDOWN_7p7seg,
- Menu_RTC_7p7seg,
- Menu_Rec,
- Menu_Spear,
- Menu_ALLNUM_7p7seg,
- Menu_Voice_Switch,
- };
- #pragma constseg=default
- /*----------------------------------------------------------------------------*/
- /**@brief 7p7s LED 顯示函數(shù)
- @param menu_number,需要顯示的菜單號碼
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void DispMenu_LED_7p7seg(u8 menu_number)@"LED_7P7S_API"
- {
- u8 i;
- void (*p)(void);
- p = menu_LED_7p7seg[menu_number];
- returnCount = 0;
- for(i=0;i<5;i++)
- LED_5com7seg_dispBuf[i] = LED_7p7seg_BLANK;
- (*p)();
-
- IE_EA = 0;
- led_value_set();
- IE_EA = 1;
- }
- /*----------------------------------------------------------------------------*/
- /**@brief 顯示函數(shù),根據(jù)指定的菜單號顯示相應(yīng)的菜單
- @param menu_number 需要顯示的菜單號碼
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- void DispMenu(u8 menu_number)@"LED_7P7S_API"//@"DealMsg"
- {
- if(menu_number != MENU_INPUT_NUM)
- inputNum = 0;
-
- #ifdef LED_7P7S_EN
- syslastbatval= 0xff;//更新電池顯示
- DispMenu_LED_7p7seg(menu_number);
- #endif
- }
- __near_func void DispBat(void)
- {
- u8 static __idata count;
-
- //if(sys_ctl.disp_bat_val != syslastbatval)
- {
- LED_5com7seg_dispBuf[4] &= ~LED_FULL;
- LED_5com7seg_dispBuf[4] &= ~LED_HALF;
-
- if((curMenu != MENU_OFF)&&(curMenu != MENU_POWER_ON))
- {
- if(sys_ctl.disp_bat_val == 2)
- {
- LED_5com7seg_dispBuf[4] |= LED_FULL;
- }
- else if(sys_ctl.disp_bat_val == 1)
- {
- LED_5com7seg_dispBuf[4] |= LED_HALF;
- }
- else if(sys_ctl.disp_bat_val == 0)
- {
- if(HalfsecFlash)
- {
- LED_5com7seg_dispBuf[4] |= LED_HALF;
- }
- }
- else
- {
- if(batchargecout == 1)
- {
-
- }
- else if(batchargecout == 2)
- {
- LED_5com7seg_dispBuf[4] |= LED_HALF;
- }
- else
- {
- LED_5com7seg_dispBuf[4] |= LED_FULL;
- LED_5com7seg_dispBuf[4] |= LED_HALF;
- }
- }
- }
-
- if(LED_5com7seg_dispBuf[4]&LED_HALF)
- p_disp_buff2_value[0] |= BIT(4);
- else
- p_disp_buff2_value[0] &= ~BIT(4);
-
- if(LED_5com7seg_dispBuf[4]&LED_FULL)
- p_disp_buff2_value[2] |= BIT(6);
- else
- p_disp_buff2_value[2] &= ~BIT(6);
- }
- //syslastbatval = sys_ctl.disp_bat_val;
- }
- #define BitCHK_0(REG,POS) ((REG & (1 << POS)) == 0x00)
- /*----------------------------------------------------------------------------*/
- /**@brief 7腳LED掃描函數(shù),逐次點燈每個LED的每一段(P21 ~ P27)
- @param 無
- @return 無
- @note
- */
- /*----------------------------------------------------------------------------*/
- __near_func void LED_7p7seg_Scan(void)
- {
- static u8 __idata count = 0;
-
- u8 com_seg_first_off;
-
- u8 dis_seg = 0,dir_temp = 0,out_temp = 0;
-
- DispBat();
- /*if (COM_T == 8)
- {
- count = 8;
- LineInCheck(); //復(fù)用檢測
- EarphoneCheck();
- DCINCheck();
- } */
-
- if(sys_ctl.backlight_sta == 0)
- {
- ALL_COM_OFF;
- ALL_COM_DIRIN;
- return;
- }
-
- if (count > 6)
- {
- count = 0;
- COM_T++;
- }
-
- if(COM_T > 6) //復(fù)用檢測時注意修改此處
- COM_T = 0;
-
- dis_seg = p_disp_buff2_value[COM_T];
-
- //if(count == COM_T) //SEG及COM同一IO情況不存在
- //{
- // count += 1;
- //}
-
-
- while(count<7)
- {
- if(count == COM_T) //SEG及COM同一IO情況不存在
- {
- count ++;
- }
-
- if(BitCHK_0(dis_seg,count))
- {
- count++;
- // break;
- }
- else
- {
- break;
- }
- }
-
- dis_seg = dis_seg & BIT(count);
- count++;
-
- //同一個P口的時候
- //out_temp = LED_COM;
-
- dir_temp = LED_COM_DIR;
-
- dir_temp = 0xff;
- dir_temp &= ~((1 << COM_T) | dis_seg);
-
- out_temp |= (1 << COM_T);
-
- LED_COM = out_temp;
- LED_COM_DIR = dir_temp; //點亮一段
-
- #if (!SAME_COM_P) //數(shù)碼管的口,不在同一個P口上
-
- ALL_COM_OFF;
- ALL_COM_DIRIN;
-
- if(LED_COM&BIT(0))
- {
- LED_COM_0_ON;
- }
-
- if(LED_COM&BIT(1))
- {
- LED_COM_1_ON;
- }
-
- if(LED_COM&BIT(2))
- {
- LED_COM_2_ON;
- }
-
- if(LED_COM&BIT(3))
- {
- LED_COM_3_ON;
- }
-
- if(LED_COM&BIT(4))
- {
- LED_COM_4_ON;
- }
-
- if(LED_COM&BIT(5))
- {
- LED_COM_5_ON;
- }
-
- if(LED_COM&BIT(6))
- {
- LED_COM_6_ON;
- }
-
- if((dir_temp&BIT(0)) == 0)
- {
- COM_DIR0_OUT;
- }
-
- if((dir_temp&BIT(1)) == 0)
- {
- COM_DIR1_OUT;
- }
-
- if((dir_temp&BIT(2)) == 0)
- {
- COM_DIR2_OUT;
- }
-
- if((dir_temp&BIT(3)) == 0)
- {
- COM_DIR3_OUT;
- }
-
- if((dir_temp&BIT(4)) == 0)
- {
- COM_DIR4_OUT;
- }
-
- if((dir_temp&BIT(5)) == 0)
- {
- COM_DIR5_OUT;
- }
-
- if((dir_temp&BIT(6)) == 0)
- {
- COM_DIR6_OUT;
- }
-
- #endif
-
- // count++;
- }
- /*------------------------------------------------------3--------------------------*/
- /**@brief 根據(jù)7腳LED的真值表進(jìn)行映射(每段輸出高的IO記為COM端 7*7)COM:0~6 SEG:1~7
- @param 無
- @return 無
- @note
- */
- /*------------------------------------------------------------------------------*/
- void led_value_set(void)@"LED_7COM_API"
- {
- u8 tmpbuf[7];
-
- memset(tmpbuf, 0, 7);
- if(LED_5com7seg_dispBuf[0]&BIT_A) tmpbuf[0] |= BIT(1);
- if(LED_5com7seg_dispBuf[0]&BIT_B) tmpbuf[0] |= BIT(2);
- if(LED_5com7seg_dispBuf[0]&BIT_C) tmpbuf[3] |= BIT(0);
- if(LED_5com7seg_dispBuf[0]&BIT_D) tmpbuf[4] |= BIT(0);
- if(LED_5com7seg_dispBuf[0]&BIT_E) tmpbuf[0] |= BIT(3);
- if(LED_5com7seg_dispBuf[0]&BIT_F) tmpbuf[1] |= BIT(0);
- if(LED_5com7seg_dispBuf[0]&BIT_G) tmpbuf[2] |= BIT(0);
- if(LED_5com7seg_dispBuf[1]&BIT_A) tmpbuf[1] |= BIT(2);
- if(LED_5com7seg_dispBuf[1]&BIT_B) tmpbuf[1] |= BIT(3);
- if(LED_5com7seg_dispBuf[1]&BIT_C) tmpbuf[4] |= BIT(1);
- if(LED_5com7seg_dispBuf[1]&BIT_D) tmpbuf[1] |= BIT(5);
- if(LED_5com7seg_dispBuf[1]&BIT_E) tmpbuf[1] |= BIT(4);
- if(LED_5com7seg_dispBuf[1]&BIT_F) tmpbuf[2] |= BIT(1);
- if(LED_5com7seg_dispBuf[1]&BIT_G) tmpbuf[3] |= BIT(1);
- if(LED_5com7seg_dispBuf[2]&BIT_A) tmpbuf[4] |= BIT(3);
- if(LED_5com7seg_dispBuf[2]&BIT_B) tmpbuf[2] |= BIT(4);
- if(LED_5com7seg_dispBuf[2]&BIT_C) tmpbuf[3] |= BIT(4);
- if(LED_5com7seg_dispBuf[2]&BIT_D) tmpbuf[5] |= BIT(0);
- if(LED_5com7seg_dispBuf[2]&BIT_E) tmpbuf[5] |= BIT(2);
- if(LED_5com7seg_dispBuf[2]&BIT_F) tmpbuf[3] |= BIT(2);
- if(LED_5com7seg_dispBuf[2]&BIT_G) tmpbuf[4] |= BIT(2);
- if(LED_5com7seg_dispBuf[3]&BIT_A) tmpbuf[6] |= BIT(5);
- if(LED_5com7seg_dispBuf[3]&BIT_B) tmpbuf[5] |= BIT(6);
- if(LED_5com7seg_dispBuf[3]&BIT_C) tmpbuf[4] |= BIT(5);
- if(LED_5com7seg_dispBuf[3]&BIT_D) tmpbuf[5] |= BIT(3);
- if(LED_5com7seg_dispBuf[3]&BIT_E) tmpbuf[3] |= BIT(5);
- if(LED_5com7seg_dispBuf[3]&BIT_F) tmpbuf[5] |= BIT(4);
- if(LED_5com7seg_dispBuf[3]&BIT_G) tmpbuf[4] |= BIT(6);
-
- if(LED_5com7seg_dispBuf[4]&LED_DDOT) tmpbuf[2] |= BIT(3);
- if(LED_5com7seg_dispBuf[4]&LED_USB) tmpbuf[5] |= BIT(1);
- if(LED_5com7seg_dispBuf[4]&LED_SD) tmpbuf[0] |= BIT(5);
- if(LED_5com7seg_dispBuf[4]&LED_FM) tmpbuf[2] |= BIT(5);
- if(LED_5com7seg_dispBuf[4]&LED_FM_DOT) tmpbuf[6] |= BIT(4);
- if(LED_5com7seg_dispBuf[4]&LED_HALF) tmpbuf[0] |= BIT(4);
- if(LED_5com7seg_dispBuf[4]&LED_FULL) tmpbuf[2] |= BIT(6);
-
- memcpy(p_disp_buff2_value, tmpbuf, 7);
- }
- #endif
復(fù)制代碼
|
|