• 方案介紹
    • 講解視頻
    • 1.主要功能:
    • 2.仿真
    • 3. 程序代碼
    • 4.原理圖
    • 5. 設計報告
    • 6. 設計資料內容清單
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

51單片機音樂鬧鐘秒表倒計時整點報時多功能電子鐘萬年歷數碼管顯示( proteus仿真+程序)

2024/09/26
1960
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

設計資料獲取聯系方式.doc

共1個文件

51單片機音樂鬧鐘秒表倒計時整點報時多功能電子鐘萬年歷數碼管顯示( proteus仿真+程序+原理圖+報告+講解視頻)

仿真圖proteus7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設計編號:S0053

講解視頻


51單片機音樂鬧鐘秒表倒計時整點報時多功能電子鐘萬年歷數碼管顯示( proteus仿真+程序+原理圖+報告+講解視頻)

1.主要功能:

基于51單片機的日期時間鬧鐘秒表倒計時多功能電子鐘萬年歷仿真設計

1、數碼管顯示當前日期,時間,可以通過按鍵修改日期時間;

2、設置鬧鐘時間,時間到播放音樂;

3、具有秒表功能;

4、具有倒計時功能;

5、具有整點報時功能,多少點蜂鳴器響多少次;

6、具備閏年判斷功能,設置日期的時候遵守正常大小月規(guī)律。

需注意仿真中51單片機芯片是通用的,AT89C51,AT89C52都是51單片機的具體型號,內核是兼容的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序也是一樣的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機芯片。

以下為本設計資料展示圖:

2.仿真

開始仿真

打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。開始仿真默認進入時間顯示模式,顯示電腦當前時間。

img

顯示時間的情況下,按下設置鍵進入設置模式,時間指示燈亮。整點會有蜂鳴器報時,多少點就響多少次。

按下設置按鍵分別設置時鐘,分鐘和秒鐘,設置模式下對應設置的變量會閃爍,方便用戶設置。設置到秒鐘再按下設置按鍵退出設置模式。通過按鍵加和減調整設置的時分秒。

img

通過按下日期按鍵切換到現實日期模式,數碼管顯示年月日,日期指示燈亮。

按下設置鍵進入設置模式,先設置年份,年份閃爍,通過按鍵加和減完成年份的設置。設置完年份再設置月份,操作同年份調整。再按下設置按鍵設置日。設置完日期再按下設置鍵退出設置。

img

通過按下鬧鐘按鍵進入鬧鐘顯示模式,鬧鐘指示燈亮。顯示默認鬧鐘時間16.30。需要修改鬧鐘時間的話按下設置鍵,時間閃爍表示設置時鐘,再按下表示設置分鐘,設置完分鐘再按下設置鍵退出鬧鐘設置模式。鬧鐘時間到了會通過蜂鳴器播放鬧鐘鈴聲。期間如果想停止鬧鈴可以按下停止鬧鈴按鍵。

img

通過按下鬧鐘按鍵進入鬧鐘顯示模式,秒表指示燈亮。開始按鍵啟動秒表計時,暫停按鍵暫停當前秒表計時并顯示計時時間。按下復位鍵復位計時時間為0。

img

通過按下倒計時按鍵進入倒計時模式,倒計時指示燈亮。開始按鍵啟動倒計時,暫停按鍵暫停當前倒計時時間并顯示在數碼管上。按下復位鍵復位計時時間為0。

以上仿真結果均符合設計要求。

3. 程序代碼

使用keil4或者keil5編譯,代碼有注釋,可以結合報告理解代碼含義。

  
//主函數
void main()
{
	uchar i=0;

	TMOD=0X11;//定時器0,工作方式1。
	TH0=0XFC;	//定時1ms
	TL0=0X18;
	TH1=(65536-10000)/256;
	TL1=(65536-10000)%256;
	ET1=1;
	TR1=1;	
	ET0=1;//打開定時器0中斷允許
	EA=1;//打開總中斷
//	Ds1302Init();   //解注釋 顯示初始時間	2023年9月3日星期天12點00分00秒 可到ds1302.c修改
while(1)
{	
	disp();//顯示
	switch(mode)//LED
	{
		case 0:led1=0;led2=1;led3=1;led4=1;led5=1;break;
		case 1:led1=1;led2=0;led3=1;led4=1;led5=1;break;
		case 2:led1=1;led2=1;led3=0;led4=1;led5=1;break;
		case 3:led1=1;led2=1;led3=1;led4=0;led5=1;break;
		case 4:led1=1;led2=1;led3=1;led4=1;led5=0;
	}
	i=key_scan();//按鍵檢測
	if(i==1)//日期
	{
		mode=0;flag=0;
	}
	if(i==2)//時間
	{
		mode=1;flag=0;
	}
	if(i==3)//鬧鐘
	{
		mode=2;flag=0;
	}
	if(i==4)//秒表
	{
		mode=3;flag=0;
	}
	if(i==5)//倒計時
	{
		mode=4;flag=0;
	}
	if(i==9)//停止響鈴
	{
		TR0=0;num=0;
	}
	if(i==6)//設置
	{
		if(mode<2)
		{
		if(flag<3)
			flag++;
		else
			flag=0;
		}
		if(mode==2)
		{
		if(flag<2)
			flag++;
		else
			flag=0;
		}
		if(mode==4)
		{
		if(flag<3)
			flag++;
		else
			flag=0;
		}
	}
	if(i==7)//加
	{
		if(mode==0)//日期設置// ds1302_time[7] = {秒, 分, 時, 日, 月, 星期, 年};
		{
			if(flag==1)	//年
			{
				if(ds1302_time[6]<99)
					ds1302_time[6]++;					
				Ds1302Init();
			}
			if(flag==2)	//月
			{
				if(ds1302_time[4]<12){
					ds1302_time[4]++;
				}else{
					ds1302_time[4] = 1;
				}
									
				Ds1302Init();
			}
			if(flag==3)	//日
			{
				if(ds1302_time[3]<MonthDays(ds1302_time[6],ds1302_time[4])){
					ds1302_time[3]++;//如果日期小于于當前月份最后一天 
				}else{
					ds1302_time[3] = 1;
				}
										
				Ds1302Init();
			}
		}
		if(mode==1)//時間設置
		{
			if(flag==1)	//時
			{
				if(ds1302_time[2]<99)
					ds1302_time[2]++;					
				Ds1302Init();
			}
			if(flag==2)	//分
			{
				if(ds1302_time[1]<59)
					ds1302_time[1]++;					
				Ds1302Init();
			}
			if(flag==3)	//秒
			{
				if(ds1302_time[0]<59)
					ds1302_time[0]++;					
				Ds1302Init();
			}
		}
		if(mode==2)//鬧鐘設置
		{
			if(flag==1)	//時
			{
				if(shi<23)
					shi++;					
//				At24c02Write(0,shi);
			}
			if(flag==2)	//分
			{
				if(fen<59)
					fen++;					
//				At24c02Write(1,fen);
			}
		}
		if(mode==4)//倒計時設置
		{
			if(flag==1)	//時
			{
				if(shi1<23)
					shi1++;		
			}
			if(flag==2)	//分
			{
				if(fen1<59)
					fen1++;	
			}
			if(flag==3)	//秒
			{
				if(miao1<59)
					miao1++;
			}
		}
	}
	if(i==8)//減
	{
		if(mode==0)//日期設置
		{
			if(flag==1)	//年
			{
				if(ds1302_time[6]>0)
					ds1302_time[6]--;					
				Ds1302Init();
			}
			if(flag==2)	//月
			{
				if(ds1302_time[4]>1){
					ds1302_time[4]--;
				}else{
					ds1302_time[4] = 12;
				}					
				Ds1302Init();
			}
			if(flag==3)	//日
			{
				if(ds1302_time[3]>1){
					ds1302_time[3]--;		
				}else{
					ds1302_time[3] =MonthDays(ds1302_time[6],ds1302_time[4]);//日期從1變?yōu)楫斍霸路葑詈笠惶?
				}
								
				Ds1302Init();
			}
		}
		if(mode==1)//時間設置
		{
			if(flag==1)	//時
			{
				if(ds1302_time[2]>0)
					ds1302_time[2]--;					
				Ds1302Init();
			}
			if(flag==2)	//分
			{
				if(ds1302_time[1]>0)
					ds1302_time[1]--;					
				Ds1302Init();
			}
			if(flag==3)	//秒
			{
				if(ds1302_time[0]>0)
					ds1302_time[0]--;					
				Ds1302Init();
			}
		}
		if(mode==2)//鬧鐘設置
		{
			if(flag==1)	//時
			{
				if(shi>0)
					shi--;					
//				At24c02Write(0,shi);
			}
			if(flag==2)	//分
			{
				if(fen>0)
					fen--;					
//				At24c02Write(1,fen);
			}
		}
		if((mode==4)&&(start==0))//倒計時設置
		{
			if(flag==1)	//時
			{
				if(shi1>0)
					shi1--;		
			}
			if(flag==2)	//分
			{
				if(fen1>0)
					fen1--;	
			}
			if(flag==3)	//秒
			{
				if(miao1>0)
					miao1--;
			}
		}
	}
	//倒計時,秒表控制
	if(mode>2)
	{
		if(i==10)//開始
		{
			start=1;
			flag=0;
		}
		if(i==11)//暫停
			start=!start;
		if(i==12)//復位
		{
			start=0;
			fen2=0;miao2=0;haomiao=0;
			shi1=0;fen1=0;miao1=0;
		}
	}
	
}
}

4.原理圖

原理圖使用AD繪制,可供實物參考。

img

Proteus仿真和實物作品的區(qū)別:

1.運行環(huán)境:Proteus仿真是在計算機上運行的,而實物則是在硬件電路板上運行。

2.調試方式:在Proteus仿真中,可以方便地進行單步調試和觀察變量值的變化,而在實物中則需要通過調試器或者串口輸出等方式進行調試。

電路連接方式:在Proteus仿真中,可以通過軟件設置進行電路連接的修改,而在實物中則需要通過硬件電路板和連接線進行修改。

3.運行速度:Proteus仿真通常比實物運行速度快,因為仿真是基于計算機運行的,而實物則需要考慮電路板上的物理限制和器件的響應時間等因素。

4.功能實現:在Proteus仿真中,可以通過軟件設置實現不同的功能,而在實物中則需要根據電路設計和器件的性能進行實現。

參考元器件清單

元件 型號 數量
單片機 AT89C51 1
電容 10uf 1
電容 30pf 2
晶振 12MHZ 1
電阻 10k 1
按鈕 17
譯碼器 74LS138 1
存儲器 24C02 1
實時時鐘 DS1302 1
LED 綠色 2
LED 黃色 2
LED 紅色 3
電阻 100歐 5
電阻 1k 1
三極管 PNP 1
蜂鳴器 無源 1
數碼管 8位共陰 1
排阻 10k 1
晶振 32.768khz 1

5. 設計報告

7027字設計報告,內容包括引言,硬件設計、軟件設計、軟硬件框圖、調試、總結和展望等

img

6. 設計資料內容清單

資料設計資料包括仿真,程序代碼、講解視頻、功能要求、設計報告、軟硬件設計框圖等。

0、常見使用問題及解決方法–必讀?。。。?/p>

1、仿真圖

2、程序源碼

3、開題報告

3、原理圖

5、功能要求

6、元器件清單

7、設計報告

8、軟硬件流程框圖

9、講解視頻

Altium Designer 軟件資料

filename.bat

KEIL軟件資料

Proteus軟件資料

單片機學習資料

目錄清單.txt

答辯技巧

設計報告常用描述

74HC138(中文資料).pdf

鼠標雙擊打開查找更多51 STM32單片機課程畢業(yè)設計.url

img

資料下載鏈接(可點擊):

更多資源 點擊下方鏈接:

https://docs.qq.com/sheet/DS0xIa0llTmtNakRW

  • 設計資料獲取聯系方式.doc
    下載

相關推薦