计算器程序

上传人:hs****ma 文档编号:468324075 上传时间:2023-02-13 格式:DOCX 页数:12 大小:15.53KB
返回 下载 相关 举报
计算器程序_第1页
第1页 / 共12页
计算器程序_第2页
第2页 / 共12页
计算器程序_第3页
第3页 / 共12页
计算器程序_第4页
第4页 / 共12页
计算器程序_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《计算器程序》由会员分享,可在线阅读,更多相关《计算器程序(12页珍藏版)》请在金锄头文库上搜索。

1、本程序是一个能计算8 位 10 进制的简易计算器,能算加减乘除,除法精确到小数点后3 位 原理图和说明说也已上传到文库! 矩阵键盘子程序:JP_SCAN.H#define SCANP P1sbit been=P2A0;#define uchar unsigned char#define uint unsigned intvoid delay(uint c)uchar x,y;for(x=c;x0;x-) for(y=110;y0;y-);uchar SCAN()uchar temp,num=16;SCANP=0xfe;temp=SCANP; temp=temp&0xf0;while(temp!

2、=0xf0)delay(5);temp=SCANP; temp=(temp&0xf0);while(temp!=0xf0)temp=SCANP;switch(temp)case 0xee: num=1;break;case 0xde: num=2;break;case 0xbe: num=3;break; case 0x7e: num=10;break;while(temp!=0xf0) /松手检测 temp=SCANP; temp=temp&0xf0; been=0; been=1;SCANP=0xfd; temp=SCANP; temp=temp&0xf0; while(temp!=0xf

3、0)delay(5); temp=SCANP; temp=(temp&0xf0); while(temp!=0xf0)temp=SCANP; switch(temp) case 0xed: num=4;break;case 0xdd: num=5;break;case 0xbd: num=6;break;case 0x7d: num=11;break; while(temp!=0xf0)/松手检测temp=SCANP; temp=temp&0xf0; been=0;been=1;SCANP=0xfb; temp=SCANP; temp=temp&0xf0; while(temp!=0xf0)d

4、elay(5); temp=SCANP;temp=(temp&0xf0); while(temp!=0xf0)temp=SCANP;switch(temp)case 0xeb: num=7;break;case 0xdb: num=8;break;case 0xbb: num=9;break;case 0x7b: num=12;break;while(temp!=0xf0)/松手检测temp=SCANP;temp=temp&0xf0;been=0;been=1;SCANP=0xf7;temp=SCANP; temp=temp&0xf0; while(temp!=0xf0) delay(5);

5、temp=SCANP; temp=(temp&0xf0); while(temp!=0xf0) temp=SCANP; switch(temp) case 0xe7: num=15;break; case 0xd7: num=0;break; case 0xb7: num=14;break; case 0x77: num=13;break; while(temp!=0xf0)/松手检测temp=SCANP; temp=temp&0xf0;been=0; been=1;return(num);液晶显示子程序:LCD_DESPLAY.H/液晶显示子函数sbit RS=P2人5;sbit RW=P2

6、A6;sbit EN=P2A7;void write_com(uchar a)RS=0;P0=a;delay(5);EN=1;delay(5);EN=0;void write_data(uchar date)RS=1;P0=date;delay(5);EN=1;delay(5);EN=0;void init()RW=0;EN=0;write_com(0x38); write_com(0x0c); write_com(0x06);write_com(0x01);/ write_com(0x80);算法运算子函数:calcuate.Huchar i=0,r8=0;uint x=0,y=0;void

7、 error()r0=11;r1=10;r2=11;r3=11;r4=10;r5=12;r6=12;r7=12;void fenwei()r0=x%10; r1=(x%100)/10; r2=(x%1000)/100; r3=(x%10000)/1000; r4=(x%100000)/10000; r5=(x%1000000)/100000; r6=(x%10000000)/100000;r7=x/10000000;void calcuate(uchar k,uchar a8,uchar b8) for(i=7;i0;i-)while(ai=12)ai=0;while(bi=12)bi=0;

8、x=a4; x=10000*x;x=x+a0+a1*10+a2*100+a3*1000+a5*100000+a6*1000000+a7*10000000; y=b4;y=10000*4;y=y+b0+b1*10+b2*100+b3*1000+b5*100000+b6*1000000+b7*10000000; if(k=10)/加法运算x=x+y;if(x99999999)error();elsefenwei();if(k=11)/减法运算if(x99999999)error();elsefenwei();for(i=7;i0;i-)if(ri=0&ri-1!=0)ri=14;break;els

9、ex=x-y;fenwei();if(k=12)/乘法运算i=x;x=x*y;if(y=0)x=0;elseif(x99999999|x0;i+)if(ri=0)ri=12; else break;/ for(i=0;i8;i+)/ / dspi+1=ri;/ 主函数:/ Name:/ Time;/ Use:kavin2010 年 12 月 20 日简单计算器#include#include#include#include#includevoid fenwei();/ void error();void jisuan();void desplay2();void desplay();uchar

10、 a9,b9 ,r3;uchar s,t,i;long x,y;uchar code table16=0123456789er =-.;void main()init();while(1)a0=SCAN();if(a00;i-)ai=ai-1;delay(5);a0=16;desplay();if(a09&a014) for(i=1;i9;i+) bi=ai; ai=12;t=a0;init();s=0;a0=16; if(a0=14)s=0;a0=16;jisuan(); desplay2();if(a0=15)a0=16;init();s=0;for(i=1;i9;i+) ai=12;bi

11、=12; for(i=0;i0;i-)if(ai=0)ai=12;else break;write_com(0x80+0x08);for(i=8;i=1;i-) write_data(tableai); delay(3);void desplay2()/计算结果输出显示函数for(i=8;i1;i-) if(ai=0) ai=12;else break; write_com(0x80+0x40);/ write_data(table13);/ write_com(0x80+0x41); for(i=8;i0;i-) write_data(tableai); delay(3); if(r0+r1

12、+r2)!=0) write_data(table15); for(i=3;i0;i-) write_data(tableri-1); delay(5);void jisuan()/结果计算函数for(i=9;i0;i-) if(ai=12)ai=0; if(bi=12)bi=0;x=b4;x=10000*x;x=x+b1+b2*10+b3*100+b4*1000+b6*100000+b7*1000000+b8*10000000; y=a4;y=10000*y; y=y+a1+a2*10+a3*100+a4*1000+a6*100000+a7*1000000+a8*10000000;if(t=10)/加法运算x=x+y;/if(xy)x=x-y;fenwei();/if(x99999999)/error();/else/f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号