赞
踩
基于51单片机简易计算器仿真设计(proteus仿真+程序+原理图+PCB+设计报告+讲解视频)
仿真版本:proteus 7.8
原理图PCB:Altium Designer
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0001
基于51单片机的简易计算器proteus仿真设计
芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
一、该简易计算器设计硬件电路采用三部分电路模块构成:
1、键盘模块电路,采用 4*4 矩阵式键盘作为输入电路;
2、LCD1602 液晶显示模块;
3、以 51 单片机作为控制核心。
二、软件程序主要由三部分组成: 主程序、按键扫描程序和 LCD1602 显示程序。
三、 性能指标
(1) 用51单片机设计一个简易计算器, 并用 1602 液晶显示相应的数据。
(2) 可以进行简单的加减乘除运算。
(3) 最大可以 9999*9999, 。
(4) 可以通过 proteus 仿真。
打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后LCD1602暂时没有显示,需要按下按键才显示数字。
加法测试:按键按下123+456后再按=号,第二行显示计算到的结果579。
减法测试:按键按下789-456后再按=号,第二行显示计算到的结果333
除法测试:按键按下9999*9999后再按=号,第二行显示计算到的结果99980001。
除法测试:按键按下9999/9后再按=号,第二行显示计算到的结果1111。
AD绘制的
Proteus仿真和实物作品的区别:
1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。
2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。
电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。
3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。
4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。
部分代码
#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]!='/') //输入的数据 数值1 { Num1*=10; Num1+=ch[i]-'0'; i++; } Operation=ch[i++]; while(i<len && ch[i]!='=') //输入的数据 数值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];//记录键值对应的字符 text[i]='\0'; LCD_ShowStr(0,0," "); LCD_ShowStr(16-strlen(text),0,text); //第一行显示字符 } if(key==keyzuoyi&&i>0)//按下"<"时删除一位 i-=2; }while(key!=keydeng);//按下'='时结束输入 sprintf(buff, "%ld", Count(text, strlen(text))); LCD_ShowStr(0,1," "); LCD_ShowStr(16-strlen(buff),1,buff); //第二行显示字符 } void main(void) //主函数 { LCD_Init(); while(1) { EasyCounter(); //按键扫描+计算+显示 } }
0、常见使用问题及解决方法–必读!!!!
1.程序
2.仿真
3.原理图和PCB
4.开题报告
5.元器件清单
6.功能要求
7.设计报告
8.讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找更多51 STM32单片机课程毕业设计.url
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。