基于51单片机实现计算器功能

题目要求:

1、根据开发板设计10以内的加法计算器,用LED数码管显示数字和计算结果。(必做)。

2、根据开发板设计100以内的计算器,用LED数码管显示数字和计算结果,要求可实现加法、减法、乘法和除法的整型运算(选作)。

备注:做了第2题可不做第1题

选做第2题.功能实现如附件视频所示。

/*根据题目要求,设计计算器,51单片机矩阵按键的S4,S8,S12,S16分别代表着+,-,*,/;而S13键表示为清零;S1,S2,S3代表着1,2,3;S5,S6,S7代表着4,5,6;S9,S10,S11代表着7,8,9。如下排列所示:

 

1    2    3    +

4  5    6    -

7    8    9    *

清零 0    =    /

*/

#include<reg51.h>
typedef unsigned char u8;         //对数据类型进行声明定义
typedef unsigned int u16;

sbit LSA=P2^2;  //74HC138译码器数码管位选
sbit LSB=P2^3;
sbit LSC=P2^4;

#define GPIO_KEY P1
#define GPIO_DIG P0

u16 KeyValue;        //用来存放读取到的键值
u16 keyflag,i;       //用来判断按下的数字还是运算符或清空键
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};  //显示0~F、负号‘-’

u16 wei[8]={0};    //用来存放每一位数码管数字的数组

void delay(u16 i)//延时函数
{  
     while(i--);
}

void display()    //扫描显示动态数码管
{    
     LSA=0; LSB=0; LSC=0; GPIO_DIG=smgduan[wei[7]];delay(50); GPIO_DIG=0x00; //消隐
     LSA=1; LSB=0; LSC=0; GPIO_DIG=smgduan[wei[6]];delay(50); GPIO_DIG=
  • 7
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值