Proteus 仿真:Proteus 8.16(有低版本)
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:P05
普中开发板实验设计
本设计旨在设计一个基于51单片机的简易计算器仿真设计。
性能指标
(1) 用单片机51单片机设计一个简易计算器, 并用1602液晶显示相应的
数据。
(2) 可以进行简单的加减乘除运算。
(3) 最大可以 9999*9999即计算结果9位数以内的运算。
(4) 可以通过 proteus 仿真和普中开发板运行。
(目前仅完全适配普中开发板A234,其他普中开发板型号可能需要做代码修改或接线)
需注意本设计仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
以下为本设计资料展示图:
讲解视频包含仿真运行讲解、实物运行讲解和代码讲解
【普中】基于51单片机简易计算器LCD显示proteus仿真实物讲解
本设计以STC89C52RC单片机作为计算器的微处理器;采用44矩阵按键作为数据输入,以LCD1602实现信息交互。矩阵按键的设计:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成44=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。采用低功耗的字符型液晶作为显示器件,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。显示更为直观。该系统基于可靠地硬件设计和稳定的软件算法实现题目的基本要求。
打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。
计算结果如下图:
软件准备:
第一次使用务必先安装CH340驱动。
双击打开 STC-ISP.exe。
下载步骤:
0.板子先上电,接电源线到电脑USB口,先不上电,板子无灯光。
1.选择选择单片机型号
2.选择下载器的串口
3.打开编译生成的 HEX 文件
4.点击下载,单片机板子电源键按下接通电源,等待下载完成提示
使用keil4或者keil5编译,代码有注释。
核心代码:
#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、功能要求
4、讲解视频
5、烧录工具
6、开题报告
7、设计报告
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
普中-2&普中-3&普中-4开发板原理图.pdf
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url