51ワンチップマイコン簡易時計アラーム8桁デジタル管表示シミュレーション(プロテウスシミュレーション+プログラム+回路図+レポート+解説動画)

51ワンチップマイコン簡易時計アラーム8桁デジタル管表示シミュレーション(プロテウスシミュレーション+プログラム+回路図+レポート+解説動画)


51ワンチップマイコン簡易時計アラーム8桁デジタル管表示シミュレーション(プロテウスシミュレーション+プログラム+回路図+レポート+解説動画)

シミュレーション図 proteus7.8以降

プログラムコンパイラ:keil 4/keil 5

プログラミング言語:C言語

デザイン番号:S0046

1.主な機能:

この設計は、時、分、秒を表示し、時刻と目覚まし時計を設定できる、51 マイクロコントローラーに基づいた多機能デジタル時計目覚まし時計プロテウス シミュレーション設計を設計することを目的としています。

1. マイクロコントローラーの内部タイマーを使用してタイミングを実現します。

2. 8 桁のデジタル管を使用して、時、分、秒を表示します。

3. 時、分、秒はそれぞれ加算および減算でき、設定中は対応するデジタル管が点滅します。

4.目覚まし時計を設定でき、時間が経過するとブザーが1秒ごとに6秒間鳴ります。

5. 目覚まし時計が鳴ったら、手動で目覚まし時計をキャンセルできます。

シミュレーションにおける 51 マイクロコントローラー チップはユニバーサルであることに注意してください。AT89C51 と AT89C52 は 51 マイクロコントローラーの特定のモデルであり、コアは互換性があります。stc、atに関わらず端子機能、プログラムは同一であり、STC89C52/STC89C51/AT89C52/AT89C51など51個のマイコンチップに置き換え可能です。

この設計情報の表示図は次のとおりです。

2. シミュレーション

シミュレーションを開始する

シミュレーション プロジェクトを開き、proteus でマイクロコントローラーをダブルクリックし、16 進数ファイルのパスを選択して、シミュレーションを開始します。シミュレーションを開始すると、デジタル チューブには時刻 00:00:00 が表示されます。時間は秒単位で増加します。

画像

時刻表示中に設定ボタンを押すと設定モードになります 時計が点滅し、時計合わせ中であることを示します もう一度設定ボタンを押すと分設定モードになり、分が点滅します 設定ボタンを押すもう一度押すと秒設定モードになり、秒が点滅します。秒を設定した後、もう一度 Set を押して設定モードを終了すると、デジタル管は正常に表示されます。

機能切替ボタンを押すとアラーム時刻が表示されます。目覚まし時刻表示中に設定ボタンを押すと目覚まし設定モードに入ります 時計が点滅して目覚まし時計設定中であることを示します もう一度設定ボタンを押すと目覚まし分設定モードになります 目覚まし分が点滅しますもう一度設定ボタンを押すと目覚まし秒設定モードになり、目覚まし時計の秒が点滅します。秒を設定した後、もう一度 Set を押して設定モードを終了すると、デジタル管は通常通りアラーム時刻を表示します。

アラーム時刻になるとブザーが鳴ります 1秒ごとに6秒間ブザーが鳴ります ボタンを押すとアラームを止めることができます

画像

3. プログラムコード

keil4 または keil5 を使用してコンパイルすると、コードにはコメントが付いており、レポートと合わせてコードの意味を理解できます。

画像

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
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で描いており、実物を参考にすることができますが、シミュレーションは実物とは異なりますので、未経験の方は安易に作らないでください。

画像

Proteus シミュレーションと物理的な作業の違い:

1. 実行環境: Proteus シミュレーションはコンピュータ上で実行されますが、実物はハードウェア回路基板上で実行されます。

2. デバッグ方法: Proteus シミュレーションでは、シングルステップ デバッグを簡単に実行して変数値の変化を観察できますが、実際のオブジェクトでは、デバッガーまたはシリアル ポート出力を通じてデバッグする必要があります。

回路接続方法: Proteus シミュレーションでは、回路接続はソフトウェア設定を通じて変更できますが、実際にはハードウェア回路基板と接続ワイヤを通じて変更する必要があります。

3. 実行速度: Proteus シミュレーションはコンピュータ操作に基づいているため、通常、実物よりも高速に実行されますが、実物は回路基板の物理的制限やデバイスの応答時間などの要素を考慮する必要があります。

4. 機能の実現: Proteus シミュレーションでは、ソフトウェアの設定によってさまざまな機能を実現できますが、実際のオブジェクトでは、回路設計とデバイスの性能に応じて実現する必要があります。

パーツリスト

コンポーネントモデルの数 マイクロコントローラ
AT89C51 1
コンデンサ 10uf 1
コンデンサ 30pf 2
水晶発振器 12MHZ 1
抵抗 10k 1
ボタン 6
デジタルチューブ 8 ビット共通カソード 1
抵抗 1k 1
トランジスタ PNP 1
ブザーアクティブ 1
抵抗 10k 1

電源部
ピンヘッダー 2P 1
コンデンサ 0.1uf 2
コンデンサ 100uf 2
ボルテージレギュレータ 7805 1

5. 設計レポート

6600 ワード以上の設計レポート (設計ブロック図、概要、ハードウェア設計の概要、ソフトウェア設計の概要、シミュレーション デバッグ、概要、参考資料を含む)。

画像

6. デザイン情報コンテンツ一覧&&ダウンロードリンク

マテリアルデザイン資料には、シミュレーション、プログラムコード、解説ビデオ、機能要件、設計レポート、ソフトウェアおよびハードウェアの設計ブロック図などが含まれます。

0. 使用上の一般的な問題と解決策 - 必読!

1. シミュレーション図

2. プログラムのソースコード

3. 提案報告書

4. 概略図

5. 機能要件

6. コンポーネントリスト

7. 設計レポート

8. ソフトウェアおよびハードウェアのフローチャート

9. 解説動画

Altium Designer ソフトウェア情報

KEIL ソフトウェア情報

プロテウス ソフトウェア情報

マイコン学習教材

防御スキル

設計レポートの共通説明

マウスをダブルクリックして開くと、詳細が表示されます。 51 STM32 マイクロコントローラー コース卒業プロジェクト.url

画像

データのダウンロード リンク (クリック可能):

おすすめ

転載: blog.csdn.net/weixin_52733843/article/details/132699492