一、压缩包资料内容(私信获取)
- (1)、基于51单片机的简易电子计算器proteus仿真设计一份;
- (2)、基于51单片机的简易电子计算器proteus仿真设计keli源代码一份;
- (3)、基于51单片机的简易电子计算器proteus仿真设计参考毕业论文一份;
- (4)、基于51单片机的简易电子计算器proteus仿真设计视频讲解一份;
二、设计要求
- (1)、本次电子实训课程要求以STC89C51系列单片机作为主控制芯片,设计一款简易电子计算器;
- (2)、系统要求采用LCD1602模块显示运算过程以及运算结果;
- (3)、系统实现简单的加减乘除的四项基本运算;
三、相关资料截图
图1. proteus仿真界面截图
图2. Keil编程界面源代码截图
图3. 基于51单片机的简易电子计算器论文截图
四、视频讲解
私信获取全部内容
部分源代码
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcden=P3^7;
sbit rs=P3^5;
sbit rw=P3^6;
char i,j,temp,num,num_1;
long a,b,c;
float a_c,b_c;
uchar flag,fuhao;
uchar code table[]={
7,8,9,0,
4,5,6,0,
1,2,3,0,
0,0,0,0};
uchar code table1[]={
7,8,9,0x2f-0x30, //7,8,9,÷
4,5,6,0x2a-0x30, //4, 5, 6,×
1,2,3,0x2d-0x30, //1, 2, 3,-
0x01-0x30,0,0x3d-0x30,0x2b-0x30//C,0,=,+
};
void delay(uchar z)
{
uchar y;
for(z;z>0;z--)
for(y=0;y<110;y++);
}
void write_com(uchar com)
{
rs=0;
P1=com;
delay(5);lcden=1;delay(5); lcden=0;
}
void write_date(uchar date)
{
rs=1; P1=date; delay(5);
lcden=1; delay(5); lcden=0;
}
void init() //初始化
{
num=-1;
lcden=1;
rw=0;
write_com(0x38);
delay(5); write_com(0x38);
delay(5); write_com(0x0c);
delay(1); write_com(0x06);
delay(1); write_com(0x80);
delay(1); write_com(0x01);
num_1=0;
i=0; j=0;
a=0;
b=0;
c=0;
flag=0;
fuhao=0;
}
void keyscan()
{
P2=0xfe;
if(P2!=0xfe)
{
delay(20);// 延迟20ms
if(P2!=0xfe) { temp=P2&0xf0;
switch(temp)
{
case 0xe0:num=0; break;
case 0xd0:num=1; break;
case 0xb0:num=2; break;
case 0x70:num=3; break;
}
} while(P2!=0xfe);
if(num==0||num==1||num==2)
{
if(j!=0){write_com(0x01); j=0; }
if(flag==0)
{ a=a*10+table[num]; }
else
{ b=b*10+table[num]; }
}
else
{
flag=1;
fuhao=4;
}
i=table1[num];
write_date(0x30+i);
}
P2=0xfd;
if(P2!=0xfd)
{
delay(20);
if(P2!=0xfd){ temp=P2&0xf0;
switch(temp)
{
case 0xe0:num=4; break; //4
case 0xd0:num=5; break; //5
case 0xb0:num=6; break; //6
case 0x70:num=7; break; //×
}
} while(P2!=0xfd);
if(num==4||num==5||num==6&&num!=7)//如果按下的是'4','5'或'6'
{
if(j!=0){ write_com(0x01); j=0; }
if(flag==0)
{ a=a*10+table[num]; }
else
{ b=b*10+table[num]; }
}
else//如果按下的是'×'
{ flag=1;
fuhao=3;
}
i=table1[num];
write_date(0x30+i);
}