加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

51單片機(jī)簡易時鐘鬧鐘八位數(shù)碼管顯示仿真( proteus仿真+程序+原理圖+報告+講解視頻)

09/14 09:08
5243
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
    • 1.主要功能:
    • 2.仿真
    • 3. 程序代碼
    • 4. 原理圖
    • 5. 設(shè)計報告
    • 6. 設(shè)計資料內(nèi)容清單&&下載鏈接
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

仿真圖proteus7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計編號:S0046

1.主要功能:

本設(shè)計旨在設(shè)計一個基于51單片機(jī)的多功能數(shù)字時鐘鬧鐘proteus仿真設(shè)計,可以顯示時、分、秒,并且可以設(shè)置時間和鬧鐘。

1、采用單片機(jī)內(nèi)部定時器實現(xiàn)計時;

2、采用八位數(shù)碼管顯示時分秒;

3、可對時分秒分別進(jìn)行加減設(shè)置,設(shè)置時對應(yīng)數(shù)碼管閃爍;

4、可設(shè)置鬧鐘,并且到時間后蜂鳴器每隔1s響一次,持續(xù)6s;

5、鬧鐘鳴響時,可手動消除鬧鐘。

需注意仿真中51單片機(jī)芯片是通用的,AT89C51,AT89C52都是51單片機(jī)的具體型號,內(nèi)核是兼容的。無論stc還是at都一樣,引腳功能都是一樣的,程序也是一樣的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。

以下為本設(shè)計資料展示圖:

2.仿真

開始仿真

打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后數(shù)碼管顯示時間00:00:00。時間逐秒遞增。

img

顯示時間的情況下,按下設(shè)置鍵進(jìn)入設(shè)置模式,時鐘閃爍表示當(dāng)前正在設(shè)置時鐘,再按下設(shè)置鍵進(jìn)入分鐘設(shè)置模式,分鐘閃爍,再按下設(shè)置鍵進(jìn)入秒鐘設(shè)置模式,秒鐘閃爍。設(shè)置完秒鐘再按設(shè)置退出設(shè)置模式,數(shù)碼管正常顯示。

按下功能切換按鍵顯示鬧鐘時間。鬧鐘時間顯示下按下設(shè)置鍵進(jìn)入鬧鐘設(shè)置模式,時鐘閃爍表示當(dāng)前正在設(shè)置鬧鐘時鐘,再按下設(shè)置鍵進(jìn)入鬧鐘分鐘設(shè)置模式,鬧鐘分鐘閃爍,再按下設(shè)置鍵進(jìn)入鬧鐘秒鐘設(shè)置模式,鬧鐘秒鐘閃爍。設(shè)置完秒鐘再按設(shè)置退出設(shè)置模式,數(shù)碼管正常顯示鬧鐘時間。

鬧鐘時間到,蜂鳴器鬧鈴,蜂鳴器每隔1s響一次,持續(xù)6s,可以通過按鍵關(guān)停鬧鐘。

img

3. 程序代碼

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

img

/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能		 : 主函數(shù)
* 輸    入       : 無
* 輸    出    	 : 無
*******************************************************************************/
void main()
{	
	Timer0Init();  //定時器0初始化
		xian1[0]=shi/10;//計算到顯存   時鐘的十位
		xian1[1]=shi%10;// 時鐘的個位
		xian1[3]=fen/10;// 分鐘的十位
		xian1[4]=fen%10;// 分鐘的個位
		xian1[6]=miao/10;  // 秒鐘的十位
		xian1[7]=miao%10;  // 秒鐘的個位
		xian2[0]=shi0/10;
		xian2[1]=shi0%10;
		xian2[3]=fen0/10;
		xian2[4]=fen0%10;
		xian2[6]=miao0/10;
		xian2[7]=miao0%10;
	while(1)
	{
	  if(mode)
	  	display2();//顯示鬧鐘
	  else
		display1();//顯示時間
	  if(!key1 &&(cixu==0))	//功能切換
	  {
	  	mode=!mode;
		while(!key1);
	  }
	  if(!key2)//選擇
	  {
	  	if(cixu<3)
			cixu++;
		else
			cixu=0;
	  	while(!key2);
	  }
	  if(!key3)		//加
	  {
	  	if(mode==0)
		{
		  switch(cixu)
		  {
		  case 1:
		  	if(shi<23)
				shi++; //時鐘+
				break;
		  case 2:
		  	if(fen<59)
				fen++;  //分鐘+
				break;
		  case 3:
		  	if(miao<59)
				miao++;	    //秒鐘+
		  }
		}
		else
		{
		  switch(cixu)
		  {
		  case 1:
		  	if(shi0<23)
				shi0++;	   //鬧鐘時鐘+
				break;
		  case 2:
		  	if(fen<59)
				fen0++;		//鬧鐘分鐘+
				break;
		  case 3:
		  	if(miao0<59)
				miao0++;	  //秒鐘分鐘+
		  }
		}
		xian1[0]=shi/10;//計算到顯存
		xian1[1]=shi%10;
		xian1[3]=fen/10;
		xian1[4]=fen%10;
		xian1[6]=miao/10;
		xian1[7]=miao%10;
		xian2[0]=shi0/10;
		xian2[1]=shi0%10;
		xian2[3]=fen0/10;
		xian2[4]=fen0%10;
		xian2[6]=miao0/10;
		xian2[7]=miao0%10;
	  	while(!key3);
	  }
	  if(!key4)		//減
	  {
	  	if(mode==0)
		{
		  switch(cixu)
		  {
		  case 1:
		  	if(shi>0)
				shi--;
				break;
		  case 2:
		  	if(fen>0)
				fen--;
				break;
		  case 3:
		  	if(miao>0)
				miao--;
		  }
		}
		else
		{
		  switch(cixu)
		  {
		  case 1:
		  	if(shi0>0)
				shi0--;
				break;
		  case 2:
		  	if(fen0>0)
				fen0--;
				break;
		  case 3:
		  	if(miao0>0)
				miao0--;
		  }
		}
		xian1[0]=shi/10;//計算到顯存
		xian1[1]=shi%10;
		xian1[3]=fen/10;
		xian1[4]=fen%10;
		xian1[6]=miao/10;
		xian1[7]=miao%10;
		xian2[0]=shi0/10;
		xian2[1]=shi0%10;
		xian2[3]=fen0/10;
		xian2[4]=fen0%10;
		xian2[6]=miao0/10;
		xian2[7]=miao0%10;
	  	while(!key4);
	  }
	  if(!key5)	//停止響鈴
	   {
		beep_flag=0;
		beep=1;
	   while(!key5);
	   }

	  if((shi==shi0)&&(fen==fen0)&&(miao==miao0))//判斷響鈴
	  {
	  	 beep_flag=1;
		 beep=0;
	  }
	}		
}

4. 原理圖

原理圖使用AD繪制,可供實物參考,仿真不同于實物,經(jīng)驗不足不要輕易搞實物。

img

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

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

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

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

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

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

元器件清單

元件 型號 數(shù)量
單片機(jī) AT89C51 1
電容 10uf 1
電容 30pf 2
晶振 12MHZ 1
電阻 10k 1
按鈕 6
數(shù)碼管 8位共陰 1
電阻 1k 1
三極管 PNP 1
蜂鳴器 有源 1
排阻 10k 1

電源部分
排針 2P 1
電容 0.1uf 2
電容 100uf 2
穩(wěn)壓器 7805 1

5. 設(shè)計報告

6600+字設(shè)計報告,內(nèi)容包含設(shè)計框圖,引言,硬件設(shè)計介紹,軟件設(shè)計介紹,仿真調(diào)試,總結(jié)和參考文獻(xiàn)。

img

6. 設(shè)計資料內(nèi)容清單&&下載鏈接

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

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

1、仿真圖

2、程序源碼

3、開題報告

4、原理圖

5、功能要求

6、元器件清單

7、設(shè)計報告

8、軟硬件流程框圖

9、講解視頻

Altium Designer 軟件資料

KEIL軟件資料

Proteus軟件資料

單片機(jī)學(xué)習(xí)資料

答辯技巧

設(shè)計報告常用描述

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

img

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

  • 設(shè)計資料獲取聯(lián)系方式.doc

相關(guān)推薦

電子產(chǎn)業(yè)圖譜