仿真版本:proteus 7.8
程序編譯器:keil 4/keil 5
編程語言:C語言
設(shè)計編號:S0001
講解視頻
1.1 功能要求
芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機芯片。
一、該簡易計算器設(shè)計硬件電路采用三部分電路模塊構(gòu)成:
1、鍵盤模塊電路,采用 4*4 矩陣式鍵盤作為輸入電路;
2、LCD1602 液晶顯示模塊;
3、以 51 單片機作為控制核心。
二、軟件程序主要由三部分組成: 主程序、按鍵掃描程序和 LCD1602 顯示程序。
三、 性能指標
(1) 用51單片機設(shè)計一個簡易計算器, 并用 1602 液晶顯示相應(yīng)的數(shù)據(jù)。
(2) 可以進行簡單的加減乘除運算。
(3) 最大可以 9999*9999, 。
(4) 可以通過 proteus 仿真。
1.2 仿真圖:
打開仿真工程,雙擊proteus中的單片機,選擇hex文件路徑,然后開始仿真。開始仿真后LCD1602暫時沒有顯示,需要按下按鍵才顯示數(shù)字。
加法測試:按鍵按下123+456后再按=號,第二行顯示計算到的結(jié)果579。
減法測試:按鍵按下789-456后再按=號,第二行顯示計算到的結(jié)果333
除法測試:按鍵按下9999*9999后再按=號,第二行顯示計算到的結(jié)果99980001。
除法測試:按鍵按下9999/9后再按=號,第二行顯示計算到的結(jié)果1111。
1.3 原理圖:
AD繪制的
1.4 PCB:
Proteus仿真和實物作品的區(qū)別:
1.運行環(huán)境:Proteus仿真是在計算機上運行的,而實物則是在硬件電路板上運行。
2.調(diào)試方式:在Proteus仿真中,可以方便地進行單步調(diào)試和觀察變量值的變化,而在實物中則需要通過調(diào)試器或者串口輸出等方式進行調(diào)試。
電路連接方式:在Proteus仿真中,可以通過軟件設(shè)置進行電路連接的修改,而在實物中則需要通過硬件電路板和連接線進行修改。
3.運行速度:Proteus仿真通常比實物運行速度快,因為仿真是基于計算機運行的,而實物則需要考慮電路板上的物理限制和器件的響應(yīng)時間等因素。
4.功能實現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實現(xiàn)不同的功能,而在實物中則需要根據(jù)電路設(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è)計報告:
資料清單&&下載鏈接:
0、常見使用問題及解決方法–必讀!?。?!
1.程序
2.仿真
3.原理圖和PCB
4.開題報告
5.元器件清單
6.功能要求
7.設(shè)計報告
8.講解視頻
Altium Designer 安裝破解
KEIL+proteus 單片機仿真設(shè)計教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡易使用教程
單片機學習資料
相關(guān)數(shù)據(jù)手冊
答辯技巧
設(shè)計報告常用描述
鼠標雙擊打開查找更多51 STM32單片機課程畢業(yè)設(shè)計.url
資料下載鏈接(可點擊):