仿真圖proteus7.8及以上
程序編譯器:keil 4/keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):S0049
1.主要功能:
本設(shè)計(jì)旨在設(shè)計(jì)一個(gè)基于51單片機(jī)的簡(jiǎn)易計(jì)算器仿真設(shè)計(jì)。
功能要求:實(shí)現(xiàn)加減乘除四則簡(jiǎn)單運(yùn)算數(shù)碼管顯示
1、能通過矩陣鍵盤輸入正確鍵值;
2、能進(jìn)行簡(jiǎn)單的四則運(yùn)算;
3、能以數(shù)碼管正確顯示數(shù)值;
4、最大支持999*999;
5、輸入數(shù)字能重復(fù)操作,取后三位數(shù)字。
需注意仿真中51單片機(jī)芯片是通用的,AT89C51,AT89C52都是51單片機(jī)的具體型號(hào),內(nèi)核是兼容的。無(wú)論stc還是at都一樣,引腳功能都是一樣的,程序也是一樣的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。
以下為本設(shè)計(jì)資料展示圖:
2.仿真
開始仿真
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后,數(shù)碼管顯示000000。
打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后,數(shù)碼管顯示000 000。
由于數(shù)碼管顯示有局限,本設(shè)計(jì)的運(yùn)算符號(hào)加減乘除分別按照下圖的標(biāo)點(diǎn)顯示:
加法驗(yàn)證:矩陣鍵盤輸入123+456后,按下按鍵=即顯示運(yùn)算結(jié)果 00579。剪輯如下圖所示:
減法驗(yàn)證:矩陣鍵盤輸入789-456后,按下按鍵=即顯示運(yùn)算結(jié)果000333。剪輯如下圖所示:
乘法驗(yàn)證:矩陣鍵盤輸入999*999后,按下按鍵=即顯示運(yùn)算結(jié)果998001。剪輯如下圖所示:
除法驗(yàn)證:矩陣鍵盤輸入666*3后,按下按鍵=即顯示運(yùn)算結(jié)果000222。剪輯如下圖所示:
以上加減乘除運(yùn)算均符合數(shù)學(xué)運(yùn)算規(guī)則,滿足設(shè)計(jì)要求。
3. 程序代碼
使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合報(bào)告理解代碼含義。
主函數(shù)代碼
void main()//主函數(shù)
{
unsigned char i;
unsigned int m=0;
while(1)
{
//顯示
if(fuhao<5)
{
P0=smgduan[a%1000/100];smg1=0;delay(100);smg1=1;
P0=smgduan[a%100/10];smg2=0;delay(100);smg2=1;
P0=smgduan[a%10];smg3=0;delay(100);smg3=1; //顯示第一個(gè)數(shù)
switch(fuhao)//顯示運(yùn)算符號(hào)
{
case 1:P0=0x01;break;
case 2:P0=0x40;break;
case 3:P0=0x08;break;
case 4:P0=0x80;break;
default:P0=0;
}
smg4=0;delay(100);smg4=1;
P0=smgduan[b%1000/100];smg5=0;delay(100);smg5=1; //顯示第二個(gè)數(shù)
P0=smgduan[b%100/10];smg6=0;delay(100);smg6=1;
P0=smgduan[b%10];smg7=0;delay(100);smg7=1;
}
else//顯示結(jié)果
{
P0=smgduan[c%1000000/100000];smg2=0;delay(100);smg2=1;
P0=smgduan[c%100000/10000];smg3=0;delay(100);smg3=1;
P0=smgduan[c%10000/1000];smg4=0;delay(100);smg4=1;
P0=smgduan[c%1000/100];smg5=0;delay(100);smg5=1;
P0=smgduan[c%100/10];smg6=0;delay(100);smg6=1;
P0=smgduan[c%10];smg7=0;delay(100);smg7=1;
}
//==================================================
i=key_scan();//檢測(cè)
if((i>0)&&(i<11))//輸入數(shù)值
{
if(fuhao==0)//第1個(gè)輸入
{
a=a*10+i-1;
if(a>999)
a=a%1000;
}
else //第2個(gè)輸入
{
b=b*10+i-1;
if(b>999)
b=b%1000;
}
}
if(i==13)//+ 加法
{
fuhao=1;
}
if(i==14)//- 減法
{
fuhao=2;
}
if(i==15)//* 乘法
{
fuhao=3;
}
if(i==16)// / 除法
{
fuhao=4;
}
if(i==11)//ok 等于
{
switch(fuhao) //判斷按下的運(yùn)算法則是什么
{
case 1:c=a+b;break; //加
case 2:c=a-b;break; //減
case 3:c=a;c=c*b;break; //成
case 4:c=a/b; //除法
}
fuhao=5;
}
if(i==12)//清除
{
a=0;
b=0;
c=0;
fuhao=0;
}
}
}
4. 原理圖
原理圖使用AD繪制,可供實(shí)物參考,仿真不同于實(shí)物,經(jīng)驗(yàn)不足不要輕易搞實(shí)物。
Proteus仿真和實(shí)物作品的區(qū)別:
1.運(yùn)行環(huán)境:Proteus仿真是在計(jì)算機(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)行速度快,因?yàn)榉抡媸腔谟?jì)算機(jī)運(yùn)行的,而實(shí)物則需要考慮電路板上的物理限制和器件的響應(yīng)時(shí)間等因素。
4.功能實(shí)現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實(shí)現(xiàn)不同的功能,而在實(shí)物中則需要根據(jù)電路設(shè)計(jì)和器件的性能進(jìn)行實(shí)現(xiàn)。
5. 設(shè)計(jì)報(bào)告
6249字設(shè)計(jì)報(bào)告
6. 設(shè)計(jì)資料內(nèi)容清單&&下載鏈接
資料設(shè)計(jì)資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計(jì)報(bào)告、軟硬件設(shè)計(jì)框圖等。
0、常見使用問題及解決方法–必讀?。。?!
1、仿真圖
2、程序源碼
3、開題報(bào)告
4、原理圖
5、功能要求
6、元器件清單
7、設(shè)計(jì)報(bào)告
8、軟硬件流程框圖
9、講解視頻
Altium Designer 軟件資料
filename.bat
KEIL軟件資料
Proteus軟件資料
單片機(jī)學(xué)習(xí)資料
目錄清單.txt
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開查找更多51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
資料下載鏈接:
https://docs.qq.com/doc/DS2RTaGxZUktTRnRE