C51简易计算器微机课设

目前实现功能:

1.末尾数置0

2.加减乘的五位数计算

3.计算结果溢出时,报错“ERROR”

4.有删除键

 

#include <REGX52.H>
int digit[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~9数字数码管的段选
int zero[]={0xff,0xc0};//0xff即数码管全灭,用作末位置0
unsigned long box[5]={0};//计算器的个十百千万位
int i;
unsigned int KeyValue;       //用于定义16个按键
unsigned int KeySwitch;      //用于判断按下的是数字还是符号
int w; w=0;         //用于判断计算器是否该置0
//延时函数
void delay(int ms)    
{
 int x,y;
 for(x= ms;x>0;x--)
 for(y=110;y>0;y--);
}
//显示函数
	void display()   
	{ 
		if (w==0)      //w初值赋为0,只有检测到有按键被按下时才为1
		{
			P2=0x01;       //将前四位全灭,第五位亮0
			P0=zero[0];
			delay(10);
			P2=0x02;			
			P0=zero[0];
			delay(10);		
	  		P2=0x04;
			P0=zero[0];
			delay(10);
			P2=0x08;
			P0=zero[0];
			delay(10);
			P2=0x10;
			P0=zero[1];
			delay(10);
		}
        //当有按键被按下后,w赋为1,开始显示box列表里的值,box列表中五个值初值都置0,通过按下数字0~9来往里赋值
		if (w!=0)
		{
	  	P2=0x01;           //万位
	  	P0=digit[box[4]];       
	  	delay(10);	  
	  	P2=0x02;           //千位
	  	P0=digit[box[3]];       
	  	delay(10);
	  
	  	P2=0x04;          //百位
	  	P0=digit[box[2]];       
	  	delay(10);
	  
	  	P2=0x08;         //十位
	  	P0=digit[box[1]];
	  	delay(10);
	  	P2=0x10;        //个位
	  	P0=digit[box[0]];
	  	delay(10); 
		}
	}
//按键函数
	void KeyDown(void)
	{  int n;
	   n=0;	 
	   P3=0x0f;          //定义好初值
	   if(P3!=0x0f)      //检测是否有按键被按下,查找到被按下的键&#x
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值