单片机c语言计算器连加,!!!!单片机,一个小型计算器。。。。。。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//----jisuanqi.c-------//

#include

uchar code tableduan[]={ //数码表,方便调用

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,

0x76,0x38,0x3f,0

};

uchar code tablewei[]={

0xFE,0XFD,0XFB,

0XF7,0XEF,0XDF

};

long tempnum,num3; //以此为临时输入数,最终输出数

uchar num,temp,i,keydown,qing,fen,flag1,flag2; //flag1,flag2是两个标记为

uchar list[6]={0}; //好吧,我承认我不太会起名字。

uchar fenjie[6]={0}; //两个数组,一个是记录按键的每一位的数

void init(); //初始化函数//另一个是分解num3的;

void shudefenjie();

void display();

void getkey();

void getnum();

void fuzhi();

void qingchu();

long mi(uchar a);

void panduan();

void main()

{

init();

while(1)

{

display();

getkey();

}

}

///

void init()

{

duan=0; //初始化函数。

wei =0;

num=0;

keydown=0;

flag1=0;

flag2=1;

}

void getnum() /

{ //getnum()函数是getkey()函数的子函数

keydown++; //好吧,不知道这样说是否正确。

if(keydown==7) //我用的是键盘扫描的方法,当一个键被按下时;

keydown=1; //首先,我们记录按键次数,当按键达到7时被置1;

switch(num) //好吧,其实我不知道到底是到7还是到6置零或置一,

{ //但是运行没有出错,就成了。

case 13: //13代表着清零。当十三按下时,清零。

keydown=0; //14代表着=,此时输出结果。

num2=0; //15,12,11,10,依次代表加,减,乘,除。

num3=0; //0,1,2,3,4,5,6,7,8,9,就代表本身。

tempnum=0; //好吧,每个句子都有子函数,我不知道假如不写子函数它们到底多长。

for(i=0;i<6;i++) //当按下=时,

{ //它将首先判断,你最近的一次运算符是什么,比如说加减乘除

list[i]=0; //它能判断,因为,不同的运算符对应不同的标志,我用flag2标志。

} //flag2=1,2,3,4分别对应着加减乘除,假如你按了加又按了减,那么flag2标志最终将是2;

flag1=0; //然后是15,12,11,10,分别对应加减乘除,你会发现,它们同样也会检测最近一次运算符是什么

clear(); //然后运算,但是不同之处在于,它们判断后改变了flag2的值。

break; //之所以把0单独拉出来, 因为我们不会希望用户输入00000吧。

case 14: //每次判断后数的分解(shudefenjie())函数,其实作用是不希望你

panduan(); //按下加减乘除后,屏幕一片空白,就是为了好看, 也是为了让用户

shudefenjie(); //知道,他们输入的数确实是这个。

flag1=1; //你将看到flag1的值被改变。

qingchu(); //在display()函数中,实际上我设置了,输入屏幕,输出屏幕

break; //当然,我也想弄个欢迎屏幕,不过觉得没必要。

case 15: //flag1=0时,你将看到,它执行的时“输入屏幕”所以,事实上,你

panduan(); //每输入一个数(有用的0,1,2,3,4,5,6,7,8,9)将把flag1置0,维持

flag2=1; // 输入屏幕

shudefenjie(); //而加减乘除,及等于等键的按下,将会调入输出屏幕,即flag1=1;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值