51 단일 칩 마이크로컴퓨터 단순 시계 알람 8자리 디지털 튜브 디스플레이 시뮬레이션(프로테우스 시뮬레이션 + 프로그램 + 회로도 + 보고서 + 설명 비디오)

51 단일 칩 마이크로컴퓨터 단순 시계 알람 8자리 디지털 튜브 디스플레이 시뮬레이션(프로테우스 시뮬레이션 + 프로그램 + 회로도 + 보고서 + 설명 비디오)


51 단일 칩 마이크로컴퓨터 단순 시계 알람 8자리 디지털 튜브 디스플레이 시뮬레이션(프로테우스 시뮬레이션 + 프로그램 + 회로도 + 보고서 + 설명 비디오)

시뮬레이션 다이어그램 proteus7.8 이상

프로그램 컴파일러: keil 4/keil 5

프로그래밍 언어: C 언어

디자인 번호: S0046

1. 주요 기능:

이 디자인은 시, 분, 초를 표시하고 시간과 알람 시계를 설정할 수 있는 51 마이크로 컨트롤러를 기반으로 하는 다기능 디지털 시계 알람 시계 Proteus 시뮬레이션 디자인을 설계하는 것을 목표로 합니다.

1. 마이크로컨트롤러의 내부 타이머를 사용하여 타이밍을 실현합니다.

2. 8자리 디지털 튜브를 사용하여 시, 분, 초를 표시합니다.

3. 시간, 분, 초를 각각 더하고 뺄 수 있으며 설정 중에 해당 디지털 튜브가 깜박입니다.

4. 알람 시계를 설정할 수 있으며, 시간이 지나면 부저가 6초 동안 1초마다 울립니다.

5. 알람시계가 울리면 수동으로 알람시계를 취소할 수 있습니다.

시뮬레이션의 51 마이크로 컨트롤러 칩은 범용이며 AT89C51 및 AT89C52는 51 마이크로 컨트롤러의 특정 모델이며 코어는 호환됩니다. stc, at에 관계없이 핀 기능도 동일하고 프로그램도 동일하며, 칩은 STC89C52/STC89C51/AT89C52/AT89C51 등 51개의 마이크로컨트롤러 칩으로 대체 가능하다.

다음은 이 설계 정보의 표시 다이어그램입니다.

2. 시뮬레이션

시뮬레이션 시작

시뮬레이션 프로젝트를 열고, proteus에서 마이크로 컨트롤러를 두 번 클릭하고, hex 파일 경로를 선택한 다음 시뮬레이션을 시작합니다. 시뮬레이션을 시작한 후 디지털 튜브에 시간이 00:00:00으로 표시됩니다. 시간이 초 단위로 증가합니다.

img

시간이 표시된 상태에서 설정 버튼을 누르면 설정 모드로 진입합니다. 시계가 깜박이면 현재 시계가 설정 중임을 표시합니다. 설정 버튼을 다시 누르면 분 설정 모드로 진입하며 분이 깜박입니다. 설정 버튼을 누릅니다. 다시 초 설정 모드로 들어가고 초가 깜박입니다. 초를 설정한 후 다시 설정을 눌러 설정 모드를 종료하면 디지털 튜브가 정상적으로 표시됩니다.

기능 전환 버튼을 누르면 알람 시간이 표시됩니다. 알람 시간이 표시된 상태에서 설정 버튼을 누르면 알람 설정 모드로 진입합니다. 시계가 깜박이면 현재 알람 시계가 설정되어 있음을 나타냅니다. 설정 버튼을 다시 누르면 알람 분 설정 모드로 진입합니다. 알람 시간이 깜박입니다. 설정 버튼을 다시 눌러 알람 초 설정 모드로 들어갑니다. 알람 시계 초가 깜박입니다. 초를 설정한 후 다시 설정을 눌러 설정 모드를 종료하면 디지털 튜브에 알람 시간이 정상적으로 표시됩니다.

알람시간이 되면 부저음이 울리며, 6초간 1초 간격으로 부저음이 울리며, 버튼을 누르면 알람이 꺼집니다.

img

3. 프로그램 코드

keil4 또는 keil5를 사용하여 컴파일하면 코드에 주석이 있으며 보고서와 함께 코드의 의미를 이해할 수 있습니다.

img

/*******************************************************************************
* 函 数 名       : 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로 그려져 있어 실제 참고자료로 활용이 가능합니다.시뮬레이션은 실제와 다르기 때문에 경험이 없으신 분들은 쉽게 하지 마세요.

img

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개 이상의 단어로 구성된 설계 보고서입니다.

img

6. 디자인 정보 콘텐츠 목록 및 다운로드 링크

머티리얼 디자인 자료에는 시뮬레이션, 프로그램 코드, 설명 비디오, 기능 요구 사항, 디자인 보고서, 소프트웨어 및 하드웨어 디자인 블록 다이어그램 등이 포함됩니다.

0. 일반적인 사용 문제 및 해결 방법 - 꼭 읽어보세요! ! ! !

1. 시뮬레이션 다이어그램

2. 프로그램 소스코드

3. 제안보고서

4. 개략도

5. 기능적 요구사항

6. 구성품 목록

7. 설계 보고서

8. 소프트웨어 및 하드웨어 흐름도

9. 설명 영상

Altium Designer 소프트웨어 정보

KEIL 소프트웨어 정보

프로테우스 소프트웨어 정보

마이크로컨트롤러 학습 자료

방어 기술

설계 보고서에 대한 일반적인 설명

마우스를 두 번 클릭하여 열고 더 많은 51 STM32 마이크로컨트롤러 과정 졸업 프로젝트.url을 찾아보세요.

img

데이터 다운로드 링크(클릭 가능):

추천

출처blog.csdn.net/weixin_52733843/article/details/132699492