精华内容
下载资源
问答
  • 单片机多功能计算器

    2013-02-18 13:17:25
    PIC单片机计算器,可以进行四则运算,具有退格,清零,修改任意位数字的功能,附加时钟显示年月日时间功能,两种模块人任意转换。
  • 基于STC89C52单片机多功能计算器设计与仿真.pdf
  • 简易计算器是一种非常广泛日常工具,对现代社会越来越流行。它可以进行一些简易的计算。本系统提供详细的时、分、秒、年、月、日的时间信息,同时还可进行简易的计算信息,还具有时间校准等功能。该电路采用AT89S52...
  • 单片机为核心的计算器模拟系统设计,输入采用矩阵键盘,可以进行加减乘除等十几种数字运算,同时支持括号的嵌套使用级浮点数的运算,并在上显示操作过程。
  • 基于51单片机多功能计算器,提供原理图,PCB图,源码。实现普通计算、按键音开关、多种进制之间的转换。
  • 用51单片机设计的多功能计算器 ,设计比较完整;可以做为毕业设计论文参考。
  • 基于单片机多功能计算器的设计与实现.pdf
  • 基于51单片机多功能计算器课程设计说明书.doc
  • 基于单片机多功能计算器的设计与实现电气工程自动化.pdf
  • 为了满足计算器的基本要求,可以基本的运算(加减乘除),数据归零和出错警告提示, 我们采用基于单片机设计计算器,并用 LED 数码管显示数据,4*4 的矩阵键盘实现数据输
  • 我以前做的一个C语言51单片机计算器,使用两个4*4矩阵键盘,能实现很多功能,当然也包括哪些计算器基础的功能了,protues仿真也有,但是p1口的键功能和上面显示不是一样的,p1口的有开方,阶乘,等等,后面还留有两...
  • 基于单片机的lcd1602的多功能计算器.doc
  • 基于-单片机的lcd1602的多功能计算器.doc
  • 基于单片机多功能计算器设计 extern bit b_WorkMode; //0--计算器模式; //1--计时模式。 //定义在KeyProcess.c中。 unsigned char uc_ModeChange=0; extern bit b_LCDClean; extern ...
  • 基于单片机的智能计算器,包含加,减,乘,除等功能
  • 包含全套资料原理图、仿真、源程序及论文等
  • 本设计是实现一个有加、减、乘、除、计算功能的多功能计算器。它的硬件主要由四部分组成,一个STC89C52单片机芯片,一块LCD1602液晶显示器,一个4*4的键盘。采用STC89C52单片机为主要控制电路,然后使用液晶显示管...
  • 本设计是实现一个有加、减、乘、除、函数计算功能和电子时钟的多功能计算器。它的硬件主要由四部分组成,一个STC89C52单片机芯片,一块LCD1602液晶显示器,一个4*4的键盘,各种功能设置按键。 软件设计采用C语言...
  • 基于STC12C5A60S2单片机的带时间和温度显示的多功能计算器设计.pdf
  • 本设计是基于单片机计算器设计,主要实现以下功能: 可进行sin、cos、tan、atan、asin、acos、幂运算、+、-、*、/计算 标签:51单片机、LCD1602 资料预览 效果图: 总体资料: 原理图: 软件设计流程...

    设计简介:

    本设计是基于单片机的计算器设计,主要实现以下功能:

    • 可进行sin、cos、tan、atan、asin、acos、幂运算、+、-、*、/计算

    标签:51单片机、LCD1602

    基于单片机的简易计算器-实物设计 - 电子校园编号: CP-51-2021-025-SW 仿真链接: 基于单片机的简易计算器-仿真设计 设计说明书链接: 基于单片机的简易计算器-设计说明书 软件安装: Proteus8.9:点击下载 Keil5:点击下载 AD:点击下载 Visio:点…https://www.mcude.com/mcudesign/1180/更多设计可以在特纳斯电子校园网下载

    电子校园 - 特纳斯电子专注于单片机毕业设计参考、单片机课程设计参考、毕业答辩PPT模板、单片机设计与开发的电子校园设计网站特纳斯电子专注于单片机、电子嵌入式、物联网设计,打造入门开发者学习开发新天地,毕业设计代做、单片机课程设计代做、单片机设计与开发的电子校园设计网站https://www.mcude.com/

    效果图:

    总体资料:

    原理图:

    软件设计流程:

    系统框图:

    本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成计算器的整个系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STC89C52单片机,其主要作用是获取输入部分数据,经过内部处理,控制输出部分。输入由两部分组成,第一部分是5*5矩形按键,通过25个按键输入密码、进行算术运算;第二部分是供电电路,给整个系统进行供电。输出由两部分组成,第一部分是LCD1602显示模块, 通过该模块可以显示密码是否正确、计算的数字、计算结果等;第二部分是蜂鸣器,当键盘被锁定或者音效建打开后,蜂鸣器响。

    展开全文
  • 单片机少不了要做课程设计,分享一个基于单片机设计的计算器,当时是为了课程设计做的,MCU用STC89C51,显示部分用LCD1602,矩阵按键和独立按键输入。 功能有:加减乘除、乘方运算、可输入小数点、可连续运算、结果...
  • 本文档介绍的是基于51单片机设计的运算功能计算器,该电路设计简单,用的洞洞板和5*8矩阵键盘、LCD1602液晶显示器等构成。运算结果均为单精度浮点数。总共有19 钟运算功能加,减,乘,除,平方,开方,N次方,开N...
  • (51单片机的简易计算器华侨大学厦门工学院单片机控制系统 课程设计报告题 目: 基于51单片机的简易计算器专业、班级:学生姓名:学 号:指导教师:2014年 5 月 20 日目录一、设计任务目的2二、计任务要求2三、设计...

    (51单片机的简易计算器

    华侨大学厦门工学院

    单片机控制系统 课程设计报告

    题 目: 基于51单片机的简易计算器

    专业、班级:

    学生姓名:

    学 号:

    指导教师:

    2014年 5 月 20 日

    目录

    一、设计任务目的2

    二、计任务要求2

    三、设计方案选取与论证2

    四、电路设计3

    4.1总体电路图3

    4.2 硬件设计4

    4.2.1?矩阵按键4

    4.2.2?AT89C52主芯片4

    4.2.3 LCD显示7

    4.3软件设计8

    4.3.1 键盘模块8

    4.3.2 计算模块9

    4.3.3 显示模块9

    五.制作及调试过程10

    5.1 制作过程10

    5.2 软件调试10

    5.3 硬件调试11

    结论12

    致谢13

    参考文献13

    一、设计任务目的

    设计一个计算器,可以进行简易的四则运算。

    二、计任务要求

    1、能够进行简单的四则运算,包括带负数的运算。用LCD显示数据和结果(6位即可)

    2、采用键盘输入方式,键盘包括数字键(0~9)、符号 (+、-、×、÷)、清除键(c)和等号键(=),故只需要16?个按键即可。?

    3、在执行过程中,开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。?

    4、错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示OV;当除数为0时,计算器会在LCD上提示ERR。

    三、设计方案选取与论证

    单片机以AT89C51来做为核心元器件。

    2、按键部分

    设计思路:采用4*4行列式键盘,分别设定数字键和功能键,采用查询方式,每次有键按下时,先判断是实数字键还是功能键。但是这种方式采用了大量的I/O口线。

    3、显示部分

    在单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)、LCD液晶显示器以及CRT接口。

    思路:使用液晶显示器来显示。液晶是介于固态和液态间的有机化合物,将其加热会变成透明液态,冷却后变成结晶的混浊固态。在电的作用下,产生冷热变化,从而影响它的透光性,来达到显示的目的。LCD还具有以下几个优点(1)低压、微功耗(2)显示信息量大(3)长寿命(4)无辐射,无污染。

    其系统结框图如下:

    选取此种设计方案,可以基本满足任务要求,并且在电路板焊接中更清晰明了的知道该如何去焊接电路。但是,这种方案还是存在着不足,如:①按键的缺少导致取消了一些特殊函数的实现。和我们真正可以的计算器有很大的差距,功能的单一,在实际中没有使用价值。②使用3字节的浮点数表示,不可避免的带来了数表示的不精确,加上有效数字比较少,因此计算结果很容易产生误差,尤其是进行连续多次运算后。?

    四、电路设计

    4.1总体电路图

    根据方案的选取,其硬件的电路图在protues软件中设计如下图所示,本电路图可以满足设计要求。

    4.2 硬件设计

    4.2.1?矩阵按键?

    键盘是单片机系统中最常用的人机对话输入设备,用户通过按键向单片机输入指令和数据。该模块利用16个的小按键,提供?0-9,?+、-、*、/、?=、清零键。键盘控制程序需完成的任务有:给电路提供输入的符号,让LCD显示屏显示输入的按键是什么。在编写的程序中,可以检查是否有按键按下,有键按下时,如无硬件去抖动电路时,应用软件延时方法消除按键抖动;当有多个按键按下时,只响应一个按键,不管持续多长时间,仅执行一次按键功能程序。其结构图如下所示:

    矩阵键盘结构图

    4.2.2?AT89C52主芯片?

    AT89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash?Programable?and?Erasable?Read?Only?Memory?)的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。ST89C52单片机包含中央处理器、程序存储器、数据存储器、定时/计数?器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。

    时钟电路:STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由

    展开全文
  • 单片机计算器

    2015-12-30 10:47:29
    简述单片机计算器的代码和仿真文件。便于学生下载学习。
  • 基于stc89c52单片机设计的智能计算器的代码 实现两个数的运算,每个数的位数至少可以八位
  • 硬件设计 (末尾附文件) 工作原理 利用矩阵键盘进行按键的输入,通过对矩阵键盘的扫描,获取用户的输入,并实时的显示在1602液晶上,每次获取到输入时,根据软件设计的相应方法对输入进行处理、运算,输入结束后...

    硬件设计

    (末尾附文件)

    工作原理
    利用矩阵键盘进行按键的输入,通过对矩阵键盘的扫描,获取用户的输入,并实时的显示在1602液晶上,每次获取到输入时,根据软件设计的相应方法对输入进行处理、运算,输入结束后(以“=“为标志),将最终的运算结果输出的液晶上。

    在这里插入图片描述

    仿真图1: (LCD1602显示,支持负数和进制运算及有限的连续运算,连续运算时候无法识别优先级,不支持小数;)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    仿真图2: LCD1602显示,支持负数和小数及开根号,不支持连续运算;

    在这里插入图片描述
    在这里插入图片描述

    程序设计1

    #include <reg51.h>
    #include <stdio.h>
    #include <intrins.h>
    #include <string.h>
    #include <math.h>
    #include <stdlib.h>
    
    
    #define u8  unsigned char
    #define u16  unsigned char
    sbit LCDEN=P3^4;
    sbit RS=P3^5;
    sbit RW=P3^6;
    sbit BF=P0^7; 
    sbit change_m=P3^7;
    
    u8 code keyval[]="789/456*123-c0=+"; //按键对应的符号 
    u8 data1[10];
    u8 k=0;
    char  m[8]={0};
    double sum=0;
    int flag;
    void WrDatLCD(unsigned char DatVal);
    void WrComLCD(unsigned char ComVal);
    void delay(u16 x)	  //延时x毫秒
    {
    u16 i,j;
    for(i=0;i<x;i++)
    	for(j=0;j<115;j++)
    		;
    }
    int convertBinaryToDecimal(long n)
    {
    	int decimalNumber = 0, i = 0, remainder;
    	while (n != 0)
    	{
    		remainder = n % 10;
    		n /= 10;
    		decimalNumber += remainder * pow(2, i);
    		++i;
    	}
    	return decimalNumber;
    }
    
    int convertBinaryToDecimal8(long n)
    {
    	int decimalNumber = 0, i = 0, remainder;
    	while (n != 0)
    	{
    		remainder = n % 10;
    		n /= 10;
    		decimalNumber += remainder * pow(8, i);
    		++i;
    	}
    	return decimalNumber;
    }
    
    
    
    
    
    u8 keypad4_4()//按键扫描函数:要去抖,若有按键按下,返回对应的按键值(0-15),没有按键按下返回16
    {
    u8 i,row,temp;
    u8 key=16;//按键号,初值设置为16,目的是:没有按键按下时返回16;
              //若不设初值(默认值为0),没有按键按下时,将返回0,会误认为0被按下  
    row=0xef; //从第一列开始      
    for(i=0;i<4;i++)
    {
    	P1=0xff;  
    	P1=row;	//第i列信号,对应列为低,其他全为高
    	row=_crol_(row,1); 	  //生成下一列信号
    	temp=P1; //读入扫描信号
    	temp=temp&0x0f; //屏蔽高4位列信号,只保留低4位行信号 
    	if(temp!=0x0f)//有按键被按下,因为第i列某行有按键按下,则低4位中有一位为低  
     	{  
    		delay(20);  //延时去抖
    		temp=P1;  
    		temp=temp&0x0f;  
    		if(temp!=0x0f)   //再次确认有按键被按下
      		{  
            	switch(temp)  //根据低4位行信号,判断哪个按键被按下
                {  
                	case 0x0e:key=0+i;break; //第i列第1行按键被按下 
                    case 0x0d:key=4+i;break; //第i列第2行按键被按下  
                    case 0x0b:key=8+i;break; //第i列第3行按键被按下
    				case 0x07:key=12+i;      //第i列第4行按键被按下 
                }
    			
    			do
    			{
    				temp=P1;  	    //再次扫描按键
      				temp=temp&0x0f;  
      			}while(temp!=0x0f); //等待按键释放   
      		}  
         }
    	
    	
    		 if(change_m == 0)
    		 {
    			 delay(50);
    			 if(change_m == 0)
    			 {
    				 flag++;
    				 if(flag == 3)
    				 {
    					 flag = 0;
    				 }
    			 } while(!change_m);
    		 }
    
    
    
    		 
    }  
    return(key);//扫面结束,返回按键值
    }
    
    unsigned char DectectBusyBit(void)//状态判断函数(忙/闲?)
    {   
    	bit result;
    	P0 = 0xff;	//读状态前先置高电平,防止误判
    	RS = 0;
    	delay(5);
        RW = 1;
    	LCDEN = 1;
    	delay(5);
    	result=BF; //若LCM忙,则反复测试,在此处原地踏步;当LCM闲时,才往下继续
    	LCDEN = 0;
    	return result;		      
    }
    
    void WrComLCD(unsigned char ComVal)//写命令函数
    {
    	while(DectectBusyBit()==1);         //先检测LCM是否空闲
    	RS = 0;
    	delay(1);
        RW = 0;
    	LCDEN = 1;
    	P0 = ComVal;
    	delay(1);
    	LCDEN = 0;	
    }
    
    void WrDatLCD(unsigned char DatVal)//写数据函数
    {
    while(DectectBusyBit()==1); 
    	RS = 1;
    	delay(1);
        RW = 0;
    	LCDEN = 1;
    	P0 = DatVal;
    	delay(1);
    	LCDEN = 0;	
    }
    
    void LCD_Init(void)//1602初始化函数
    { 
    	WrComLCD(0x38);     // 功能设定:16*2行、5*7点阵、8位数据接口
    	WrComLCD(0x38);
    	WrComLCD(0x38);    
    //多次重复设定功能指令,因为LCD启动后并不知道使用的是4位数据接口还是8位的,所以开始时总是默认为4位
    	WrComLCD(0x01);    // 清屏 
    	WrComLCD(0x06);    // 光标自增、屏幕不动  
    	delay(1);	      // 延时,等待上面的指令生效,下面再显示,防止出现乱码
    	WrComLCD(0x0c);    // 开显示
    }
    			 
    void compute(){
    	u8 i,j=0,k,n=0;
    	char data3[3]={0};
    	int sum1,data2[4]={0};
    	int a,b,c,d,o;
    	int getValue[6]={0};
    	sum=0;
    
    	for(i=0;data1[i]!='\0';i++){
    		  if(data1[i]!='+' && data1[i]!='-' && data1[i]!='*' && data1[i]!='/'){
    		  	data2[j] =data2[j]*10+(data1[i]-'0');
    
    		  }
    		  else{
    		  	data3[n++] = data1[i];
    		  	j++;
    		  } 
    	}
    	a=data2[0];
    	b=data2[1];
    	c=data2[2];
    	d=data2[3];
    	if(flag == 1)  //如果二进制
    	{
    	a=convertBinaryToDecimal(a);
    	b=convertBinaryToDecimal(b);
    	c=convertBinaryToDecimal(c);
    	d=convertBinaryToDecimal(d);
    	}
    	if(flag == 2)  //如果8进制
    	{
    	a=convertBinaryToDecimal8(a);
    	b=convertBinaryToDecimal8(b);
    	c=convertBinaryToDecimal8(c);
    	d=convertBinaryToDecimal8(d);
    	}
    
    	
    	for(i=0;i<n;i++){
    		if(i==0){
    			if(data3[0]=='+')  sum = a + b;
    			if(data3[0]=='-')  sum = a - b;
    			if(data3[0]=='*')  sum = a * b;
    			if(data3[0]=='/')  sum = a / (double)b; 
    		}
    		if(i==1){
    			if(data3[1]=='+')  sum = sum+c;
    			if(data3[1]=='-')  sum = sum-c;
    			if(data3[1]=='*')  sum = sum*c;
    			if(data3[1]=='/')  sum = sum/((float)c); 
    		}
    		if(i==2){
    			if(data3[2]=='+')  sum = sum+d;
    			if(data3[2]=='-')  sum = sum-d;
    			if(data3[2]=='*')  sum = sum*d;
    			if(data3[2]=='/')  sum = sum/((float)d); 
    		}
    
    	
    	}
    

    .

    文件仅供参考:

    链接:https://pan.baidu.com/s/1ZAxAbTe_oD_cuTvvKWxU5A
    提取码:x102

    .

    展开全文
  • 多功能计算器

    2013-11-28 18:46:11
    基于51单片机和ds18b02+ds1602+ds1302的简易计算器程序
  • 基于单片机计算器

    2015-04-11 23:00:48
    基于单片机多功能计算器,计算器能实现加减乘除等多个功能,欢迎大家下载查看。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,220
精华内容 488
关键字:

单片机多功能计算器