单片机实现计算器功能

#include <reg51.h>
sbit E=P2^2;
sbit RS=P2^0;
sbit RW=P2^1;
#define GPIO_KEY P1
unsigned char KeyValue=17;  //键盘按键值
void KeyDown(void);   //键盘扫描
void delay1ms(unsigned int x);
void init();      //lcd1602初始化
void writecom(unsigned char j);   //写命令
void writedata(unsigned char j);   //写数据
void fbusy(); //忙检测
unsigned char LEDBuffer[5];


unsigned char i=0;           //x作为第一个数据   注意char型的数据位数只有8位,最高计数到256
unsigned char flag=0;
unsigned int result=0,temp=0,x;
unsigned int numbuffer[10];   //用于缓存数据
unsigned int j=0;
unsigned char pflag=0,mflag=0,hflag=0,lflag=0;     //用于定义乘除法的优先级
void main()
{
IT0=1;   //定义外部中断用于清屏
EX0=1;
EA=1;
    SP=0x50;
init();
writecom(0x80);
writedata('1');
writedata('5');
writedata('0');
writedata('0');
writedata('9');
writedata('0');
writedata('5');
writedata('1');
writedata('3');
writedata('0');
writedata(' ');
writedata(' ');
writedata('m');
writedata('c');
writedata('l');
delay1ms(500);
init();   
writecom(0x80);
while(1)
{
//    writecom(0x80);
   KeyDown();
  
switch(KeyValue)
{
  case 0:
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9:{
      writedata('0'+KeyValue);
  temp=temp*10+KeyValue;      //第一个数字
  KeyValue=17;
  }
  break;
  case 10:{
      writedata('+');
  numbuffer[j]=temp;   //缓存区数据
  temp=0;
  j++;
               if(pflag)
  {
      numbuffer[j-2]=numbuffe
  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值