⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmdisplay.c

📁 三洋FM模块的原代码,调试通过了的,很好用的,欢迎大家下载
💻 C
📖 第 1 页 / 共 2 页
字号:
    unsigned int      Temp_DrawMode;
    
    TempColor      = LCD_GetColor();
    Temp_DrawMode  = LCD_SetTextMode(LCD_DRAWMODE_TRANS);
    
    if (FmDisplayFlag & FM_DISPFLAG_SUBMENU_BK) {
        //LCD_SetDispRect(RADIO_SUBMENUBK_PIC_X, RADIO_SUBMENUBK_PIC_Y, (RADIO_SUBMENUBK_PIC_X + RADIO_SUBMENUBK_PIC_XSIZE - 1), (RADIO_SUBMENUBK_PIC_Y + RADIO_SUBMENUBK_PIC_YSIZE - 1));
        DisplayPicture(RADIO_SUBMENUBK_PIC_X, RADIO_SUBMENUBK_PIC_Y, RADIO_SUBMENUBK_PIC_XSIZE, RADIO_SUBMENUBK_PIC_YSIZE, RADIO_SUBMENUBK_PIC);
    }
    
    if (FmDisplayFlag & FM_DISPFLAG_SUBMENU_SEL) {
        
        LCD_SetColor(COLOR_BLACK);
        for (temp = 0; temp < 5; temp ++) {
            
            DisplayPicture(RADIO_SUBMENUBK_PIC_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)), 
                           RADIO_SUBMENUBK_PIC_XSIZE, RADIO_SUB_MENU_TXT_YSTEP, 
                           (NFA_RADIO_SUBMENUBK_PIC + ((unsigned long)(((RADIO_SUB_MENU_TXT_Y - RADIO_SUBMENUBK_PIC_Y) + (temp * RADIO_SUB_MENU_TXT_YSTEP)) * RADIO_SUBMENUBK_PIC_XSIZE * 2))));
            
            if(temp == FmFunctionSele) {
                if ((FmFunctionSele == FM_STATE_SAVE) || (FmFunctionSele == FM_STATE_DEL)) {
                    DisplayPicture(RADIO_SUBMENU_ARROW_PIC_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)) + 2, 
                                   RADIO_SUBMENU_ARROW_PIC_XSIZE, RADIO_SUBMENU_ARROW_PIC_YSIZE, RADIO_SUBMENU_ARROW_ARROW);
                }
                LCD_SetTextMode(LCD_DRAWMODE_REV);
            }
            DisplayMenuStr(RADIO_SUB_MENU_TXT_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)), RADIO_SUB_MENU_TXT_XSIZE, RADIO_SUB_MENU_TXT_YSIZE, LCD_TEXTALIGN_LEFT, (NFA_RADIO_TEXT + (unsigned long)(temp) * MENU_PER_BYTE));
            LCD_SetTextMode(LCD_DRAWMODE_TRANS); 
        }
    }
    FmDisplayFlag = FM_DISPFLAG_NULL;
    
    LCD_SetTextMode(Temp_DrawMode);
    LCD_SetColor(TempColor);
}
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
__attribute__((section(".fm_text,\"ax\"")))
void FmFreq2Ascii(unsigned int chl, unsigned int freq, unsigned int *pDispBuf)
{
    pDispBuf[0] = 'C';
    pDispBuf[1] = 'H';
    pDispBuf[2] = (chl+1)/10 + '0';
    pDispBuf[3] = (chl+1)%10 + '0';
    pDispBuf[4] = ':';
    pDispBuf[5] = ' ';
    pDispBuf[8] = '.';
    pDispBuf[10] = 'M';
    pDispBuf[11] = 'H';
    pDispBuf[12] = 'z';
    pDispBuf[13] = 0;
    if(freq != 0){
        pDispBuf[5]  = freq /10000;
        pDispBuf[5] += (pDispBuf[5]?'0':' ');
        pDispBuf[6]  = (freq%10000)/1000 + '0';
        pDispBuf[7]  = (freq%1000)/100 + '0';
        
        pDispBuf[9] = (freq%100)/10   + '0';
    }else{
        pDispBuf[6]  = 'E';
        pDispBuf[7]  = 'm';
        pDispBuf[8]  = 'p';
        pDispBuf[9]  = 't';
        pDispBuf[10] = 'y';
        pDispBuf[11] = 0;
    }
}
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
__attribute__((section(".fm_text,\"ax\"")))
void DisplayFmList(void)
{
    unsigned int i,j,m;
    unsigned int mode_tmp;
    unsigned int temp, TempColor, Temp_DrawMode;
    
    unsigned int per_id = PrevCh;
    unsigned int cur_id = CurCh;
    
    unsigned int k;
    unsigned int *pFmFreq;
    unsigned int FmDispBuf[MENU_PER_BYTE];
    
    TempColor      = LCD_GetColor();
    Temp_DrawMode  = LCD_SetTextMode(LCD_DRAWMODE_TRANS);

    if (FmDisplayFlag & FM_DISPFLAG_LIST_BK) {
        
        //LCD_SetDispRect(RADIO_LISTBK_PIC_X, RADIO_LISTBK_PIC_Y, (RADIO_LISTBK_PIC_X + RADIO_LISTBK_PIC_XSIZE - 1), (RADIO_LISTBK_PIC_Y + RADIO_LISTBK_PIC_YSIZE - 1));
        DisplayPicture(RADIO_LISTBK_PIC_X,RADIO_LISTBK_PIC_Y,RADIO_LISTBK_PIC_XSIZE, RADIO_LISTBK_PIC_YSIZE, RADIO_LISTBK_PIC);
        
        k = cur_id / DEL_FM_SCREEN_PER_LINE;
        k = k * DEL_FM_SCREEN_PER_LINE;
        pFmFreq = &GlobalFmVar.FmFreqArray[k];
        
        LCD_SetColor(COLOR_BLACK);
        for (i = 0; i < DEL_FM_SCREEN_PER_LINE; i++, pFmFreq++) {
            
            FmFreq2Ascii(i+k, *pFmFreq, FmDispBuf);
            
            if ((i + k) == cur_id) LCD_SetTextMode(LCD_DRAWMODE_REV);
            LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
            LCD_SetTextMode(LCD_DRAWMODE_TRANS);
        }
        
        if (cur_id < DEL_FM_SCREEN_PER_LINE) {
            DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROWBK);
        } else {
            DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROW);
        }
        
        temp = cur_id / DEL_FM_SCREEN_PER_LINE;
        if (((temp + 1) * DEL_FM_SCREEN_PER_LINE) > FREQMAXNUMBLE) {
            DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROWBK);
        } else {
            DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROW);
        }
    }
    
    if (FmDisplayFlag & FM_DISPFLAG_LIST_SEL) {
        
        if (cur_id < DEL_FM_SCREEN_PER_LINE) {
            DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROWBK);
        } else {
            DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROW);
        }
        
        temp = cur_id / DEL_FM_SCREEN_PER_LINE;
        if (((temp + 1) * DEL_FM_SCREEN_PER_LINE) > FREQMAXNUMBLE) {
            DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROWBK);
        } else {
            DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROW);
        }
            
        if((per_id / DEL_FM_SCREEN_PER_LINE) != temp) {
            
            DisplayPicture(RADIO_LISTBK_PIC_X, RADIO_SUB_LIST_TXT_Y, 
                           RADIO_LISTBK_PIC_XSIZE, (RADIO_SUB_LIST_TXT_YSTEP * DEL_FM_SCREEN_PER_LINE), 
                           (RADIO_LISTBK_PIC + (unsigned long)(RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) * RADIO_LISTBK_PIC_XSIZE * 2));
            
                        
            if(cur_id == (FREQMAXNUMBLE - 1) && (per_id == 0)){
                m = cur_id%DEL_FM_SCREEN_PER_LINE;
                k = cur_id - m;
                pFmFreq = &GlobalFmVar.FmFreqArray[k];
            }else if(((per_id % DEL_FM_SCREEN_PER_LINE)==0)&&((cur_id%DEL_FM_SCREEN_PER_LINE)==(DEL_FM_SCREEN_PER_LINE-1))){
                m = cur_id%DEL_FM_SCREEN_PER_LINE;
                k = cur_id - m;
                pFmFreq = &GlobalFmVar.FmFreqArray[k];
            }else{
                pFmFreq = &GlobalFmVar.FmFreqArray[cur_id];
                m = FREQMAXNUMBLE - (cur_id+1);
                k = cur_id;
            }
            
            LCD_SetColor(COLOR_BLACK);
            for (i=0; (i<DEL_FM_SCREEN_PER_LINE && i<=m); i++, pFmFreq++) {
                FmFreq2Ascii(k+i, *pFmFreq, FmDispBuf);
                
                if ((i + k) == cur_id) LCD_SetTextMode(LCD_DRAWMODE_REV);
                LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
                LCD_SetTextMode(LCD_DRAWMODE_TRANS);
            }
        }else{
            j = per_id%DEL_FM_SCREEN_PER_LINE;
            i = cur_id%DEL_FM_SCREEN_PER_LINE;
            
            LCD_SetColor(COLOR_BLACK);
            
            DisplayPicture(RADIO_LISTBK_PIC_X, (RADIO_SUB_LIST_TXT_Y + j * RADIO_SUB_LIST_TXT_YSTEP), 
                           RADIO_LISTBK_PIC_XSIZE, RADIO_SUB_LIST_TXT_YSTEP, 
                           (RADIO_LISTBK_PIC + (unsigned long)((RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) + j * RADIO_SUB_LIST_TXT_YSTEP) * RADIO_LISTBK_PIC_XSIZE * 2));
                           
            FmFreq2Ascii(per_id, GlobalFmVar.FmFreqArray[per_id], FmDispBuf);
            LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + j * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
            
            DisplayPicture(RADIO_LISTBK_PIC_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), 
                           RADIO_LISTBK_PIC_XSIZE, RADIO_SUB_LIST_TXT_YSTEP, 
                           (RADIO_LISTBK_PIC + (unsigned long)((RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) + i * RADIO_SUB_LIST_TXT_YSTEP) * RADIO_LISTBK_PIC_XSIZE * 2));
                           
            FmFreq2Ascii(cur_id, GlobalFmVar.FmFreqArray[cur_id], FmDispBuf);
            LCD_SetTextMode(LCD_DRAWMODE_REV);
            LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
        }
        LCD_SetColor(TempColor);
    }
    FmDisplayFlag = FM_DISPFLAG_NULL;
    
    LCD_SetTextMode(Temp_DrawMode);
    LCD_SetColor(TempColor);
}
#endif
//******************************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -