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

📄 main.c

📁 利用SPCE061A 单片机、SPR 模组、液晶1602 制作音乐盒播放器
💻 C
字号:
//=======================================================================
//  The information contained herein is the exclusive property of
//  Sunnnorth Technology Co. And shall not be distributed, reproduced,
//  or disclosed in whole in part without prior written permission.
//          (C) COPYRIGHT 2003  SUNNORTH TECHNOLOGY CO.
//                       ALL RIGHTS RESERVED
//  The entire notice above must be reproduced on all authorized copies.
//=======================================================================

//=======================================================================
//  工程名称:Music_Box.spj
//  功能描述: (1)	开机时有欢迎提示画面。
//			  (2)	键盘界面显示。
//			  (3)	液晶上显示歌曲的名字,可通过按键选择歌曲。
//   		  (4)	按键后播放对应歌曲,显示界面对应的歌曲反色显示。
//  文件来源:课程设计 音乐盒的制作   
//  硬件连接:SPCE061A ----   液晶模块
//			  IOA8     ----   D0
//			  IOA9	   ----	  D1	
//			  IOA10    ----	  D2
//			  IOA11	   ----   D3
//			  IOA12	   ----   D4
//			  IOA13    ----   D5
//			  IOA14    ----   D6
//			  IOA15    ----   D7
//			  IOB4     ----   AO
//			  IOB5     ----   R/W
//            IOB6     ----   EP
//            +5       ----   +
//            地       ----   —
//      -----------------------------------
//			  KEY1     ----   功能播放
//		      KEY2     ----   停止/播放
//			  KEY3     ----   歌曲选择
//  IDE环境: SUNPLUS u'nSPTM  IDE 1.8.4
//  涉及的库:CMacro.lib、sacmv25.lib        
//  组成文件:
//			  main.c
//            splc501DisplayTAB.asm/splc501Hardware.asm/splc501sys.asm/splc501var.asm 
//            key.asm/system.asm
//			  A2000.h/hardware.h/Lab_parameter.h
//			  hardware.asm	   
//            isr.asm
//            resource.inc/resource.asm
//  日期:     2004-1-2
//======================================================================
#include "hardware.h"
#include "lab_parameter.h"
#include "a2000.h"

//======================= 全程变量设置开始 ================================
int 	gActivated;			// 该变量用于检测是否有触发命令,当有识别出语句		                    		
int 	I_Key = 0;			// 键值
int 	Step=0;				// 播放歌曲序号
int 	Ret=0;				
//======================= 全程变量设置结束 ================================

//============================================================
// 文件名称:main.c
// 实现功能:点亮整个显示屏,显示字符""
// 日期:    2004/1/2
//============================================================
main()
{
	int i,j;                          			
	Init_sys();		                  	// 初始化字库      
	FG_InitGraphic();	              	
	SP_Init_IOA(0xff00,0x0000,0xff00);  // 初始化LCDIO口   

//---------------------- 开机界面 ------------------------    
  	FG_ClearScreen(1);
 	for(j=0;j<=7;j++)              			// 延时保持整个显示屏点亮
       for(i=0;i<0xffff;i++)
     	   	Clear_Watch_Dog();     			// 清看门狗       
	FG_ClearScreen(0);		
	FG_PutStr("Welcome to you!",3,122,60);  // 显示字符
	for(j=0;j<=13;j++)             			// 延时保持整个显示屏点亮
       	for(i=0;i<0x777;i++)
      	   	Clear_Watch_Dog();     			// 清看门狗
	FG_PutStr("Music_Box ",2,98,20);		// 显示字符
	for(j=0;j<=19;j++)             			// 延时保持整个显示屏点亮
       	for(i=0;i<0xffff;i++)
      	   	Clear_Watch_Dog();     			// 清看门狗       
      
//---------------------- 主屏界面 --------------------------
//	FG_ClearScreen(1);
 	for(j=0;j<=7;j++)             			// 延时 保持整个显示屏点亮
       for(i=0;i<0x777;i++)
     	   	Clear_Watch_Dog();     			// 清看门狗      
	FG_ClearScreen(0);	
	FG_PutStr("1  Green ",0,122,60);		// 显示字符
	Clear_Watch_Dog();     					// 清看门狗       
	FG_PutStr("2  mp3 ",0,122,52);
	Clear_Watch_Dog();     					// 清看门狗       函数定义在Splc501sys.asm
	FG_PutStr("3  red ",0,122,44);
	Clear_Watch_Dog();    					// 清看门狗       函数定义在Splc501sys.asm
	FG_PutStr("4  yueguan ",0,122,36);
	Clear_Watch_Dog();    					// 清看门狗       函数定义在Splc501sys.asm
	FG_PutStr("5  tianhe ",0,122,28);		// 显示字符
	Clear_Watch_Dog();     					// 清看门狗       函数定义在Splc501sys.asm
	FG_SetLineStyle(6);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
	FG_Ellipse(40,13,4,4);  				// 画一实体椭圆 , 函数定义在Splc501sys.asm	
    Clear_Watch_Dog();     					// 清看门狗       函数定义在Splc501sys.asm
    FG_PutStr("stop ",0,50,8);				// 显示字符
   	Clear_Watch_Dog();     					// 清看门狗       函数定义在Splc501sys.asm
   	FG_Ellipse(10,13,4,4);  				// 画一实体椭圆 , 函数定义在Splc501sys.asm
   	Clear_Watch_Dog();     					// 清看门狗       函数定义在Splc501sys.asm	
    FG_PutStr("play ",0,20,8);
	
	FG_SetLineStyle(6);	 					// 反显第一首歌曲
	FG_Rectangle(0,52,127,60);
	Clear_Watch_Dog();     					// 清看门狗	 	
//---------------------- 键盘选择 --------------------------    
	while(1)
	{		
		SP_Init_IOA(0xff00,0x0000,0xff00);  							// 初始化LCDIO口
		I_Key = SP_GetCh();
		switch(I_Key)
		{
			case 0x0000:				            					// 无键按下
				break;	
			case 0x0001:
				FG_SetLineStyle(0);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
				FG_Ellipse(10,13,4,4);  				// 画一空椭圆 , 函数定义在Splc501sys.asm
				Clear_Watch_Dog(); 
   				FG_SetLineStyle(2);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
				FG_Ellipse(10,13,4,4);  
				for(j=0;j<=19;j++)             			// 延时保持整个显示屏点亮
       				for(i=0;i<0x1111;i++)
      	   				Clear_Watch_Dog();     					// 清看门狗   
      	   		FG_SetLineStyle(0);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
				FG_Ellipse(10,13,4,4);  				// 画一空椭圆 , 函数定义在Splc501sys.asm
				Clear_Watch_Dog(); 
   				FG_SetLineStyle(6);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
				FG_Ellipse(10,13,4,4);  
			       																// I_Key 1 播放										
				if (Step==0||Step==6)
				{	
					Ret = SACM_A2000_Initial(1);	
					SACM_A2000_Play(0,DAC1+DAC2,Ramp_UpDn_On);			// 播放第一首歌曲
				}											
				else 
				{
					Step--;	
					Ret = SACM_A2000_Initial(1);
					SACM_A2000_Play(Step,DAC1+DAC2,Ramp_UpDn_On);		// 播放对应的歌曲
					Step++;
				}								        				
				break;
			case 0x0002:
					FG_SetLineStyle(0);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
					FG_Ellipse(40,13,4,4);  				// 画一空椭圆 , 函数定义在Splc501sys.asm	
    				Clear_Watch_Dog();     					// 清看门狗
					FG_SetLineStyle(2);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
					FG_Ellipse(40,13,4,4);  				// 画一空椭圆 , 函数定义在Splc501sys.asm	
    				Clear_Watch_Dog();     					// 清看门狗 
    				for(j=0;j<=19;j++)             			// 延时保持整个显示屏点亮
       					for(i=0;i<0x666;i++)
      	   					Clear_Watch_Dog();     					// 清看门狗   
      	   			FG_SetLineStyle(0);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
					FG_Ellipse(40,13,4,4);  				// 画一空椭圆 , 函数定义在Splc501sys.asm
					Clear_Watch_Dog(); 
   					FG_SetLineStyle(6);	      				// 设置线模式为实体,函数定义在Splc501sys.asm	
					FG_Ellipse(40,13,4,4);      				        						// I_Key 2 暂停			
					SACM_A2000_Pause();								
				break;
			case 0x0004:												// I_Key 3	选择歌曲						        
				switch(Step)
				{					
					case 0:
					 	Step++;	
					 	break;
					case 1:
						FG_SetLineStyle(6);	 					// 反显第一首歌曲
		   				FG_Rectangle(0,52,127,60);
		   				Clear_Watch_Dog();     					// 清看门狗
						FG_SetLineStyle(6);	 					// 反显第二首歌曲
		   				FG_Rectangle(0,44,127,52);
		   				Clear_Watch_Dog();     					// 清看门狗
		   				Step++;					
						break;
					case 2:
						FG_SetLineStyle(6);	 					// 反显第二首歌曲
		   				FG_Rectangle(0,44,127,52);
		   				Clear_Watch_Dog();     					// 清看门狗
						FG_SetLineStyle(6);	 					// 反显第三首歌曲
		   				FG_Rectangle(0,36,127,44);
		   				Clear_Watch_Dog();     					// 清看门狗
		   				Step++;
					    break;
					case 3:
						FG_SetLineStyle(6);	 					// 反显第三首歌曲
		   				FG_Rectangle(0,36,127,44);
		   				Clear_Watch_Dog();     					// 清看门狗
						FG_SetLineStyle(6);	 					// 反显第四首歌曲
		   				FG_Rectangle(0,28,127,36);
		   				Clear_Watch_Dog();     					// 清看门狗
		   				Step++;
						break;
					case 4:				
						FG_SetLineStyle(6);	 					// 反显第四首歌曲
		   				FG_Rectangle(0,28,127,36);
		   				Clear_Watch_Dog();     					// 清看门狗
						FG_SetLineStyle(6);	 					// 反显第五首歌曲
		   				FG_Rectangle(0,20,127,28);
		   				Clear_Watch_Dog();  					// 清看门狗	
		   				Step++;  						
						break;
					case 5:				
						FG_SetLineStyle(6);	 					// 反显第五首歌曲
		   				FG_Rectangle(0,20,127,28);
		   				Clear_Watch_Dog();     					// 清看门狗
						FG_SetLineStyle(6);	 					// 反显第一首歌曲
		   				FG_Rectangle(0,52,127,60);
		   				Clear_Watch_Dog();     	   				// 清看门狗
		   				Step = 1;		
						break;	
					default:
						break;	   
				}
		}	
		System_ServiceLoop();			     			
		SACM_A2000_ServiceLoop();								// 调用系统初始化
	
	}
}
//============================== main.c 结束 ======================================

⌨️ 快捷键说明

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