AT89C52单片机简易计算器.doc

AT89C52单片机简易计算器.doc

ID:57609497

大小:60.00 KB

页数:9页

时间:2020-08-28

AT89C52单片机简易计算器.doc_第1页
AT89C52单片机简易计算器.doc_第2页
AT89C52单片机简易计算器.doc_第3页
AT89C52单片机简易计算器.doc_第4页
AT89C52单片机简易计算器.doc_第5页
资源描述:

《AT89C52单片机简易计算器.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#includesbitC=P3^7;//74hc138的控制端接P2//P0接数码管显示unsignedcharcodeLED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//数字显示数组unsignedcharNUM[10]={0};//储存要显示的数的各位的数组voidshowint(longTNUM)//显示数字函数{longTemp=TNUM;//暂存当前数字longj=0;//计数量shortflag=1;//标记正负,1为正-1为负u

2、nsignedshortjj=0;//当前数字的位数//for(j=0;j<10;j++)NUM[j]=0;//j=0;if(TNUM<0)flag=-1;TNUM=labs(TNUM);//对数取绝对值if((flag==1&&TNUM<=99999999)

3、

4、(flag==-1&&TNUM<=9999999))//判断当前输入数字是否越界(正负不一样){if(TNUM==0){jj=1;//TNUM==0时有一位数字NUM[0]=0;}while(TNUM){NUM[jj]=TNUM-TNUM/10*10;//取出各位数字放入NUM中TNUM=TNUM/10;jj++;

5、}if(flag==-1)//如果是负数在显示数字前加"-"{NUM[jj]=10;jj++;}while(jj-->0)//显示数字{//P3_4=0;//初始化不显示任何东西P0=LED[NUM[jj]];//设置显示数字P2=0x10

6、((7-jj)&0x07);//使数码管的第jj位显示for(j=0;j<10;j++);//延时}}else{//若越界显示E(代表ERROR!!);//P3_4=0;P0=0x79;P2=0x07;for(j=0;j<50;j++);}}voidmain(void)//主函数{inti=200;//计数intTemp=1;//int

7、jack=0;longlnumbefore=0;//前一个数字longlnumnow=0;//后一个数字shortERROR=0;shortflag=2;//标记之前一项是否为运算符charsignal=0;//运算符chardigit=0;//数字位数while(1){jack=0;P3=0xfe;//读第四列if(flag!=1&&(digit!=0

8、

9、flag==4)){if(!(P3_7&&P3_6&&P3_5&&P3_4)){if(Temp){switch(signal){case'+':lnumnow=lnumnow+lnumbefore;lnumbefore=

10、lnumnow;break;case'-':lnumnow=lnumbefore-lnumnow;lnumbefore=lnumnow;break;case'*':lnumnow=lnumnow*lnumbefore;lnumbefore=lnumnow;break;case'/':if(lnumnow!=0){lnumnow=lnumbefore/lnumnow;lnumbefore=lnumnow;}else{ERROR=1;}break;default:break;}signal=0;if(P3_7==0)//除{signal='/';flag=1;digit=0;}

11、if(P3_6==0)//乘{flag=1;signal='*';digit=0;}if(P3_5==0)//减{flag=1;signal='-';digit=0;}if(P3_4==0)//加{flag=1;signal='+';digit=0;}}}else{jack++;}}else{jack++;}P3=0xfd;//读第3列if(!(P3_7&&P3_6&&P3_5&&P3_4)){if(Temp){if(P3_7==0&&digit<8)//9{if(flag==1){lnumbefore=lnumnow;lnumnow=0;digit=0;}if(flag=

12、=4){lnumnow=0;}digit++;lnumnow=lnumnow*10+9;flag=2;}if(P3_6==0&&digit<8)//6{if(flag==1){lnumbefore=lnumnow;lnumnow=0;digit=0;}if(flag==4){lnumnow=0;}digit++;lnumnow=lnumnow*10+6;flag=2;}if(P3_5==0&&digit<8)//3{if(flag==1){lnumbefore=lnumnow;lnumnow=0;digit=0;}

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

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

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