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

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

【普中】基于51單片機(jī)簡(jiǎn)易計(jì)算器數(shù)碼管顯示設(shè)計(jì)( proteus仿真+程序+實(shí)物演示+講解視頻)

10/24 08:45
3101
服務(wù)支持:
技術(shù)交流群

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

虛擬商品不可退

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

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

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

程序編譯器:keil 4/keil 5

編程語(yǔ)言:C語(yǔ)言

設(shè)計(jì)編號(hào):P04

1. 主要功能:

普中開發(fā)板實(shí)驗(yàn)設(shè)計(jì)

本設(shè)計(jì)旨在設(shè)計(jì)一個(gè)基于51單片機(jī)的簡(jiǎn)易計(jì)算器仿真設(shè)計(jì)。

功能要求:實(shí)現(xiàn)加減乘除四則簡(jiǎn)單運(yùn)算數(shù)碼管顯示

1、能通過(guò)矩陣鍵盤輸入正確鍵值;

2、能進(jìn)行簡(jiǎn)單的四則運(yùn)算;

3、能以數(shù)碼管正確顯示數(shù)值;

4、最大支持運(yùn)算結(jié)果9 9999,超出將蜂鳴器報(bào)警;

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

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

資料下載鏈接:

P系列單片機(jī)設(shè)計(jì)下載鏈接

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

2. 講解視頻:

講解視頻包含仿真運(yùn)行講解、實(shí)物運(yùn)行講解和代碼講解


【普中】基于51單片機(jī)簡(jiǎn)易計(jì)算器仿真+開發(fā)板講解(proteus代碼報(bào)告)

3. 設(shè)計(jì)說(shuō)明書(報(bào)告)

img

本次課程設(shè)計(jì)的主要目標(biāo)是以51單片機(jī)為基礎(chǔ),結(jié)合Proteus仿真軟件,設(shè)計(jì)一款簡(jiǎn)易計(jì)算器。這個(gè)計(jì)算器需要實(shí)現(xiàn)加減乘除四則運(yùn)算功能,并且能夠?qū)⑦\(yùn)算結(jié)果通過(guò)數(shù)碼管進(jìn)行顯示。這個(gè)任務(wù)不僅要求我們掌握單片機(jī)的編程技術(shù),還需要我們深入理解數(shù)碼管顯示的工作原理,同時(shí)還需要通過(guò)Proteus軟件進(jìn)行系統(tǒng)的仿真和調(diào)試。

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

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

通過(guò)這個(gè)課程設(shè)計(jì),我們不僅能夠更加深入地理解單片機(jī)的原理和應(yīng)用,還能夠掌握基本的電路設(shè)計(jì)和軟件編程技能。同時(shí),通過(guò)Proteus的仿真和調(diào)試功能,我們還可以更好地理解系統(tǒng)的運(yùn)行過(guò)程,提高我們的調(diào)試和解決問(wèn)題的能力。我們期待通過(guò)這個(gè)課程設(shè)計(jì),能夠更好地掌握單片機(jī)的應(yīng)用,為未來(lái)的學(xué)習(xí)和工作打下堅(jiān)實(shí)的基礎(chǔ)。

4. 仿真

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

img

5. 實(shí)物燒錄和現(xiàn)象

img

計(jì)算結(jié)果如下圖:

軟件準(zhǔn)備:

第一次使用務(wù)必先安裝CH340驅(qū)動(dòng)。

雙擊打開 STC-ISP.exe。

下載步驟:

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

1.選擇選擇單片機(jī)型號(hào)

2.選擇下載器的串口

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

4.點(diǎn)擊下載,單片機(jī)板子電源鍵按下接通電源,等待下載完成提示

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[]={					 //數(shù)碼管段選
 0x3f,0x06,0x5b,0x4f,
 0x66,0x6d,0x7d,0x07,
 0x7f,0x6f,0x77,0x7c,
 0x39,0x5e,0x79,0x71,
 0x00,0x40
 };

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


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

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

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

	P0=0x00;				
	P0=table[shi];//段選顯示十位數(shù)
	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];//段選顯示千位數(shù)
	a0=1;
	a1=1;
	a2=0;		//選中第四位
	delay(3);
	
	P0=0x00;
	P0=table[wan];//段選顯示萬(wàn)位數(shù)
	a0=0;
	a1=0;
	a2=1;		//選中第五位
	delay(3);
	
 							 
}

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

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

			break;

			case 2:						   //減法運(yùn)算
			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;						  //乘法運(yùn)算
			num=x;

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

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

 /***********符號(hào)處理函數(shù)*************/

void fuhao() 
{
	if(key<=9&&key>=0)      //判斷按下的鍵是否為數(shù)值
	{
	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. 設(shè)計(jì)資料內(nèi)容清單

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

0、常見(jiàn)使用問(wèn)題及解決方法–必讀?。。。?/p>

1、仿真圖

2、程序源碼

3、功能要求

4、講解視頻

5、燒錄工具

6、開題報(bào)告

7、設(shè)計(jì)報(bào)告

8、軟硬件流程框圖

Altium Designer 安裝破解

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

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡(jiǎn)易使用教程

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

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

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

答辯技巧

設(shè)計(jì)報(bào)告常用描述

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

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

相關(guān)推薦

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