单片机计算器程序文档格式.docx

上传人:b****4 文档编号:8036370 上传时间:2023-05-09 格式:DOCX 页数:9 大小:16.27KB
下载 相关 举报
单片机计算器程序文档格式.docx_第1页
第1页 / 共9页
单片机计算器程序文档格式.docx_第2页
第2页 / 共9页
单片机计算器程序文档格式.docx_第3页
第3页 / 共9页
单片机计算器程序文档格式.docx_第4页
第4页 / 共9页
单片机计算器程序文档格式.docx_第5页
第5页 / 共9页
单片机计算器程序文档格式.docx_第6页
第6页 / 共9页
单片机计算器程序文档格式.docx_第7页
第7页 / 共9页
单片机计算器程序文档格式.docx_第8页
第8页 / 共9页
单片机计算器程序文档格式.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机计算器程序文档格式.docx

《单片机计算器程序文档格式.docx》由会员分享,可在线阅读,更多相关《单片机计算器程序文档格式.docx(9页珍藏版)》请在冰点文库上搜索。

单片机计算器程序文档格式.docx

ucharg3=0;

ucharg4=0;

charj=-1;

/*与Number[]数组连用*/

ucharm=0;

/*按键【=】的控制变量*/

ucharn=0;

/*按键【.】的控制变量*/

ucharx=0;

/*小数点个数的记录变量*/

ucharxo=0;

/*控制开始计数小数点的变量*/

longintresult;

voidDelay(uinto)/*延时函数delay()的定义*/

{

uinti,j;

for(i=0;

i<

o;

i++)

{

for(j=0;

j<

121;

j++){;

}

}

voidshow(longfloatOut_put)

{ucharr;

uchark;

longintq,p;

uchars=0;

uchari;

longinttemp;

temp=Out_put;

if((Out_put-temp)!

=0){result=Out_put*10000;

r=4;

else{result=Out_put;

r=0;

p=result;

if(m==1)

if(result<

0)

{result=-result;

q=result;

for(i=1;

i<

=8;

i++){q=q/10;

if(q==0){k=i;

i=9;

}}P0=0x40;

P2=C[8-k];

Delay

(1);

}//负号的显示

P0=0x80;

P2=C[r];

Delay

(1);

P0=0x00;

result=p;

P0=Led[result%10];

P2=C[8];

result=result/10;

if((result%10==0)&

&

(result%100==0)&

(result%1000==0)&

(result%10000==0)&

(result%100000==0)&

(result%1000000==0)){P0=0x00;

}

else{P0=Led[result%10];

P2=C[7];

(result%100000==0)){P0=0x00;

P2=C[6];

(result%10000==0)){P0=0x00;

P2=C[5];

(result%1000==0)){P0=0x00;

P2=C[4];

(result%100==0)){P0=0x00;

P2=C[3];

if((result%10==0)){P0=0x00;

P2=C[2];

if(result==0){P0=0x00;

P2=C[1];

voidIn_put()//输入函数输入小数加小数点

{

if(k>

=0&

k<

=9)

switch(e)

case8:

D[7]=D[6];

A[7]=A[6];

//用来存放数值

case7:

D[6]=D[5];

A[6]=A[5];

case6:

D[5]=D[4];

A[5]=A[4];

case5:

D[4]=D[3];

A[4]=A[3];

case4:

D[3]=D[2];

A[3]=A[2];

case3:

D[2]=D[1];

A[2]=A[1];

case2:

D[1]=D[0];

A[1]=A[0];

case1:

if(n==0){D[0]=k;

A[0]=Led[k];

if(xo==1)x++;

}

if(n==1){A[0]=Led[k]|0x80;

xo=1;

n=0;

=11&

=15&

b==1)

{switch(k)

case11:

g1++;

g++;

if(g2==1)L=1;

if(g3==1)L=2;

if(g4==1)L=3;

break;

//+

case12:

g2++;

if(g1==1)L=4;

if(g3==1)L=5;

if(g4==1)L=6;

//-

case13:

g3++;

if(g1==1)L=7;

if(g2==1)L=8;

if(g4==1)L=9;

//*

case14:

g4++;

if(g1==1)L=10;

if(g2==1)L=11;

if(g3==1)L=12;

///

j++;

Number[j]=10000000*D[7]+1000000*D[6]+100000*D[5]+10000*D[4]+1000*D[3]+100*D[2]+10*D[1]+D[0];

=x;

i++){Number[j]=(float)Number[j]/10;

x=0;

for(i=0;

=7;

i++)//数据存储器清零

D[i]=0;

i++)//数据显示清零

{A[i]=0x00;

b=0;

e=0;

xo=0;

voidKey_scan()//键盘扫描函数Key_scan()

unsignedcharX,Y,Z;

P3=0xff;

P3=0x0f;

//先对P2置数行扫描

if(P3!

=0x0f)//判断是否有键按下

Delay(20);

//延时10ms,软件去干扰

=0x0f)//确认按键按下;

X=P3;

//保存行扫描时有键按下时状态

P3=0xf0;

//列扫描

Y=P3;

//保存列扫描时有键按下时状态

Z=X|Y;

//取出键值

while(P3!

=0xf0);

//按键防止抖动

switch(Z)//判断键值(那一个键按下)

case0xe7:

k=0;

e++;

In_put();

break;

//数字【0】

case0xd7:

k=1;

//数字【1】

case0xdb:

k=2;

//数字【2】

case0xdd:

k=3;

//数字【3】

case0xb7:

k=4;

//数字【4】

case0xbb:

k=5;

//数字【5】

case0xbd:

k=6;

//数字【6】

case0x77:

k=7;

//数字【7】

case0x7b:

k=8;

//数字【8】

case0x7d:

k=9;

//数字【9】

case0xeb:

n=1;

//小数点【.】

case0x7e:

k=11;

b=1;

//字符【B+】

case0xbe:

k=12;

//字符【C-】

case0xde:

k=13;

//字符【D*】

case0xee:

k=14;

//字符【E/】

case0xed:

k=15;

m=1;

In_put();

//字符【F=】

voidYun_suan()

if(g1==1&

g==1)Out_put=Number[0]+Number[1];

if(g2==1&

g==1)Out_put=Number[0]-Number[1];

if(g3==1&

g==1)Out_put=Number[0]*Number[1];

if(g4==1&

g==1)Out_put=Number[0]/Number[1];

if(g1==2&

g==2)Out_put=Number[0]+Number[1]+Number[2];

if(g2==2&

g==2)Out_put=Number[0]-Number[1]-Number[2];

if(g3==2&

g==2)Out_put=Number[0]*Number[1]*Number[2];

if(g4==2&

g==2)Out_put=Number[0]/Number[1]/Number[2];

if(L==1)Out_put=Number[0]-Number[1]+Number[2];

if(L==2)Out_put=Number[0]*Number[1]+Number[2];

if(L==3)Out_put=Number[0]/Number[1]+Number[2];

if(L==4)Out_put=Number[0]+Number[1]-Number[2];

if(L==5)Out_put=Number[0]*Number[1]-Number[2];

if(L==6)Out_put=Number[0]/Number[1]-Number[2];

if(L==7)Out_put=Number[0]+Number[1]*Number[2];

if(L==8)Out_put=Number[0]-Number[1]*Number[2];

if(L==9)Out_put=Number[0]/Number[1]*Number[2];

if(L==10)Out_put=Number[0]+Number[1]/Number[2];

if(L==11)Out_put=Number[0]-Number[1]/Number[2];

if(L==12)Out_put=Number[0]*Number[1]/Number[2];

voidXian_shi()

if(m!

=1)

Key_scan();

/*显示函数与A[i]有关*/

P0=A[0];

P0=A[1];

P0=A[2];

P0=A[3];

P0=A[4];

P0=A[5];

P0=A[6];

P0=A[7];

voidmain()

while

(1)

{

Xian_shi();

Yun_suan();

show(Out_put);

//

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2