欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年2022年计算器c程序 .pdf

    • 资源ID:34255764       资源大小:54.62KB        全文页数:9页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年2022年计算器c程序 .pdf

    #include unsigned char code disp_tab13=0 x28,0 x7e,0 xa2,0 x62,0 x74,0 x61,0 x21,0 x7a,0 x20,0 x60,0 xff,0 xa1,0 xf7; unsigned char code disp_tab_point13=0 x08,0 x5e,0 x82,0 x42,0 x54,0 x41,0 x01,0 x5a,0 x00,0 x40,0 xff,0 x40; unsigned char disp_buf8=10,10,10,10,10,10,10,0,disp_buf_X8,disp_buf_Y8; unsigned char keynum,shift_point; float X,Y ,Z; bit flag_div,flag_mul,flag_add,flag_sub,flag_point,flag_result,flag_keynum,no_keynum;bit flag_add_cal,flag_sub_cal,flag_cal,flag_error,flag_store_Y ,flag_fushu; bit flag_add1,flag_sub1,flag_mul1,flag_mul_cal,flag_div1,flag_div_cal;sbit flag_clear=P30; sbit flag_OFF=P31; void mdelay(unsigned int Delay); unsigned char keyscan(void); void display(void); void readkey(unsigned char date); void pro_display(void); void store_X(void); void store_Y(void); void CHANGE_BCD(void); main() unsigned char i; while(1) readkey(keyscan(); pro_display(); if(!flag_OFF) for(i=0;i8;i+) disp_bufi=10; if(!flag_clear) flag_add_cal=0; flag_sub_cal=0; flag_mul_cal=0; flag_div_cal=0; flag_add1=0; flag_sub1=0; flag_mul1=0; flag_div1=0; flag_add=0; flag_sub=0; flag_mul=0; flag_div=0; flag_cal=0; flag_point=0; flag_result=0; flag_keynum=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - no_keynum=0; flag_store_Y=0; X=0; Y=0; Z=0; for(i=0;i=0) flag_fushu=0; / else Z=X+Y ; CHANGE_BCD(); else flag_add=0; store_X();/ 只要按了就存储当前值为X flag_cal=1; flag_add1=1;flag_sub1=0;flag_mul1=0;flag_div1=0; else if(flag_sub)/ 减法 if(flag_sub_cal) flag_sub_cal=0; flag_cal=1; store_Y(); / if(flag_fushu) if(X=Y)&(!flag_fushu) Z=X-Y ; else if(!flag_fushu) flag_fushu=1; Z=Y-X; else if(flag_fushu) Z=Y+X; CHANGE_BCD(); else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - flag_sub=0; store_X();/ 只要按了就存储当前值为X flag_cal=1; flag_sub1=1;flag_add1=0;flag_mul1=0;flag_div1=0; else if(flag_mul) / 乘法 if(flag_mul_cal) flag_mul_cal=0; flag_cal=1; store_Y(); Z=X*Y ; CHANGE_BCD(); else flag_mul=0; store_X();/ 只要按了就存储当前值为X flag_cal=1; flag_mul1=1;flag_add1=0;flag_sub1=0;flag_div1=0; else if(flag_div) / 除法 if(flag_div_cal) flag_div_cal=0; flag_cal=1; store_Y(); if(Y=0.) flag_error=1; else Z=X/Y ; CHANGE_BCD(); else flag_div=0; store_X();/ 只要按了加号就存储当前值为X flag_cal=1; flag_div1=1;flag_add1=0;flag_sub1=0;flag_mul1=0; else if(flag_result)/= 号键计算结果 flag_result=0; if(flag_add1|flag_sub1|flag_mul1|flag_div1) if(!flag_store_Y) store_Y();flag_store_Y=1;/存储 =号按时的第一次值为Y if(flag_add1) Z=X+Y ; X=Z; flag_add_cal=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - if(flag_sub1) flag_sub_cal=0; if(X=Y)&(!flag_fushu) Z=X-Y ;X=Z; else if(!flag_fushu) flag_fushu=1; Z=Y-X;X=Z; else if(flag_fushu) Z=Y+X;X=Z; if(flag_mul1) flag_mul_cal=0; Z=X*Y ; X=Z; if(flag_div1) flag_div_cal=0; if(Y=0.) flag_error=1; else Z=X/Y ; X=Z; CHANGE_BCD(); display(); else flag_cal=1; void mdelay(unsigned int Delay) unsigned int i; for(;Delay0;Delay-) for(i=0;i124;i+) ; void pro_display(void)/ 输入显示处理程序 unsigned char i; if(flag_cal)/ 如果有 +-*/ 键按下if(flag_keynum|flag_point)/如果再有数字键按下 flag_cal=0; flag_keynum=0; flag_add_cal=1; flag_sub_cal=1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - flag_mul_cal=1; flag_div_cal=1; shift_point=0; for(i=0;i7;i+) disp_bufi=10; if(flag_point) disp_buf7=0;flag_point=0;shift_point=7; else disp_buf7=keynum; else /没有数字键则显示display(); else /没有 +-*/ 键按下,就等待数字键键入,并作一些处理 if(disp_buf1=10)/判断是否到了首位 if(flag_point)/ 判断是否按了 .号if(shift_point=0)/ 如果是第一次按的.号flag_point=0;shift_point=7; if(flag_keynum)/ 有数字键按下 flag_keynum=0; if(disp_buf7=0)&(disp_buf6=10)&(shift_point=0)/末尾位为0 且前面一位没数值且没有. if(keynum!=0)/ 如果键值不为0 则送末位disp_buf7=keynum;display(); else display(); else/末尾位不为0 for(i=0;i7;i+)/全体向首部移一位disp_bufi=disp_bufi+1; if(shift_point) shift_point-; disp_buf7=keynum; /将得到的数值放置末位display(); else display(); else keynum=0;flag_keynum=0;display(); void display(void)/ 数码管显示程序 unsigned char tmp=0 xfe,i; for(i=0;i7;i+) P2=tmp; if(shift_point) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - if(shift_point=i) P0=disp_tab_pointdisp_bufi; else P0=disp_tabdisp_bufi; else P0=disp_tabdisp_bufi; mdelay(1); tmp=(tmp1)|0 x01; P2=0 x7f; if(shift_point) if(shift_point!=7) P0=disp_tabdisp_buf7; else P0=disp_tab_pointdisp_buf7; else P0=disp_tab_pointdisp_buf7; mdelay(1); unsigned char keyscan(void)/ 键盘扫描程序 unsigned char test,tmp; P1=0 xf0; if(P1&0 xf0)!=0 xf0) mdelay(1); if(P1&0 xf0)!=0 xf0) test=0 xfe; while(test&0 x10)!=0) P1=test; if(P1&0 xf0)!=0 xf0) tmp=(P1&0 xf0)|0 x0f; return(test)+(tmp); else test=(test1)|0 x01; return(0); void readkey(unsigned char date)/ 键值解释程序 while(P1&0 xf0)!=0 xf0) display();/ 等待键释放; switch(date) case 0X11: flag_add=1;break; case 0X21: flag_result=1;break; case 0X41: keynum=0;flag_keynum=1;break; case 0X81: flag_point=1;break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - case 0X12: flag_sub=1;break; case 0X22: keynum=3;flag_keynum=1;break; case 0X42: keynum=2;flag_keynum=1;break; case 0 x82: keynum=1;flag_keynum=1;break; case 0 x14: flag_mul=1;break; case 0 x24: keynum=6;flag_keynum=1;break; case 0 x44: keynum=5;flag_keynum=1;break; case 0 x84: keynum=4;flag_keynum=1;break; case 0 x18: flag_div=1;break; case 0 x28: keynum=9;flag_keynum=1;break; case 0 x48: keynum=8;flag_keynum=1;break; case 0 x88: keynum=7;flag_keynum=1;break; case 0 x00: no_keynum=1;break; void store_X(void) unsigned char i; for(i=0;i8;i+) disp_buf_Xi=disp_bufi; for(i=0;i8;i+) if(disp_buf_Xi=10) disp_buf_Xi=0; X=disp_buf_X1*1000000+disp_buf_X2*100000+disp_buf_X3*10000+disp_buf_X4*1000+disp_buf_X5*100+disp_buf_X6*10+disp_buf_X7; if(shift_point=6) X=X/10.; if(shift_point=5) X=X/100.; if(shift_point=4) X=X/1000.; if(shift_point=3) X=X/10000.; if(shift_point=2) X=X/100000.; if(shift_point=1) X=X/1000000.; void store_Y(void) unsigned char i; for(i=0;i8;i+) disp_buf_Yi=disp_bufi; for(i=0;i8;i+) if(disp_buf_Yi=10) disp_buf_Yi=0; Y=disp_buf_Y1*1000000+disp_buf_Y2*100000+disp_buf_Y3*10000+disp_buf_Y4*1000+disp_buf_Y5*100+disp_buf_Y6*10+disp_buf_Y7; if(shift_point=6) Y=Y/10.; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - if(shift_point=5) Y=Y/100.; if(shift_point=4) Y=Y/1000.; if(shift_point=3) Y=Y/10000.; if(shift_point=2) Y=Y/100000.; if(shift_point=1) Y=Y/1000000.; void CHANGE_BCD(void) unsigned long tmp; unsigned char j; if(Z10.)/Z10 Z=Z*1000000;shift_point=1; else if(Z100.)/10=Z100 Z=Z*100000;shift_point=2; else if(Z1000.)/100=Z1000 Z=Z*10000;shift_point=3; else if(Z10000.)/1000=Z10000 Z=Z*1000;shift_point=4; else if(Z100000.)/10000=Z100000 Z=Z*100;shift_point=5; else if(Z1000000.)/100000=Z1000000 Z=Z*10;shift_point=6; else if(Z10000000.)/1000000=Z=10000000 flag_error=1; if(!flag_error) tmp=(long)Z; disp_buf1=(char)(tmp/1000000); disp_buf2=(char)(tmp%1000000/100000); disp_buf3=(char)(tmp%100000/10000); disp_buf4=(char)(tmp%10000/1000); disp_buf5=(char)(tmp%1000/100); disp_buf6=(char)(tmp%100/10); disp_buf7=(char)(tmp%10); if(flag_error) /flag_error=0; shift_point=0; disp_buf7=0; disp_buf6=10; disp_buf5=10; disp_buf4=10; disp_buf3=10; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - disp_buf2=10; disp_buf1=10; disp_buf0=11;/E if(flag_fushu) disp_buf0=12;/- if(!flag_error) for(j=0;j7;j+) if(disp_buf7=0)&(shift_point7)/最后一位为0 if(disp_buf0=12) shift_point+; disp_buf7=disp_buf6; disp_buf6=disp_buf5; disp_buf5=disp_buf4; disp_buf4=disp_buf3; disp_buf3=disp_buf2; disp_buf2=disp_buf1; disp_buf1=10; else shift_point+; disp_buf7=disp_buf6; disp_buf6=disp_buf5; disp_buf5=disp_buf4; disp_buf4=disp_buf3; disp_buf3=disp_buf2; disp_buf2=disp_buf1; disp_buf1=disp_buf0; else break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -

    注意事项

    本文(2022年2022年计算器c程序 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开