• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

04/22 08:21
1134
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

仿真版本:Proteus8.6及以上版本

程序编译:Keil5 C51

编程语言:C语言

设计编号:【Q05】

1.? 简介

? 本文提出了一种基于51单片机数码管计算器设计。该设计是以AT89C51单片机为核心的计算器模拟系统,输入采用4×4矩阵键盘,可以进行加、减、乘、除数字运算,并在8位数码管上显示操作过程。

2.? 主要功能

a.通过8位数码管显示计算过程。

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

3.? 源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

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);
	}
}

4.? 仿真proteus8.6

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

计算过程:

5.? 设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考

6.? 资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

7.? 资料获取链接

百度网盘下载链接:【Q05】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载

相关推荐