单片机c语言简单计算器代码.doc

单片机c语言简单计算器代码.doc

ID:62071038

大小:153.00 KB

页数:5页

时间:2021-04-16

单片机c语言简单计算器代码.doc_第1页
单片机c语言简单计算器代码.doc_第2页
单片机c语言简单计算器代码.doc_第3页
单片机c语言简单计算器代码.doc_第4页
单片机c语言简单计算器代码.doc_第5页
资源描述:

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

1、个人收集整理勿做商业用途51单片机程序设计作业-——————计算器广西机电微电----梁(2013。5.21)以下程序是本人为课堂作业所写,基本完整作业要求,当然也存在好些问题,如long与float数据转换时出现了问题,时数值不得超过7位数。在所写显示函数中会出现如下错误:floata=999999999;longb;b=a;但b不等于99999999。其中的缘由我也没弄懂,作为一个单片机技术入门级学生将此程序上传,希望能交到爱好电子技术的朋友,互相学习。(qq:1571447734)(图画的有些差了,P0脚用在显示某数字,P2脚控

2、制某位,P3脚控制识别按键)#include#include个人收集整理勿做商业用途sbitdian=P0^7;//标记小数点voiddelay(unsignedintj)//基本延时单位1ms{unsignedinte,f;for(e=0;e

3、P3=0xf0;if(P3!=0xf0)//判断是否有输入{delay(5);//防抖(延时10ms)if(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

4、;case2:y=9;break;case3:y=14;break;case4:y=4;break;case5:y=5;break;个人收集整理勿做商业用途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

5、;//返回键盘编号,方便起见:数为0~9;}//符号点+—*/=分别为10,11,12,13,14,15。voidxianshii(floata)//显示部分{floatgeshu;//标记个数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

6、=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>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;i

9、k%10];k=k/10;if(c==i)//对应小数点dian=0;delay(3);P0=0Xff;if(geshu<0)//判断有无负号{P2=0x80;P0=0xbf;delay(1);}P2=0x00;P0=0xff;}}/*******主函数***********/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=

10、1;//小数点if(y〈=9)//数字{if(dian==0)//无小数{k=k*10+y;xianshi=k;shu=k;}if(dian==1)//有小数{s=(float)y;xiaoshu1=xiaoshu1+1

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

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

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