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. 設計說明書(報告)
本次課程設計的主要目標是以51單片機為基礎,結合Proteus仿真軟件,設計一款簡易計算器。這個計算器需要實現加減乘除四則運算功能,并且能夠將運算結果通過數碼管進行顯示。這個任務不僅要求我們掌握單片機的編程技術,還需要我們深入理解數碼管顯示的工作原理,同時還需要通過Proteus軟件進行系統(tǒng)的仿真和調試。
在設計過程中,我們將從硬件電路設計和軟件編程兩個方面進行。硬件電路設計包括單片機最小系統(tǒng)、輸入按鍵、輸出數碼管等部分。其中,單片機最小系統(tǒng)是整個系統(tǒng)的核心,它包括了單片機、時鐘電路、復位電路等基本部分。輸入按鍵將用于用戶輸入數字和運算符號,而輸出數碼管則將用于顯示運算結果。
軟件編程方面,我們將使用C語言進行編程。首先,我們需要根據設計需求,編寫出相應的程序。程序應該能夠讀取用戶的輸入,進行四則運算,并根據運算結果驅動數碼管進行顯示。然后,我們將在Proteus中進行仿真和調試,檢查程序的正確性和系統(tǒng)的穩(wěn)定性。
通過這個課程設計,我們不僅能夠更加深入地理解單片機的原理和應用,還能夠掌握基本的電路設計和軟件編程技能。同時,通過Proteus的仿真和調試功能,我們還可以更好地理解系統(tǒng)的運行過程,提高我們的調試和解決問題的能力。我們期待通過這個課程設計,能夠更好地掌握單片機的應用,為未來的學習和工作打下堅實的基礎。
4. 仿真
打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。
5. 實物燒錄和現象
計算結果如下圖:
軟件準備:
第一次使用務必先安裝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