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

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

基于51單片機電子鐘溫度計數(shù)碼顯示設(shè)計proteus仿真+程序+設(shè)計報告+講解視頻

10/02 13:56
493
服務(wù)支持:
技術(shù)交流群

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

虛擬商品不可退

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

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

仿真圖proteus7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計編號:S0061

?1.主要功能:

基于51單片機AT89C51/52(與AT89S51/52、AT89C51/52、STC89C51/52等51內(nèi)核單片機通用)

1、設(shè)備初始化時鐘為 23 時 59 分 50 秒。

2、按鍵 K4 定義為“時鐘設(shè)置”按鍵,通過該按鍵可切換選擇待調(diào)整的時、分、秒,當(dāng)前選擇的顯示單元以 1 秒為間隔亮滅,時、分、秒的調(diào)整需注意數(shù)據(jù)邊界屬性。

3、按鍵 K2 定義為“加”按鍵,在“時鐘設(shè)置”狀態(tài)下,每次按下該按鍵當(dāng)前選擇的單元(時、分或秒)增加 1 個單位。

4、按鍵 K1 定義為“減”按鍵,在“時鐘設(shè)置”狀態(tài)下,每次按下該按鍵當(dāng)前選擇的單元(時、分或秒)減少 1 個單位。

5、“時鐘顯示”狀態(tài)下,按下 K3 按鍵,顯示溫度數(shù)據(jù),松開按鍵,返回“時鐘顯示”界面。

6、當(dāng)溫度超過 30 攝氏度時指示燈 D1 以 0.2 秒為間隔閃爍。

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

?講解視頻:

仿真講解+代碼講解


基于51單片機電子鐘溫度計數(shù)碼管proteus仿真代碼講解(附下載鏈接

?2.仿真設(shè)計

開始仿真

打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。

imgimg

?3. 程序代碼

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

img

主函數(shù)main.c代碼

#include <reg51.h>
#include"temp.h"

#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long

sbit L1=P2^2;//138引腳
sbit L2=P2^3;
sbit L3=P2^4;

sbit k1=P3^0;	//減
sbit k2=P3^1;	//加
sbit k3=P3^2;	//切換
sbit k4=P3^3;	//設(shè)置

sbit led=P2^0; //led
uchar key=0;//按鍵標(biāo)志
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9
uchar shuma[8]={0x5b,0x4f,0x40,0x6d,0x6f,0x40,0x6d,0x3f};//時間顯存
uchar wendu[3]={0x3f,0x3f,0x39};//溫度顯存

uchar time=0,miao=50,fen=59,shi=23;	//計時
uchar wen=0;//溫度
uchar time0=0,time1=0;//定時變量
uchar mode=0;//模式,設(shè)置用

void delay(uint i);//函數(shù)聲明

void display1()	//顯示溫度
{
   uchar i;
  for(i=0;i<3;i++)
  {
  P0=0;
  P2=(P2& 0xe3)+(i<<2);
  P0=wendu[2-i];
  delay(50);
  }
}
void display2()	//顯示時間
{
  uchar i;
  for(i=0;i<8;i++)
  {
  P0=0;
  P2=(P2& 0xe3)+(i<<2);
  P0=shuma[7-i];
  delay(50);
  }
}
//顯示計算
void suan()
{
		shuma[0]=smgduan[shi/10];
		shuma[1]=smgduan[shi%10];
		shuma[3]=smgduan[fen/10];
		shuma[4]=smgduan[fen%10];
		shuma[6]=smgduan[miao/10];
		shuma[7]=smgduan[miao%10];
		wen=Ds18b20ReadTemp();//讀取溫度
		wendu[0]=smgduan[wen/10];
		wendu[1]=smgduan[wen%10];
}
//按鍵檢測
void key_scan()
{
	if(k1 && k2 && k3 && k4) //按鍵標(biāo)志清零
			key=0;
	if(!k4 &&(key!=4))//設(shè)置
		{
			key=4;
			if(mode<3)
				mode++;
			else
				mode=0;
		}
		if(!k1 &&(key!=1))//減
		{
			key=1;
			if(mode==1)
			{
				if(shi>0)
					shi--;
				else
					shi=23;
			}
			if(mode==2)
			{
				if(fen>0)
					fen--;
				else
					fen=59;
			}
			if(mode==3)
			{
				if(miao>0)
					miao--;
				else
					miao=59;
			}
			suan();
		}
		if(!k2 &&(key!=2))//加
		{
			key=2;
			if(mode==1)
			{
				if(shi<23)
					shi++;
				else
					shi=0;
			}
			if(mode==2)
			{
				if(fen<59)
					fen++;
				else
					fen=0;
			}
			if(mode==3)
			{
				if(miao<59)
					miao++;
				else
					miao=0;
			}
			suan();
		}
}
//延時
void delay(uint i)
{
	while(i--)
	{
		key_scan();
	}
}
//主函數(shù)
void main(void)
{ 	
	TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
	TH0=0X3C;	//給定時器賦初值,定時50ms
	TL0=0Xb0;	
	ET0=1;//打開定時器0中斷允許
	EA=1;//打開總中斷
	TR0=1;//打開定時器
	
 	while(1)
	{		
		if(mode==0)
		{
			if(k3)		//顯示
				display2();//時間顯示
			else
				display1();//溫度顯示
		}
		else//閃爍顯示
		{
			if(mode==1)//小時
			{
				if(time<11)
				{
					P0=0;P2=(P2& 0xe3)+(0<<2);P0=shuma[7];delay(50);
					P0=0;P2=(P2& 0xe3)+(1<<2);P0=shuma[6];delay(50);
					P0=0;P2=(P2& 0xe3)+(2<<2);P0=shuma[5];delay(50);
					P0=0;P2=(P2& 0xe3)+(3<<2);P0=shuma[4];delay(50);
					P0=0;P2=(P2& 0xe3)+(4<<2);P0=shuma[3];delay(50);
					P0=0;P2=(P2& 0xe3)+(5<<2);P0=shuma[2];delay(50);
				}
				else
					display2();
			}
			if(mode==2)//分鐘
			{
				if(time<11)
				{
					P0=0;P2=(P2& 0xe3)+(0<<2);P0=shuma[7];delay(50);
					P0=0;P2=(P2& 0xe3)+(1<<2);P0=shuma[6];delay(50);
					P0=0;P2=(P2& 0xe3)+(2<<2);P0=shuma[5];delay(50);
					P0=0;P2=(P2& 0xe3)+(5<<2);P0=shuma[2];delay(50);
					P0=0;P2=(P2& 0xe3)+(6<<2);P0=shuma[1];delay(50);
					P0=0;P2=(P2& 0xe3)+(7<<2);P0=shuma[0];delay(50);
				}
				else
					display2();
			}
			if(mode==3)//秒
			{
				if(time<11)
				{
					P0=0;P2=(P2& 0xe3)+(2<<2);P0=shuma[5];delay(50);
					P0=0;P2=(P2& 0xe3)+(3<<2);P0=shuma[4];delay(50);
					P0=0;P2=(P2& 0xe3)+(4<<2);P0=shuma[3];delay(50);
					P0=0;P2=(P2& 0xe3)+(5<<2);P0=shuma[2];delay(50);
					P0=0;P2=(P2& 0xe3)+(6<<2);P0=shuma[1];delay(50);
					P0=0;P2=(P2& 0xe3)+(7<<2);P0=shuma[0];delay(50);
				}
				else
					display2();
			}
		}
		
	}
}
//定時器0中斷
void Timer0() interrupt 1
{
	
if((time0<4)&&(wen>30))//led閃爍
  {
  	time0=0;
	led=!led;
  }
else
	led=1;
if(time<20)//計時
	time++;
else
	{
	time=0;
	if(mode==0)	//模式0正常計時
	{
	if(miao<59)
		miao++;
	else
		{
		miao=0;
		if(fen<59)
			fen++;
		else
			{
			fen=0;
			if(shi<23)
				shi++;
			else
			{
				shi=0;
			}
			}		
		}
		suan();//顯示計算
	}
	}
	TH0=0X3C;	//給定時器賦初值,定時50ms
	TL0=0Xb0;
}

?4. 設(shè)計報告

5001字設(shè)計報告,內(nèi)容包括硬件設(shè)計、軟件設(shè)計、軟硬件框圖、調(diào)試、結(jié)論等

img

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

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

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

1、仿真圖

2、程序源碼

3、功能要求

4、元器件清單

5、開題報告

6、軟硬件流程框圖

7、設(shè)計報告

8、講解視頻

Altium Designer 安裝破解

KEIL+proteus 單片機仿真設(shè)計教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

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

相關(guān)數(shù)據(jù)手冊

答辯技巧

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

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

img

?網(wǎng)盤下載鏈接

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

相關(guān)推薦

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