资源简介

实现一简易的加减法计算器的功能,要求该计算器能够进行6位无符号数的加减计算(也可以乘除)

资源截图

代码片段和文件信息

#include “reg52.h“
#include “intrins.h“
#include “lcd.h“
#define KEY P0
typedef unsigned int u16;
typedef unsigned char u8;

u8 code smgduan[17]={0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};//显示0~F的值
u8 dec1[6]={000000}dec2[6]={000000}defalut[6] = {000000};
unsigned long int de1=0de2=0defmul=1;
u8 Disp[] = “ Pechin Science “;
u8 KeyValue;  
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;
void delay(unsigned int i){
while(i--);
}
void DigDisplay(u8 ju8 k){
 u8 i;
for(i=0;i {
switch(i)  //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//显示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//显示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//显示第7位

if(j==1){
P1=smgduan[dec1[i]];
}else if(j==2){
P1=smgduan[dec2[i]];
}else if(j==3){
P1 =smgduan[defalut[i]];
}
delay(100); //间隔一段时间扫描
P1=0x00;//消隐
}
}

u8 flag = 0;//是否是第二次按下
void keydown(){
char a=0;
KEY=0x0f;
if(KEY!=0x0f)//读取按键是否按下
{
delay(1000);//延时10ms进行消抖
if(KEY!=0x0f)//再次检测键盘是否按下
{
flag = 1;
//测试列
KEY=0X0F;
switch(KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d): KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//测试行
KEY=0XF0;
switch(KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(KEY!=0xf0))  //检测按键松手检测
{
delay(1000);
a++;
}
}
}
}

void main(){
    u8 i=0j=0operator=0flag1=0n;
// LcdInit();
/* for(i=0;i<16;i++)
{
LcdWriteData(Disp[i]);
}  */
//u8 dec1[6]={000000}dec2[6];
// “A为+““B为减““C为等于“
 while(1){
  i = 0;
  while(i<7){ //32+12 = 
    keydown();
if(flag==1&&KeyValue!=10&&KeyValue!=11&&KeyValue!=12&&KeyValue!=13){  //只接收数据
flag = 0;
dec1[i]=KeyValue;
     i++;
}
DigDisplay(1i);//1代表被减数 2代表减数 3代表结果 i代表位数

while(KeyValue==10||KeyValue==11||KeyValue==12||KeyValue==13){
 if(flag==1){
   flag=0;
 if(KeyValue==10)   {operator = 0; dec1[i]=10;}
   if(KeyValue==11)   {operator = 1; dec1[i]=11;}
 if(KeyValue==12)   {operator = 2; dec1[i]=12;}
   if(KeyValue==13)   {operator = 3; dec1[i]=13;}
 
 }
 j=i+1 ;
 DigDisplay(1j);
 
 
 keydown();
 if(flag==1){
 i=0;
   flag=0;
 dec2[i]=KeyValue;
 i++;
 flag1 =1;
 break;
 }
}
if(flag1==1){
break;
}
  }
  for(n =j-1;n>0;n-

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       23733  2018-07-05 22:22  简易计算器\New Project.pdsprj
     目录           0  2018-07-05 23:52  简易计算器\
     文件        8936  2018-07-05 23:52  简易计算器\MCU_test
     文件       11704  2018-07-05 23:52  简易计算器\MCU_test.LST
     文件       10668  2018-07-05 23:52  简易计算器\MCU_test.M51
     文件       10997  2018-07-05 23:52  简易计算器\MCU_test.OBJ
     文件        3966  2018-07-05 23:52  简易计算器\MCU_test.c
     文件        4350  2018-07-05 23:52  简易计算器\MCU_test.hex
     文件          48  2018-07-05 23:52  简易计算器\MCU_test.lnp
     文件         695  2018-07-05 23:52  简易计算器\MCU_test.plg
     文件       57495  2018-07-05 23:52  简易计算器\MCU_test.uvopt
     文件       13255  2018-07-05 23:52  简易计算器\MCU_test.uvproj
     文件       58895  2018-07-05 23:32  简易计算器\MCU_test_uvopt.bak
     文件       13415  2018-07-05 00:00  简易计算器\MCU_test_uvproj.bak

评论

共有 条评论