您所在位置: 网站首页 / AT89C52单片机简易计算器.doc / 文档详情
AT89C52单片机简易计算器.doc 立即下载
2024-12-12
约5.1千字
约9页
0
60KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

AT89C52单片机简易计算器.doc

AT89C52单片机简易计算器.doc

预览

免费试读已结束,剩余 4 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<AT89X51.h>
#include<math.h>
sbitC=P3^7;
//74hc138的控制端接P2
//P0接数码管显示
unsignedcharcodeLED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//数字显示数组
unsignedcharNUM[10]={0};//储存要显示的数的各位的数组
voidshowint(longTNUM)//显示数字函数
{
longTemp=TNUM;//暂存当前数字
	longj=0;//计数量
	shortflag=1;//标记正负,1为正-1为负
	unsignedshortjj=0;//当前数字的位数
	//for(j=0;j<10;j++)NUM[j]=0;
	//j=0;
	if(TNUM<0)flag=-1;
	TNUM=labs(TNUM);//对数取绝对值
	if((flag==1&&TNUM<=99999999)||(flag==-1&&TNUM<=9999999))//判断当前输入数字是否越界(正负不一样)
	{
		if(TNUM==0)
		{
		jj=1;//TNUM==0时有一位数字
		NUM[0]=0;
		}
		while(TNUM)
		{
			NUM[jj]=TNUM-TNUM/10*10;//取出各位数字放入NUM中
			TNUM=TNUM/10;
			jj++;
		}
		if(flag==-1)//如果是负数在显示数字前加"-"
		{
		NUM[jj]=10;
		jj++;
		}
		while(jj-->0)//显示数字
		{
			//P3_4=0;//初始化不显示任何东西
			P0=LED[NUM[jj]];//设置显示数字
		P2=0x10|((7-jj)&0x07);//使数码管的第jj位显示
			for(j=0;j<10;j++);//延时
		}
	}else{//若越界显示E(代表ERROR!!);
	//P3_4=0;
		P0=0x79;
		P2=0x07;
		for(j=0;j<50;j++);
	}
}
voidmain(void)//主函数
{
inti=200;//计数
	intTemp=1;//
intjack=0;
longlnumbefore=0;//前一个数字
	longlnumnow=0;//后一个数字
	shortERROR=0;
	shortflag=2;//标记之前一项是否为运算符
	charsignal=0;//运算符
	chardigit=0;//数字位数
	while(1)
	{
	jack=0;
	P3=0xfe;//读第四列
	if(flag!=1&&(digit!=0||flag==4))
	{
	if(!(P3_7&&P3_6&&P3_5&&P3_4))
		{
		if(Temp)
			{
				switch(signal)
				{
				case'+':
				lnumnow=lnumnow+lnumbefore;
						lnumbefore=lnumnow;
						break;
				case'-':
				lnumnow=lnumbefore-lnumnow;
						lnumbefore=lnumnow;
						break;
				case'*':
				lnumnow=lnumnow*lnumbefore;
						lnumbefore=lnumnow;
						break;
				case'/':
				if(lnumnow!=0)
						{
					lnumnow=lnumbefore/lnumnow;
							lnumbefore=lnumnow;
						}else{
						ERROR=1;
						}
						break;
				default:
				break;
				}
				signal=0;
				if(P3_7==0)//除
				{
				signal='/';
					flag=1;
					digit=0;
				}
				if(P3_6==0)//乘
				{
						flag=1;
						signal='*';
						digit=0;
				}
				if(P3_5==0)//减
				{
						flag=1;
						signal='-';
						digit=0;
				}
				if(P3_4==0)//加
				{
						flag=1;
		
查看更多
王子****青蛙
实名认证
内容提供者
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

AT89C52单片机简易计算器

文档大小:60KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用