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

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

基于51單片機(jī)簡易計算器仿真設(shè)計(proteus仿真+程序+原理圖+PCB+設(shè)計報告+講解視頻)

09/23 09:32
1005
服務(wù)支持:
技術(shù)交流群

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

虛擬商品不可退

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

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

仿真版本:proteus 7.8

原理圖PCBAltium Designer

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計編號:S0001

講解視頻


基于51單片機(jī)的簡易計算器proteus仿真設(shè)計

1.1 功能要求

芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。

一、該簡易計算器設(shè)計硬件電路采用三部分電路模塊構(gòu)成:

1、鍵盤模塊電路,采用 4*4 矩陣式鍵盤作為輸入電路;

2、LCD1602 液晶顯示模塊;

3、以 51 單片機(jī)作為控制核心。

二、軟件程序主要由三部分組成: 主程序、按鍵掃描程序和 LCD1602 顯示程序。

三、 性能指標(biāo)

(1) 用51單片機(jī)設(shè)計一個簡易計算器, 并用 1602 液晶顯示相應(yīng)的數(shù)據(jù)。

(2) 可以進(jìn)行簡單的加減乘除運(yùn)算。

(3) 最大可以 9999*9999, 。

(4) 可以通過 proteus 仿真。

1.2 仿真圖:

打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后LCD1602暫時沒有顯示,需要按下按鍵才顯示數(shù)字。

加法測試:按鍵按下123+456后再按=號,第二行顯示計算到的結(jié)果579。

img減法測試:按鍵按下789-456后再按=號,第二行顯示計算到的結(jié)果333

img

除法測試:按鍵按下9999*9999后再按=號,第二行顯示計算到的結(jié)果99980001。

img

除法測試:按鍵按下9999/9后再按=號,第二行顯示計算到的結(jié)果1111。

img

1.3 原理圖:

AD繪制的

img

1.4 PCB:

img

Proteus仿真和實(shí)物作品的區(qū)別:

1.運(yùn)行環(huán)境:Proteus仿真是在計算機(jī)上運(yùn)行的,而實(shí)物則是在硬件電路板上運(yùn)行。

2.調(diào)試方式:在Proteus仿真中,可以方便地進(jìn)行單步調(diào)試和觀察變量值的變化,而在實(shí)物中則需要通過調(diào)試器或者串口輸出等方式進(jìn)行調(diào)試。

電路連接方式:在Proteus仿真中,可以通過軟件設(shè)置進(jìn)行電路連接的修改,而在實(shí)物中則需要通過硬件電路板和連接線進(jìn)行修改。

3.運(yùn)行速度:Proteus仿真通常比實(shí)物運(yùn)行速度快,因為仿真是基于計算機(jī)運(yùn)行的,而實(shí)物則需要考慮電路板上的物理限制和器件的響應(yīng)時間等因素。

4.功能實(shí)現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實(shí)現(xiàn)不同的功能,而在實(shí)物中則需要根據(jù)電路設(shè)計和器件的性能進(jìn)行實(shí)現(xiàn)。

1.5 源程序:

部分代碼

#include "reg52.h"
#include "string.h"
#include "stdio.h"
#include "lcd1602.h"
#include "keyboard.h"

#define keydeng		14
#define keyzuoyi    12

code unsigned char KeyDisPlaybuf[16] = 
{
    '1', '2', '3', '+',
    '4', '5', '6', '-', 
    '7', '8', '9', '*',
    '<', '0', '=', '/'
};

long Count(char *ch, char len)//簡單計算器 僅支持加減乘除+-*/
{
    unsigned char i = 0;
    char Operation;
    long Num1=0,Num2=0;
    while(i<len && ch[i]!='+' && ch[i]!='-' && ch[i]!='*' && ch[i]!='/')	 //輸入的數(shù)據(jù) 數(shù)值1
    {
        Num1*=10;
        Num1+=ch[i]-'0';
        i++;
    }
    Operation=ch[i++];
    while(i<len && ch[i]!='=')	   //輸入的數(shù)據(jù) 數(shù)值2
    {
        Num2*=10;
        Num2+=ch[i]-'0';
        i++;
    }
    switch(Operation)	   //計算
    {
        case'+':return Num1+Num2;//加法
        case'-':return Num1-Num2;//減法
        case'*':return Num1*Num2;//乘法
        case'/':return Num1/Num2;//除法
    }
	return 0;
}

void EasyCounter(void)
{
	unsigned char buff[30];
	unsigned char text[30];
	unsigned char key;
	unsigned char i = 0;
	do
  {
			key = keycan();//讀取鍵值	
			if(key!=0xff)//鍵值不等于0
			{
				text[i++]=KeyDisPlaybuf[key];//記錄鍵值對應(yīng)的字符
				text[i]='?';
        		LCD_ShowStr(0,0,"                ");
				LCD_ShowStr(16-strlen(text),0,text); //第一行顯示字符
			}
        if(key==keyzuoyi&&i>0)//按下"<"時刪除一位
          i-=2;
	}while(key!=keydeng);//按下'='時結(jié)束輸入
	sprintf(buff, "%ld", Count(text, strlen(text)));
  	LCD_ShowStr(0,1,"                ");
	LCD_ShowStr(16-strlen(buff),1,buff);	  //第二行顯示字符
}

void main(void)	//主函數(shù)
{
  LCD_Init();
  while(1)
  {
    EasyCounter();	//按鍵掃描+計算+顯示
  }
}

1.6設(shè)計報告:

img

資料清單&&下載鏈接:

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

1.程序

2.仿真

3.原理圖和PCB

4.開題報告

5.元器件清單

6.功能要求

7.設(shè)計報告

8.講解視頻

Altium Designer 安裝破解

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

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

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

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

答辯技巧

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

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

img

資料下載鏈接(可點(diǎn)擊):

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

相關(guān)推薦

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