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)告)
本次課程設(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文件路徑,然后開始仿真。
5. 實(shí)物燒錄和現(xiàn)象
計(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