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

📄 disp_task.c

📁 atmel at89c51snd1c mp3芯片方案源码
💻 C
字号:

#include "config.h"                 /* system configuration */
#include "lib_mcu\kbd\key_drv.h"    /* Keyboard driver definition */
#include "modules\song\song_drv.h"  /* song driver definition */
#include "modules\file\file.h"      /* file definition */
#include "disp_task.h"              /* display task definition */
#include "lib_mcu\lcd\lcd_drv.h"                   /* display definition */
#include <stdio.h>


extern Byte    key_mode_last;
extern Byte    key_mode;
extern Byte    song_sound;

extern  data    Byte    gl_cpt_tick;        /* general tick counter */

static  data    Byte    disp_state;         /* task state */
static  bdata   bit     disp_clock_on;      /* set to TRUE to start clock */
static  data    Byte    disp_sec_cpt;       /* second counter */
static  data    Byte    disp_min_cpt;       /* minute counter */
static  bdata   bit     disp_clock_on;      /* set to TRUE to start clock */


static  data    char pdata *  disp_buffer;



void print_repeat(bit a)
{
 a=a;
}

void print_state_error()
{
}

void disp_name_stop()
{
}

void disp_end_of_play()
{
}

/////////////////////////////////////////////////////////////////////////////////////
void print_init (void)
{
  lcd_ini();                              /* lcd initialization */
}

////////////////////////////////////////////////////////////////////////////////////
void print_state_play(void)
{ 
  lcd_print_string(22,">>");
}

////////////////////////////////////////////////////////////////////////////////////
void print_state_pause()
{
 lcd_print_string(22,"||");
}

/*
////////////////////////////////////////////////////////////////////////////////////
bit print_name (char pdata *string)
{
#if CONF_DISPLAY == LCD
  lcd_set_cur(POS_FILE);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  lcd_putchar(*string++);
  return (*string == '\0');
#else
  if (string);
  return 1;
#endif
}
*/


////////////////////////////////////////////////////////////////////////////////////
void print_file_name()
{
#if CONF_DISPLAY == LCD
  switch(File_type())                       /* print file type icon */
  {
    case FILE_DIR:
      lcd_print_string(18,"DIR");     /* select directory icon */
      break;

    case FILE_MP3:
      lcd_print_string(18,"MP3");      /* select song icon */
      break;

    case FILE_WAV:
      lcd_print_string(18,"WAV");     /* select voice icon */
      break;

    default:
      lcd_print_string(16,"   ");    /* select voice icon */
      break;
  }
#endif
  //disp_name_start();                        /* start name display */
  disp_buffer = File_get_name();
  lcd_print_string(0x40, disp_buffer);
}


////////////////////////////////////////////////////////////////////////////////////
void print_key_mode(void)
{
   switch(key_mode)
   {
      case MP3_PLAY_MODE:
           lcd_print_string(10,"PLAY");
	  break;

      case MP3_VOL_MODE:
           lcd_print_string(10,"VOLU");
	  break;

      case MP3_BASS_MODE:
           lcd_print_string(10,"BASS");
	  break;

      case MP3_MED_MODE:
           lcd_print_string(10,"MEDI");
	  break;

      case MP3_TRE_MODE:
           lcd_print_string(10,"TREB");
	  break;

      case MP3_BOOST_MODE:
           lcd_print_string(10,"BOOS");
	  break;

	  default:
	  break;
   }
   
}


///////////////////////////////////////////////////////////////////////////////
void print_sound_level()
{
  INT8U pStr[9] = "         ";

  INT16U u16Value;

  u16Value = song_get_level();

  switch (song_sound)
  {
     case SND_VOLUME:
	      sprintf(pStr, "VOLU:%02d\0", u16Value);
          lcd_print_string(0x51, pStr);
     break;

     case SND_BASS:
	      sprintf(pStr, "BASS:%02d\0", u16Value);
          lcd_print_string(0x51, pStr);
     break;
	
     case SND_MEDIUM:
	      sprintf(pStr, "MEDI:%02d\0", u16Value);
          lcd_print_string(0x51, pStr);	      
	 break;

     case SND_TREBLE:
	      sprintf(pStr, "TREB:%02d\0", u16Value);
          lcd_print_string(0x51, pStr);	      
	 break;

     case SND_BBOOST:
	      sprintf(pStr, "BBST:%02d\0", u16Value);
          lcd_print_string(0x51, pStr);	      
	 break;

     case SND_NONDIS: 
          sprintf(pStr, "       ");
          lcd_print_string(0x51, pStr);	
     break;
   }		   
}


///////////////////////////////////////////////////////////////////////////////
void print_min(INT8U u8Min)
{ 
   INT8U pStr[4];
   INT16U u16Min;
   u16Min = u8Min;

   sprintf(pStr, "%02d:\0", u16Min);
   lcd_print_string(0x4a, pStr);	
}

///////////////////////////////////////////////////////////////////////////////
void print_sec(INT8U u8Sec)
{
   INT8U pStr[3];
   INT16U u16Sec;
   u16Sec = u8Sec;

   sprintf(pStr, "%02d\0", u16Sec);
   lcd_print_string(0x4d, pStr);
}


///////////////////////////////////////////////////////////////////////////////
void print_time(INT8U u8Min,INT8U u8Sec)
{
   print_min(u8Min);
   print_sec(u8Sec);
}


///////////////////////////////////////////////////////////////////////////////
void disp_clock_reset (void)
{
  disp_clock_on = FALSE;
  disp_sec_cpt = 0;
  disp_min_cpt = 0;
  print_time(0, 0);                         /* display 0:00 */
}


///////////////////////////////////////////////////////////////////////////////
void disp_clock_start (void)
{
  disp_clock_on = TRUE;
}


///////////////////////////////////////////////////////////////////////////////
void disp_clock_stop (void)
{
  disp_clock_on = FALSE;
}

///////////////////////////////////////////////////////////////////////////////
void disp_cdrom_time(INT8U u8Track,INT8U u8Min,INT8U u8Sec)
{ 
   INT8U pStr[20];

   INT16U u16Track,u16Min,u16Sec;
   u16Track = u8Track;
   u16Min   = u8Min;
   u16Sec   = u8Sec;
   sprintf(pStr, "Track %02d  %02d:%02d", u16Track,u16Min,u16Sec);
   lcd_print_string(0x09, pStr);
}





///////////////////////////////////////////////////////////////////////////////
void disp_task_init(void)
{  
   disp_clock_on = FALSE;
   disp_state = DISP_INIT;
   //print_init();
}

///////////////////////////////////////////////////////////////////////////////
void disp_task (void)
{
  switch (disp_state)
  {
    case DISP_IDLE:
    {
       break;
    }

    case DISP_INIT:
    {
      disp_state = DISP_TICK0;
      gl_cpt_tick = 0;
      break;
    }

    case DISP_TICK0:
    {
      disp_state = DISP_TICK1;
      break;
    }

    case DISP_TICK1:
    {
      if (gl_cpt_tick > DISP_TICK_SEC)      /* 1/2 sec expiration */
      {
        gl_cpt_tick -= DISP_TICK_SEC;
        if (disp_clock_on)
        {
          disp_state = DISP_SEC;
        }
        else
        {
          disp_state = DISP_TICK0;
        }
      }
      break;
    }

    case DISP_SEC:
    {
      if (disp_sec_cpt == DISP_SEC_MIN)     /* 1 min expiration */
      {
        disp_sec_cpt = 0;
        print_sec(disp_sec_cpt);
        disp_state = DISP_MIN;
      }
      else
      {
        disp_sec_cpt++;
        print_sec(disp_sec_cpt);
        disp_state = DISP_TICK0;
      }
      break;
    }

    case DISP_MIN:
    {
      disp_min_cpt++;
      print_min(disp_min_cpt);
      disp_state = DISP_TICK0;
      break;
    }
  }
}

⌨️ 快捷键说明

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