基于51单片机的8位数码管计算器设计

1、简介
该设计是以AT89C51单片机为核心的计算器模拟系统,输入采用4×4矩阵键盘,可以进行加、减、乘、除数字运算,并在8位数码管上显示操作过程。

2、主要功能
a.通过8位数码管显示计算过程。

b.通过4×4矩阵键盘进行加、减、乘、除数字运算。

3、环境搭建
资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频
仿真版本:Proteus8.6及以上版本
编译平台:Keil C51
编程语言:C语言

4、源程序
使用keil C51软件实现程序编写与编译。

void read_key()		//4X4矩阵键盘说明:行为输入,列为输出
{
    char x,y;
	char i;
	P1=0xf0;
	if(P1!=0xf0)
	{
		delay(1000);
		if(P1!=0xf0)
		{
		    y=P1; 
			x=0xfe;
			for(i=0;i<4;i++)
			{
				P1=x |0xf0;
				if((P1 & 0xf0)!=0xf0)
				{
					x=P1;
					key_code=y | (x & 0x0f);
					key_press=1;
				}
				x=(x<<1)+0x01;
			}
				switch(key_code)
					{
					
						case 0xee:    key_code=11;break;
						case 0xde:    key_code=12;break;
						case 0xbe:    key_code=13;break;
						case 0x7e:    key_code=14;break;
            
						case 0xed:    key_code=16;break;
						case 0xdd:    key_code=3;break;
						case 0xbd:    key_code=6;break;
						case 0x7d:    key_code=9;break; 
						
						case 0xeb:    key_code=0;break;
						case 0xdb:    key_code=2;break;
						case 0xbb:    key_code=5;break;
						case 0x7b:    key_code=8;break;
            
						case 0xe7:    key_code=15;break;
						case 0xd7:    key_code=1;break;
						case 0xb7:    key_code=4;break;
						case 0x77:    key_code=7;break;				
					}
			   	
		}
		
	}
}
void calculate()
{
      if(key_code<10)
	  {
	       if(flag==0)
		   {
		      a=a*10+key_code; 
			  disp(a);
			}
		   else
		   {
		      b=b*10+key_code; 
			  disp(b);
			}
      }
	  else
	  {
	     switch(key_code)
		{
			case 11:flag=1;break;
			case 12:flag=2;break;
			case 13:flag=3;break;
			case 14:flag=4;break;
			case 15:a=0;b=0;disp(a);flag=0;break;
			case 16:{
						switch(flag)
						{
							case 1:a=a+b;disp(a);b=0;break;
							case 2:a=a-b;disp(a);b=0;break;
							case 3:a=a*b;disp(a);b=0;break;
							case 4:a=a/b;disp(a);b=0;break;
						}
					}
		}
	  }
	     

     
}

void main()
{
    TMOD=0x01;
	TH0=(65536-1000)/256;
	TL0=(65536-1000)%256;
	TR0=1;
	EA=1;
	ET0=1;
	a=0;
	b=0;
	disp(a);
	while(1) 
	{
		read_key();
		if(key_press==1)
		{
			calculate();
		    key_press=0;
		}
		delay(3000);
	}
}

5、proteus8.6仿真
采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

在这里插入图片描述

6、设计资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等,设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。由于不定期更新,最新的资料包不一定与下面图片完全一致,但主要资料都有。
在这里插入图片描述

在这里插入图片描述

7、资料获取方式
有偿,下载链接:QQ05基于51单片机的8位数码管计算器设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值