加入星計劃,您可以享受以下權益:

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

【普中】基于51單片機簡易計算器數碼管顯示設計( proteus仿真+程序+實物演示+講解視頻)

10/24 08:45
3117
服務支持:
技術交流群

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

虛擬商品不可退

當前內容為數字版權作品,購買后不支持退換且無法轉移使用。

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

Proteus 仿真:Proteus 8.16(有低版本)

程序編譯器:keil 4/keil 5

編程語言:C語言

設計編號:P04

1. 主要功能:

普中開發(fā)板實驗設計

本設計旨在設計一個基于51單片機的簡易計算器仿真設計。

功能要求:實現加減乘除四則簡單運算數碼管顯示

1、能通過矩陣鍵盤輸入正確鍵值;

2、能進行簡單的四則運算;

3、能以數碼管正確顯示數值;

4、最大支持運算結果9 9999,超出將蜂鳴器報警;

(目前僅完全適配普中開發(fā)板A234,其他普中開發(fā)板型號可能需要做代碼修改或接線)

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

資料下載鏈接:

P系列單片機設計下載鏈接

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

2. 講解視頻:

講解視頻包含仿真運行講解、實物運行講解和代碼講解


【普中】基于51單片機簡易計算器仿真+開發(fā)板講解(proteus代碼報告)

3. 設計說明書(報告)

img

本次課程設計的主要目標是以51單片機為基礎,結合Proteus仿真軟件,設計一款簡易計算器。這個計算器需要實現加減乘除四則運算功能,并且能夠將運算結果通過數碼管進行顯示。這個任務不僅要求我們掌握單片機的編程技術,還需要我們深入理解數碼管顯示的工作原理,同時還需要通過Proteus軟件進行系統(tǒng)的仿真和調試。

在設計過程中,我們將從硬件電路設計和軟件編程兩個方面進行。硬件電路設計包括單片機最小系統(tǒng)、輸入按鍵、輸出數碼管等部分。其中,單片機最小系統(tǒng)是整個系統(tǒng)的核心,它包括了單片機、時鐘電路、復位電路等基本部分。輸入按鍵將用于用戶輸入數字和運算符號,而輸出數碼管則將用于顯示運算結果。

軟件編程方面,我們將使用C語言進行編程。首先,我們需要根據設計需求,編寫出相應的程序。程序應該能夠讀取用戶的輸入,進行四則運算,并根據運算結果驅動數碼管進行顯示。然后,我們將在Proteus中進行仿真和調試,檢查程序的正確性和系統(tǒng)的穩(wěn)定性。

通過這個課程設計,我們不僅能夠更加深入地理解單片機的原理和應用,還能夠掌握基本的電路設計和軟件編程技能。同時,通過Proteus的仿真和調試功能,我們還可以更好地理解系統(tǒng)的運行過程,提高我們的調試和解決問題的能力。我們期待通過這個課程設計,能夠更好地掌握單片機的應用,為未來的學習和工作打下堅實的基礎。

4. 仿真

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

img

5. 實物燒錄和現象

img

計算結果如下圖:

軟件準備:

第一次使用務必先安裝CH340驅動。

雙擊打開 STC-ISP.exe。

下載步驟:

0.板子先上電,接電源線到電腦USB口,先不上電,板子無燈光。

1.選擇選擇單片機型號

2.選擇下載器的串口

3.打開編譯生成的 HEX 文件

4.點擊下載,單片機板子電源鍵按下接通電源,等待下載完成提示

6. 程序代碼

使用keil4或者keil5編譯,代碼有注釋。

核心代碼:

#include<reg52.h> //頭文件
#include<intrins.h>//頭文件
#include<math.h>
#define uint unsigned int //宏定義
#define uchar unsigned char//宏定義
long x=0,y=0,num=0;
uint operators,input,iny=0;
uchar key,k,ff=16;
sbit a0=P2^2;					//138鎖存器
sbit a1=P2^3;
sbit a2=P2^4;
sbit beep=P2^5;
sbit led=P3^0;


 uchar code table[]={					 //數碼管段選
 0x3f,0x06,0x5b,0x4f,
 0x66,0x6d,0x7d,0x07,
 0x7f,0x6f,0x77,0x7c,
 0x39,0x5e,0x79,0x71,
 0x00,0x40
 };

 //uchar code table1[]={0xfe,0xfd};	   //數碼管位選


void delay(uint xms)  //延時
{
	uint xx,yy;
	for (xx=xms;xx>0;xx--)
		for(yy=110;yy>0;yy--);
}

void display() //顯示函數,數碼管動態(tài)掃描
{
    uchar wan,qian,bai,shi,ge;	
	wan=num/10000;
	qian=num%10000/1000;
	bai=num%1000/100;
	shi=num%100/10;							//num求摸  數碼管顯示十位
	ge=num%10;							//num求余  數碼管顯示個位

    P0=0x00;					//數碼管全關
	P0=table[ff];			  //端選給P0
	a0=0;						   //位選
	a1=0; 
	a2=0;
	delay(3);				  //延時
	
	P0=0x00;				
	P0=table[ge];//段選顯示個位數
	a0=0;
	a1=0;
	a2=0;		//選中第一位
	delay(3);

	P0=0x00;				
	P0=table[shi];//段選顯示十位數
	a0=1;
	a1=0;
	a2=0;		//選中第二位
	delay(3);
	
	P0=0x00;
	P0=table[bai];
	a0=0;
	a1=1;
	a2=0;		//選中第三位
	delay(3);
	
	P0=0x00;
	P0=table[qian];//段選顯示千位數
	a0=1;
	a1=1;
	a2=0;		//選中第四位
	delay(3);
	
	P0=0x00;
	P0=table[wan];//段選顯示萬位數
	a0=0;
	a1=0;
	a2=1;		//選中第五位
	delay(3);
	
 							 
}

  
 /**********算術運算函數*************/
void arithmetic()
{
	if (iny){
		switch(operators)
		{
			case 1:							//加法運算
			x=x+y;
			num=x;

			if(num<100000&&num>-100000)			 //正常范圍
			{
			  TR0=0;
			}
			else							   //超出范圍,報警
			TR0=1;

			break;

			case 2:						   //減法運算
			x=x-y;
			num=x;
			if(num<0)
			{
			  num=num*(-1);
			  ff=17;
			}
			else
			ff=16;
			if(num<100000&&num>-100000)
			{
			  TR0=0;
			}
			else
			TR0=1;

			break;

			case 3:
			x=x*y;						  //乘法運算
			num=x;

			if(num<100000&&num>-100000)
			{
			  TR0=0;
			}
			else
			TR0=1;
			break;

			case 4:						  //除法運算
			x=x/y;
			num=x;
			if(y!=0)					 //除數不為0
			{
			  //TR0=0;
			  led=1;
			}
			else					  //除數為0	報警
			//TR0=1;
			  led=0;
			}
		}
}

 /***********符號處理函數*************/

void fuhao() 
{
	if(key<=9&&key>=0)      //判斷按下的鍵是否為數值
	{
	num=num*10+(key-0);
	if (operators>0)
		{
		y=num;
		iny=1;
		}
	else
		{
		x=num;
		if(num<100000&&num>-100000)
		{
		  TR0=0;
		}
		else
		TR0=1;



		}
	}
else
	{
	switch(key)						  //按鍵判斷
		{
		case 'c':
					//x=0;
					//y=0;
					//num=0;
					if(operators==0)
					{
					  x=x/10;	 			 //一位一位刪除
					  num=x;			  
					  iny=0;
					}
					if(operators>0)
					{
					  y=y/10;		//一位一位刪除
					  num=y;		
					}			  
					//iny=0;
					//operators=0;
					//display();
					break;
		case '=':
					arithmetic();
					iny=0;
					operators=0;
					//num=0;
					break;
		case '+':
				    if (operators)
					arithmetic();
					operators=1;
					num=0;
					break;
		case '-':
				    if (operators)
					arithmetic();
					operators=2;
					num=0;
					break;
		case '*':
				    if (operators)
					arithmetic();
					operators=3;
					num=0;
					break;
		case '/':
					if (operators)
					arithmetic();
					operators=4;
					num=0;
					break;
		}
	}
}

7. 設計資料內容清單

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

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

1、仿真圖

2、程序源碼

3、功能要求

4、講解視頻

5、燒錄工具

6、開題報告

7、設計報告

8、軟硬件流程框圖

Altium Designer 安裝破解

KEIL+proteus 單片機仿真設計教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

單片機學習資料

普中-2&普中-3&普中-4開發(fā)板原理圖.pdf

相關數據手冊

答辯技巧

設計報告常用描述

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

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

相關推薦

電子產業(yè)圖譜