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

📄 mp3_show.h

📁 自己手动自做MP3 
💻 H
字号:
#ifndef	__MP3_SHOW_H__
#define	__MP3_SHOW_H__

//IOA高八位
#define   	Clear		0x0100		//清屏
#define		Home		0x0200		//归位 AC=0	
#define		In_Down		0x0400		//数据读写后,AC自动减1,画面不动
#define		In_Down_Move	0x0500		//数据读写后,AC自动减1,画面平移	
#define		In_Up		0x0600		//数据读写后,AC自动增1,画面不动
#define 	In_Up_Move	0x0700		//数据读写后,AC自动增1,画面平移
#define		D0_C0_B0	0x0800		//显示关,光标关,不闪烁
#define		D0_C0_B1	0x0900		//显示关,光标关,闪烁
#define		D0_C1_B0	0x0A00		//显示关,光标开,不闪烁
#define		D0_C1_B1	0x0B00		//显示关,光标开,闪烁
#define		D1_C0_B0	0x0C00		//显示开,光标关,不闪烁
#define		D1_C0_B1	0x0D00		//显示开,光标关,闪烁
#define		D1_C1_B0	0x0E00		//显示开,光标开,不闪烁
#define		D1_C1_B1	0x0F00		//显示开,光标开,闪烁
#define		C0_L0		0x1000		//光标向左平移一个字符位
#define		C0_R1		0x1400		//光标向右平移一个字符位
#define		S1_L0		0x1800		//画面向左平移一个字符位
#define		S1_L1		0x1C00		//画面向右平移一个字符位
#define		Function	0x3800		//8位数据接口,两行显示,5*7点阵字符
#define		CGRAM		0x4000
#define		DDRAM		0x8000
#define		N0_Busy		0x0000		
#define		Busy		0x8000		

//IOB第13,14,15口
#define		WR_COM		0x0000		//写命令操作
#define		RD_STA		0x4000		//读状态操作
#define		WR_DAT		0x8000		//写数据操作
#define		RD_DAT		0xC000		//读数据操作

#define 		s1   	0x0000
#define			s2		0x4000
void Init_LCD()
{ 
    *P_IOA_Dir=0xff00;
    *P_IOA_Attrib=0xffff;	
    *P_IOA_Data=0x0000;

    *P_IOB_Dir=0xf000;	
    *P_IOB_Attrib=0xffff;
    *P_IOB_Data=0x2000;
    
    Delay(10000);
    *P_IOA_Data=Clear;
    WRCOM();
    *P_IOA_Data=Function;
	WRCOM();
	Delay(3000);
    *P_IOA_Data=D1_C0_B0;
    WRCOM();

    *P_IOA_Data=In_Up;
    WRCOM();
}


void WRCOM()
{ 
	*P_IOB_Data=WR_COM | 0x2000;
	*P_IOB_Data=0x0000 | WR_COM;
	F_busy();
	*P_IOB_Data=0x2000;
}
void RDSTA()
{
	*P_IOB_Data=RD_STA | 0x2000;
	*P_IOB_Data=0x0000 | RD_STA;
	F_busy();
	*P_IOB_Data=0x2000;
}	
void WRDATA()
{
	*P_IOB_Data=WR_DAT | 0x2000;
	*P_IOB_Data=0x0000 | WR_DAT;
	F_busy();
	*P_IOB_Data=0x2000;
}	 
void RDDATA()
{  
    *P_IOB_Data=RD_DAT | 0x2000;
    *P_IOB_Data=0x0000 | RD_DAT;
	F_busy();
	*P_IOB_Data=0x2000;
}	

void F_busy()
{
   	*P_IOB_Data=RD_STA | 0x2000;
	*P_IOB_Data=0x0000 | RD_STA;
	Delay(1000);
	*P_IOB_Data=0x2000;
	*P_Watchdog_Clear=0x0001;
}	

void Delay(unsigned number)									//延时程序
{
	unsigned i;
	for(i=0;i<number;i++)
	    *P_Watchdog_Clear=0x0001;							//清看门狗操作
}		

void show_start()		//显示开始画面	
{
   Init_LCD();
   LCD_Show(start1,8,(s1+0x0400));		
   LCD_Show(start2,15,(s2+0x0000));		
}

void show_play()			//显示第几首歌曲
{
   unsigned p,p1,p2;
   Init_LCD();
   LCD_Show(play1,12,(s1+0x0000));			//在第一行显示
   LCD_Show(play2,10,(s2+0x0500));			//在第二行显示
   if(song>=10)  
     {	p=song;
	p1=p%10;
	p=p/10;
	p2=p%10;
	LCD_Show_char(number[p2],(s1+0x0d00));
  	LCD_Show_char(number[p1],(s1+0x0e00));	
     }
   else LCD_Show_char(number[song],(s1+0x0d00));
}	

void show_volume()		     //显示音量画面		
{
    unsigned p,p1,p2;
   Init_LCD();
   LCD_Show(volume1,6,(s1+0x0000));			
   LCD_Show(volume2,6,(s2+0x0900));			
   if(song>=10)  
     {	p=volume;
	p1=p%10;
	p=p/10;
	p2=p%10;
	LCD_Show_char(number[p2],(s1+0x0d00));
  	LCD_Show_char(number[p1],(s1+0x0e00));	
     }
   else LCD_Show_char(number[volume],(s1+0x0d00));
}

void show_record()			//显示录音画面
{
     Init_LCD();
     LCD_Show(record,9,(s1+0x0000));
}

void show_play_record()			//显示播放录音画面
{
     Init_LCD();
     LCD_Show(play_record,11,(s1+0x0000));
}

void LCD_Show(unsigned line[],unsigned N,unsigned s)
{	
	unsigned i;
	*P_IOA_Data=DDRAM | s;
	WRCOM();	
	for(i=0;i<N;i++)
	{
		*P_IOA_Data=line[i];
		WRDATA();
		Delay(100);
		*P_Watchdog_Clear=0x0001;
	}	
}
	
void LCD_Show_char(unsigned data,unsigned s)
{
	*P_IOA_Data=DDRAM | s;
	WRCOM();
	*P_IOA_Data=data;
		WRDATA();
		Delay(100);
}
#endif

⌨️ 快捷键说明

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