欢迎来到天天文库
浏览记录
ID:8998195
大小:161.00 KB
页数:5页
时间:2018-04-14
《单片机c语言简单计算器代码》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、51单片机程序设计作业-------计算器广西机电微电----梁(2013.5.21)以下程序是本人为课堂作业所写,基本完整作业要求,当然也存在好些问题,如long与float数据转换时出现了问题,时数值不得超过7位数。在所写显示函数中会出现如下错误:floata=999999999;longb;b=a;但b不等于99999999。其中的缘由我也没弄懂,作为一个单片机技术入门级学生将此程序上传,希望能交到爱好电子技术的朋友,互相学习。(qq:1571447734)(图画的有些差了,P0脚用在显示某数字,P2脚控制某位,P3脚控制识别按键)#include2、52.h>#includesbitdian=P0^7;//标记小数点voiddelay(unsignedintj)//基本延时单位1ms{unsignedinte,f;for(e=0;e3、f(P3!=0xf0)//再判断是否有输入{for(i=0;i<4;i++){P3=aa[i];temp=0x10;for(j=0;j<4;j++){if(!(P3&temp))//判断P1口高4位某一行为低电平x=i+j*4;//使用中间变量Xtemp<<=1;}}}}if(P3!=0xf0)gotodingwei;//判断是否松开按键,防止重复赋值switch(x){case0:y=7;break;case1:y=8;break;case2:y=9;break;case3:y=14;break;case4:y=4;break;case5:y=5;break;4、case6:y=6;break;case7:y=13;break;case8:y=1;break;case9:y=2;break;case10:y=3;break;case11:y=12;break;case12:y=10;break;case13:y=0;break;case14:y=15;break;case15:y=11;break;default:y=20;}returny;//返回键盘编号,方便起见:数为0~9;}//符号点+-*/=分别为10,11,12,13,14,15。voidxianshii(floata)//显示部分{floatgeshu;/5、/标记个数longk=0,b=0;inti=0,j=0,c=0;intshuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};geshu=a;a=fabs(a);while(1)//判断小数点所在位置,使float小数点移向最后{k=a;if(a==k)break;a=a*10;c=c+1;if(c>30)break;//避免进入死循环}b=k;while(b=(b/10))j++;//判断输入数的个数if(k%10==0&&c>0)k=k/10;//避免输入如1变为10if((geshu6、>0&&geshu<1)7、8、(geshu<0&&geshu>-1))j=c;//判断特殊数如:0.01或-0.01if(j>6)//保留7位有效数字{c=c-(j-6);for(;j!=6;j--)k=k/10;}for(i=0;i9、******/main(){floatshu=0,xianshi=0,s=0,k=0,zhongshu=0;intfuhao=0,y=20,dian=0,xiaoshu1=0,xiaoshu2=0;while(1){y=saomiao();//扫描if(y==10)dian=1;//小数点if(y<=9)//数字{if(dian==0)//无小数{k=k*10+y;xianshi=k;shu=k;}if(dian==1)//有小数{s=(float)y;xiaoshu1=xiaoshu1+1;xiaoshu2=xiaoshu1;for(;xiaoshu2>0;x10、iaoshu2--)s=
2、52.h>#includesbitdian=P0^7;//标记小数点voiddelay(unsignedintj)//基本延时单位1ms{unsignedinte,f;for(e=0;e3、f(P3!=0xf0)//再判断是否有输入{for(i=0;i<4;i++){P3=aa[i];temp=0x10;for(j=0;j<4;j++){if(!(P3&temp))//判断P1口高4位某一行为低电平x=i+j*4;//使用中间变量Xtemp<<=1;}}}}if(P3!=0xf0)gotodingwei;//判断是否松开按键,防止重复赋值switch(x){case0:y=7;break;case1:y=8;break;case2:y=9;break;case3:y=14;break;case4:y=4;break;case5:y=5;break;4、case6:y=6;break;case7:y=13;break;case8:y=1;break;case9:y=2;break;case10:y=3;break;case11:y=12;break;case12:y=10;break;case13:y=0;break;case14:y=15;break;case15:y=11;break;default:y=20;}returny;//返回键盘编号,方便起见:数为0~9;}//符号点+-*/=分别为10,11,12,13,14,15。voidxianshii(floata)//显示部分{floatgeshu;/5、/标记个数longk=0,b=0;inti=0,j=0,c=0;intshuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};geshu=a;a=fabs(a);while(1)//判断小数点所在位置,使float小数点移向最后{k=a;if(a==k)break;a=a*10;c=c+1;if(c>30)break;//避免进入死循环}b=k;while(b=(b/10))j++;//判断输入数的个数if(k%10==0&&c>0)k=k/10;//避免输入如1变为10if((geshu6、>0&&geshu<1)7、8、(geshu<0&&geshu>-1))j=c;//判断特殊数如:0.01或-0.01if(j>6)//保留7位有效数字{c=c-(j-6);for(;j!=6;j--)k=k/10;}for(i=0;i9、******/main(){floatshu=0,xianshi=0,s=0,k=0,zhongshu=0;intfuhao=0,y=20,dian=0,xiaoshu1=0,xiaoshu2=0;while(1){y=saomiao();//扫描if(y==10)dian=1;//小数点if(y<=9)//数字{if(dian==0)//无小数{k=k*10+y;xianshi=k;shu=k;}if(dian==1)//有小数{s=(float)y;xiaoshu1=xiaoshu1+1;xiaoshu2=xiaoshu1;for(;xiaoshu2>0;x10、iaoshu2--)s=
3、f(P3!=0xf0)//再判断是否有输入{for(i=0;i<4;i++){P3=aa[i];temp=0x10;for(j=0;j<4;j++){if(!(P3&temp))//判断P1口高4位某一行为低电平x=i+j*4;//使用中间变量Xtemp<<=1;}}}}if(P3!=0xf0)gotodingwei;//判断是否松开按键,防止重复赋值switch(x){case0:y=7;break;case1:y=8;break;case2:y=9;break;case3:y=14;break;case4:y=4;break;case5:y=5;break;
4、case6:y=6;break;case7:y=13;break;case8:y=1;break;case9:y=2;break;case10:y=3;break;case11:y=12;break;case12:y=10;break;case13:y=0;break;case14:y=15;break;case15:y=11;break;default:y=20;}returny;//返回键盘编号,方便起见:数为0~9;}//符号点+-*/=分别为10,11,12,13,14,15。voidxianshii(floata)//显示部分{floatgeshu;/
5、/标记个数longk=0,b=0;inti=0,j=0,c=0;intshuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};geshu=a;a=fabs(a);while(1)//判断小数点所在位置,使float小数点移向最后{k=a;if(a==k)break;a=a*10;c=c+1;if(c>30)break;//避免进入死循环}b=k;while(b=(b/10))j++;//判断输入数的个数if(k%10==0&&c>0)k=k/10;//避免输入如1变为10if((geshu
6、>0&&geshu<1)
7、
8、(geshu<0&&geshu>-1))j=c;//判断特殊数如:0.01或-0.01if(j>6)//保留7位有效数字{c=c-(j-6);for(;j!=6;j--)k=k/10;}for(i=0;i9、******/main(){floatshu=0,xianshi=0,s=0,k=0,zhongshu=0;intfuhao=0,y=20,dian=0,xiaoshu1=0,xiaoshu2=0;while(1){y=saomiao();//扫描if(y==10)dian=1;//小数点if(y<=9)//数字{if(dian==0)//无小数{k=k*10+y;xianshi=k;shu=k;}if(dian==1)//有小数{s=(float)y;xiaoshu1=xiaoshu1+1;xiaoshu2=xiaoshu1;for(;xiaoshu2>0;x10、iaoshu2--)s=
9、******/main(){floatshu=0,xianshi=0,s=0,k=0,zhongshu=0;intfuhao=0,y=20,dian=0,xiaoshu1=0,xiaoshu2=0;while(1){y=saomiao();//扫描if(y==10)dian=1;//小数点if(y<=9)//数字{if(dian==0)//无小数{k=k*10+y;xianshi=k;shu=k;}if(dian==1)//有小数{s=(float)y;xiaoshu1=xiaoshu1+1;xiaoshu2=xiaoshu1;for(;xiaoshu2>0;x
10、iaoshu2--)s=
此文档下载收益归作者所有