单片机简易计算器课程设计Word格式文档下载.docx

上传人:b****3 文档编号:14092215 上传时间:2022-10-18 格式:DOCX 页数:10 大小:94.27KB
下载 相关 举报
单片机简易计算器课程设计Word格式文档下载.docx_第1页
第1页 / 共10页
单片机简易计算器课程设计Word格式文档下载.docx_第2页
第2页 / 共10页
单片机简易计算器课程设计Word格式文档下载.docx_第3页
第3页 / 共10页
单片机简易计算器课程设计Word格式文档下载.docx_第4页
第4页 / 共10页
单片机简易计算器课程设计Word格式文档下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

单片机简易计算器课程设计Word格式文档下载.docx

《单片机简易计算器课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机简易计算器课程设计Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。

单片机简易计算器课程设计Word格式文档下载.docx

然后调用compute()函数进行计算并返回结果。

具体程序及看注释还有流程图

五程序源代码

#include<

reg51.h>

intrins.h>

ctype.h>

/*isdigit()函数*/

stdlib.h>

/*atoi()函数*/

#defineucharunsignedchar

#defineuintunsignedint

ucharoperand1[9],operand2[9];

/*操作数*/

ucharoperator;

/*操作符*/

voiddelay(uint);

ucharkeyscan();

voiddisp(void);

voidbuf(uintvalue);

uintcompute(uintva1,uintva2,ucharoptor);

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xff};

/*字符码表*/

uchardbuf[8]={10,10,10,10,10,10,10,10};

/*显示缓存*/

/*延时函数*/

voiddelay(uintz)

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

/*******************************************

键盘扫描程序

将按键转化为字符并作为输出

'

$'

'

#'

分别表示清零键和没有键按下

*******************************************/

ucharkeyscan()

ucharskey;

/*按键值标记变量*/

/***********************

扫描键盘第1行

************************/

P1=0xfe;

while((P1&

0xf0)!

=0xf0)/*有按键按下*/

{

delay(3);

/*去抖动延时*/

=0xf0)/*仍有键按下*/

switch(P1)/*识别按键并赋值*/

case0xee:

skey='

7'

;

break;

case0xde:

8'

case0xbe:

9'

case0x7e:

/'

default:

}

while((P1&

=0xf0)/*等待按键松开*/

;

扫描键盘第2行

P1=0xfd;

=0xf0)

switch(P1)

case0xed:

4'

case0xdd:

5'

case0xbd:

6'

case0x7d:

*'

扫描键盘第3行

P1=0xfb;

case0xeb:

1'

case0xdb:

2'

case0xbb:

3'

case0x7b:

-'

扫描键盘第4行

P1=0xf7;

case0xe7:

case0xd7:

0'

case0xb7:

='

case0x77:

+'

returnskey;

voidmain()

{

uintvalue1,value2,value;

/*数值1,数值2,结果*/

ucharckey,cut1=0,cut2=0;

/*ckey键盘输入字符*/

ucharoperator;

/*运算符*/

uchari,bool=0;

init:

/*goto语句定位标签*/

buf(0);

/*初始化*/

disp();

value=0;

cut1=cut2=0;

bool=0;

for(i=0;

i<

9;

i++)

operand1[i]='

\0'

operand2[i]='

}/*初始化*/

while

(1)

ckey=keyscan();

/*读取键盘*/

if(ckey!

='

{/*isdigit函数,字符是阿拉伯数字返回非0值,否则返回0*/

if(isdigit(ckey))

switch(bool)

case0:

operand1[cut1]=ckey;

operand1[cut1+1]='

value1=atoi(operand1);

/*atoi函数,将字符串转化为,int整数*/

cut1++;

buf(value1);

case1:

operand2[cut2]=ckey;

operand2[cut2+1]='

value2=atoi(operand2);

cut2++;

buf(value2);

elseif(ckey=='

||ckey=='

bool=1;

operator=ckey;

dbuf[7]=10;

elseif(ckey=='

value=compute(value1,value2,operator);

buf(value);

while

(1)/*计算结束等待清零键按下*/

if(ckey=='

)/*如果有清零键按下跳转到开始*/

gotoinit;

else

{gotoinit;

/******************************************

运算函数

输入:

操作数和操作符

输出:

计算结果

*******************************************/

uintcompute(uintva1,uintva2,ucharoptor)

uintvalue;

switch(optor)

case'

:

value=va1+va2;

value=va1-va2;

value=va1*va2;

value=va1/va2;

default:

returnvalue;

更新显示缓存

输入:

无符号整数

输出:

将输入送入显示缓存

voidbuf(uintval)

uchari;

if(val==0)

dbuf[7]=0;

i=6;

for(i=7;

val>

0;

i--)

dbuf[i]=val%10;

val/=10;

for(;

i>

0

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

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1