基于51单片机设计的简易计算器设计(附图&注释)

基于51单片机设计的简易计算器设计(附图&注释)

ID:43412197

大小:35.22 KB

页数:4页

时间:2019-10-01

基于51单片机设计的简易计算器设计(附图&注释)_第1页
基于51单片机设计的简易计算器设计(附图&注释)_第2页
基于51单片机设计的简易计算器设计(附图&注释)_第3页
基于51单片机设计的简易计算器设计(附图&注释)_第4页
资源描述:

《基于51单片机设计的简易计算器设计(附图&注释)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、若需要完整设计,可以邮件联系wmtju@163.com本人博客:千禾的青春博客基于51单片机设计的简易计算器设计(附图):以下是源程序,经过keil编译通过#include#includevoidsoft_reset(void){((void(code)(void))0x0000)();}unsignedcharx,y;voiddelay(unsignedchart){for(x=0;x

2、detab[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};unsignedcharbdscan(){P1=0x0f;if(P1!=0x0f)delay(20);if(P1!=0x0f){switch(P1&0x0f){case0x0e:hang=0;break;case0x0d:hang=1;break;case0x0b:hang=2;break;case0x07:hang=3;break;}P1=0xf0;switch(P1&0xf0){case0xe0:lie=0;break;c

3、ase0xd0:lie=1;break;case0xb0:lie=2;break;case0x70:lie=3;break;}returntab[hang][lie];}elsereturn0;}/控制显示程序/voiddisp(charnum,n){P3=255-pow(2,n);switch(num){case1:P2=0x06;break;case2:P2=0x5b;break;case3:P2=0x4f;break;case4:P2=0x66;break;case5:P2=0x6d;break;case6:P2=0x7d;break;ca

4、se7:P2=0x07;break;case8:P2=0x7f;break;case9:P2=0x6f;break;case0:P2=0x3f;break;}}voidshow(unsignedlongput){chareach[6],i;/unsignedlongp;for(i=0;i<6;i++){p=pow(10,5-i);each[i]=(char)(put/p);put=put%p;}/each[0]=put/100000;put=put%100000;each[1]=put/10000;put=put%10000;each[2]=pu

5、t/1000;put=put%1000;each[3]=put/100;put=put%100;each[4]=put/10;put=put%10;each[5]=put;for(i=0;i<6;i++)disp(each[i],i);}longcalcu(longopr1,longopr2,charrul){switch(rul){case11:returnopr1+opr2;break;case12:returnopr1-opr2;break;case13:returnopr1opr2;break;case14:returnopr1/opr2

6、;break;}}/主程序/voidmain(){charinp,bijiao,linshi=0,i=0,j=0,rule;//inp是输入,bijiao为后面做长按键一次处理定义变量,rule为运算符号;longoprd[3],xs=0;//oprd是每次输入的完整数,即operand操作数,xs是需要显示的数;while(1){inp=bdscan();if(inp==0)bijiao=0;//持续按键算作一次按键;if(inp!=0){if(inp==bijiao)inp=0;if(inp!=0)bijiao=inp;}//持续按键算作一次

7、按键;if(inp>=1&&inp<=10){if(inp==10)//按到10的时候作0处理;{inp=0;linshi=10;}if(i==0)oprd[j]=inp;elseoprd[j]=oprd[j]10+inp;if(linshi==10)inp=10;//以上10作0处理仅是临时,马上恢复其值,不知是否有意义?i++;}elseif(inp>=11&&inp<=14){if(i!=0)j++;rule=inp;}elseif(inp==15){if(i!=0)j++;oprd[2]=calcu(oprd[0],oprd[1],rul

8、e);}elseif(inp==16)soft_reset();else;if(inp!=0)xs=oprd[j];show(xs);}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。