• 方案介紹
    • 1.? 簡介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設計報告
    • 6.? 資料清單
    • 7.? 資料獲取鏈接
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

基于51單片機的1602音樂盒設計!!!

04/27 09:22
327
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

單片機仿真設計合集資料獲取.pdf

共1個文件

資料清單:C程序+仿真+設計報告+使用說明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

編程語言:C語言

設計編號:【V03】

1.? 簡介

? 本文提出了一種基于51單片機LCD1602音樂盒設計。以AT89C51單片機作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設有4個按鍵,利用單片機的定時/計數器T0來產生這樣的方波頻率信號,只要把一首歌曲的音階對應頻率關系編寫正確就可以達到想要的曲目。

2.? 主要功能

a.利用蜂鳴器作為發(fā)聲部件,設置4個按鍵,實現8首歌曲的播放。

b.通過獨立按鍵實現播放/暫停、切換歌曲、開關。

c. 通過LCD1602顯示當前歌曲序號及時間。

3.? 源程序(Keil5)

本設計采用keil5 C51軟件(內附安裝包)實現程序設計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。

void KEY()
{
	if(!pause)		//暫停鍵處理
		{
		delayms(5);
		if(!pause)
		{
			TR0=0;
			
			speaker=1;
			if(music_num==0)    //music_num=0只有在剛開機,且未按下暫停鍵時存在,表示剛開機時的狀態(tài),按下后從第一首開始播放
			{
				music_num=1;    //歌曲序號置1
				num=0;	        //從頭播放
				play_enable=1;	//允許播放
			}
			else
			{
				play_enable=~play_enable;
			    speaker=1;
			}
			while(!pause)	 //若按著暫停鍵不放手時的處理
			{
			if(play_enable==0){TR1  = 0;}	        //如果是暫停,則顯示時間不變//(暫停時play_enable==0)
			else 
			{  
				TR1  = 1;
				LCDDispString(11,2,"00:");
				LCDDispString(0,2,"PLAY:");

			}
		
			}

		  }//暫停鍵處理結束
	}//while結束

		if((!play_up)&&(music_num!=0)) //上一首按鍵
		{
		delayms(5);
		if((!play_up)&&(music_num!=0))
		{
		   TR0=0;
		   speaker=1;
			music_num-=1;//歌曲編號減一
			if(music_num<=0)
			music_num=5;
			num=0;		 //從頭開始播放


/*			if(music_num==(sound_amount+1))
				music_num=1; 	 */
			delayms(500);//歌曲切換時延時0.5S
			miao=0;
		} 
		while(!play_up); 	
		}

		if((!play_down)&&(music_num!=0))
		{
		delayms(5);
		if((!play_down)&&(music_num!=0))
		{   
			TR0=0;
			speaker=1;
			music_num+=1;//歌曲編號加一
			if(music_num>=6)
			music_num=1;
			num=0;	 	 //從頭開始播放


	/*		if(music_num==0)
				music_num=sound_amount;		  */
			delayms(500);//歌曲切換時延時0.5S
			miao=0;
		}
		 while(!play_down); 
		}
	if(!power)		//電源鍵處理
		{
		delayms(5);
		if(!power)
		{
			TR0=0;
			
			speaker=1;

			power_enable=~power_enable;
					
			while(!power)	 //若按著暫停鍵不放手時的處理
			{
				if(power_enable==1)
					{
					LCDDispString(1,1,"WELCOME MUSIC");
					miao=0;
					}	        
				else 
				{   TR1  = 0;
					LCDDispString(0,1,"                ");
					LCDDispString(0,2,"                ");
					music_num=1;    //歌曲序號置1
					num=0;	        //從頭播放
					play_enable=0;	//不允許播放
	
				}
		
			}

		  }//暫停鍵處理結束
	}//while結束


}

4.? 仿真proteus8.6

? 本設計采用proteus8.6軟件(內附安裝包)實現仿真設計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

初始界面:

5.? 設計報告

設計報告主要包括硬件電路、軟件設計、仿真調試等等,僅供參考。

6.? 資料清單

設計資料主要包括C程序+仿真+設計報告+使用說明+元件清單+操作視頻等。

7.? 資料獲取鏈接

百度網盤下載鏈接:【V03】百度網盤下載鏈接

更多單片機仿真設計合集:單片機仿真設計合集

  • 單片機仿真設計合集資料獲取.pdf
    下載

相關推薦