(完整)基于51单片机的简易计算器设计
基于51单片机简易计算器毕业论文

基于51单片机简易计算器设计引言计算器(Calculator)是微型电子计算机的一种特殊类型。
它与一般通用计算机的主要区别在于程序输入方式的不同。
计算器的程序一般都已经固定,只需按键输入数据和运算符号就会得出结果,很容易就能掌握。
而一般计算机的程序可以根据需要随时改动,或重新输入新的程序。
简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算(有的还带有数据总加、求平均值等统计运算)。
现代电子计算器首次问世是1963年。
那时的计算器是台式的,在美国波士顿的电子博览会上展出过。
与计算机相比,它小巧玲珑,计算迅捷,一般问题不必事先编写复杂的程序。
随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能机器人。
随着社会需求,计算器也从原有单一的数字加减计算演变为复杂的多种运算。
现在不在单一的在某一方面而是涉及到生活的方方面面.由于我对知识掌握的不够熟练,重点不够清楚,导致在重点与非重点处花费的时间不成比例,进度缓慢,这是设计没能全部完成的部分原因。
目前只做到按键与显示的结合(即在显示器上可以显示数字键还有命令键+-*/ =清零);加法子程序已经编写成功并严整无误,但在整体调试中未能圆满实现,本部分正在调试中。
等调试成功后,其它运算子程序的问题将迎刃而解。
1.简易计算器的设计方案1.1硬件部分设计方案1 单片机部分单片机以AT89C51来做为核心元器件。
2 按键部分设计思路:采用4*4行列式键盘,分别设定数字键和功能键,采用查询方式,每次有键按下时,先判断是实数字键还是功能键。
但是这种方式采用了大量的I/O口线。
(完整版)基于51单片机的数码管简易计算器

基于51/52单片机的简易计算器制作11级自动化2班王栎斐宋为为闫巨东一、题目利用单片机芯片STC89C52、四位八段共阳数码管及已制作好的电路板等器件设计制作一个计算器。
二、任务与要求要求计算器能实现加减乘除四种运算具体如下1. 加法:四位整数加法计算结果若超过八位则显示计算错误2. 减法:四位整数减法计算结果若超过八位则显示计算错误3. 乘法:多位整数乘法计算结果若超过四位则显示计算错误4. 除法:整数除法5. 有清除功能三、课程设计简述总体设计思路简述1.按照系统设计的功能的要求初步确定设计系统由主控模块、显示模块、键扫描接口电路共三个模块组成。
主控芯片使用STC89C52单片机。
2.键盘电路采用4*4矩阵键盘电路。
3.显示模块采用共阳极数码管构成。
四、硬件电路五、软件编程部份#include<reg52.h>#define uchar unsigned char#define uint unsigned int//uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//共阴极// 0 1 2 3 4 5 6 7 8 9 熄灭-//uchar code loc[]={0xff,0xfe,0xfd,0xfb,0xf7};//uchar code ero[]={0x79,0x50,0x5c};uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x40};//共阳极uchar code loc[]={0x00,0x80,0x40,0x20,0x10};uchar code ero[]={~0x79,~0x50,~0x5c};uint n=0,n1=0,n2=0; //赋初值uchar flag=0; //计算类型选择关键字void delay(int t);void display(int n);void error();main(){while(1){uchar temp;//第一行检测P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=P3;temp=temp&0xfe;if(temp!=0xfe){temp=P3;switch(temp){case 0xee:n1=0;n2=0;n=0;flag=0;break; //清零case 0xde:n1=10*n1+0;n=n1;break;case 0xbe: if(flag==1)n=n2+n1; //=if(flag==2)n=n2-n1;if(flag==3)n=n2*n1;if(flag==4)n=n2/n1;n1=0;break;case 0x7e: // +n2=n1;n1=0;flag=1;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}//扫描第二行P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xed:n1=10*n1+1;n=n1;break; //4case 0xdd:n1=10*n1+2;n=n1;break; //5case 0xbd:n1=10*n1+3;n=n1;break; //6case 0x7d:// -n2=n1;n1=0;flag=2;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}//扫描第三行P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xeb:n1=10*n1+4;n=n1;break;case 0xdb:n1=10*n1+5;n=n1;break;case 0xbb:n1=10*n1+6;n=n1;break;case 0x7b: // *n2=n1;n1=0;flag=3;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}//扫描第四行P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xe7:n1=10*n1+7;n=n1;break; //7case 0xd7:n1=10*n1+8;n=n1;break; //8case 0xb7:n1=10*n1+9;n=n1;break; //9case 0x77: // /n2=n1;n1=0;flag=4;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}display(n);}}//延时函数void delay(int t){int x,y;for(x=0;x<t;x++)for(y=0;y<t;y++);}//数码管显示void display(int n){//溢出处理uchar g,s,b,q;int abs;if((n>9999)||(n<-999)) error();//正数if((n>=0)&&(n<=9999)) {g=n%10;s=n/10%10;b=n/100%10;q=n/1000%10;P0=num[g];delay(5);P2=loc[4];delay(2);P2=loc[0];delay(3);if(n>=10){P0=num[s];P2=loc[3];delay(2);P2=loc[0];delay(3);}if(n>=100){P0=num[b];P2=loc[2];delay(2);P2=loc[0];delay(3);}if(n>=1000){P0=num[q];P2=loc[1];delay(2);P2=loc[0];delay(3);}}//负数if((n<0)&&(n>=-999)){abs=-n;g=abs%10;s=abs/10%10;b=abs/100%10;q=abs/1000%10;P0=num[g];P2=loc[4];delay(2);P2=loc[0];delay(2);if((abs/10%10>0)||(abs/100%10>0)){P0=num[s];P2=loc[3];;delay(2);P2=loc[0];delay(2);if((abs/100%10>0)){P0=num[b];P2=loc[2];delay(2);P2=loc[0];delay(2);if((abs/1000%10>0)){P0=num[q];P2=loc[1];delay(2);P2=loc[0];delay(2);}else{P0=num[11];P2=loc[1];delay(2);P2=loc[0];delay(2);}}else{P0=num[11];P2=loc[2];delay(2);P2=loc[0];delay(2);}}else{P0=num[11];P2=loc[3];delay(2);P2=loc[0];delay(2);}}}//溢出显示void error(){P2=loc[1];P0=ero[0];delay(2);P2=loc[0];delay(3);P2=loc[2];P0=ero[1];delay(2);P2=loc[0];delay(3);P2=loc[3];P0=ero[1];delay(2);P2=loc[0];delay(3);P2=loc[4];P0=ero[2];delay(2);P2=loc[0];delay(3); }。
基于51单片机的计算器设计

基于51单片机的计算器设计计算器作为一种常用的电子设备,广泛应用于各个领域。
在本文中,我们将基于51单片机来设计一个简单的计算器,并对其进行详细介绍。
一、设计目标我们所设计的计算器需要具备以下功能:1.实现基本的算术运算,包括加、减、乘、除等;2.具备显示功能,能够将输入和运算结果以数字的形式显示在液晶屏上;3.提供清零和删除功能,方便计算器的操作;4.具备较高的计算精度和稳定性。
二、硬件设计计算器的硬件设计主要包括键盘输入、液晶屏输出和计算程序控制三个部分。
1.键盘输入为了简化设计的复杂度,我们采用矩阵键盘来实现输入功能。
矩阵键盘由多个行和多个列交叉连接而成,通过扫描行和列的方式来检测键盘输入的按键信息。
2.液晶屏输出我们选择16x2字符液晶显示屏来作为计算结果的输出设备。
这种液晶屏可以显示16个字符,每个字符由5x8像素点阵组成,具备较好的显示效果。
3.计算程序控制我们将基于51单片机来编写计算器的计算程序,并通过电路连接键盘输入和液晶屏输出设备。
通过读取键盘输入的按键信息,计算程序能够判断用户输入的数字和操作符,并进行相应的计算操作。
最后,计算结果将以数字的形式显示在液晶屏上。
三、软件设计计算器的软件设计主要包括键盘扫描与输入处理、计算程序控制和液晶屏显示三个模块。
1.键盘扫描与输入处理通过循环扫描矩阵键盘的行和列,可以得到按键信息。
根据按键信息的不同,我们可以判断用户输入的数字和操作符,并将其传递给计算程序模块进行处理。
同时,我们需要对一些特殊按键(如清零和删除)做特殊处理。
2.计算程序控制计算程序模块将根据键盘输入的数字和操作符,进行相应的算术运算。
我们可以采用栈的数据结构来处理运算符和运算数,以实现复杂的算术运算。
3.液晶屏显示计算结果将以数字的形式显示在液晶屏上。
我们可以通过51单片机的GPIO口控制液晶显示屏的操作,包括写入指令和写入数据。
通过设定光标位置及写入数字数据,可以将计算结果显示在液晶屏的指定位置上。
基于51单片机的简易计算器

基于51单片机的简易计算器简介用51做的一个建议计算器,能计算7位数*7位数,小数点保留三位,其他不多说,上图和程序,由于时间关系,程序没完全优化,解决了按一次计算符号后再按符号键无效的问题。
1.硬件电路单片机部分+矩阵键盘+1602显示图3-1所示为简易计算器的电路原理图。
P3口用于键盘输入,接4*4矩阵键盘,键值与键盘的对应表如表----所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位。
图3-1 简易计算器电路原理图PCB键值与功能对应表键值0 1 2 3 4 5 6 7 8 9 + - ×/ = ON/C功能0 1 2 3 4 5 6 7 8 9 + - ×÷= 清零说明矩阵键盘有16个按键,满足对简易计算器的计算实现,显示部分采用LCD1602,第一行显示计算的数值符号,第二行显示计算结果。
最大能计算7位数*7位数的值,可以计算负数,小数点结果保留有三位,在每次按下计算符号后,接着只能按下数字,再按下符号键无效,也就是每次计算只能按一个计算符号,如输入错误需按N清零键,或者复位单片机。
2 .计算器的软件设计#include<reg52.h>#include<intrins.h>#define uchar unsigned charsbit lcden=P2^2;sbit lcdrs=P2^0;sbit lcdrw=P2^1;sbit lcdbf=P0^7;uchar temp,key,i,j,flag,fh,k;long a,b,c;uchar code table[]={1,2,3,0,4,5,6,0,7,8,9,0,0,0,0,0};uchar code table2[]="123+456-789*000/";void delay(uchar ms){uchar x,y;for(x=ms;x>0;x--)for(y=110;y>0;y--);}/*-------------对LCD1602的操作-----------*/bit busy(void)//判断忙碌{bit res;lcdrs=0;lcdrw=1;lcden=1;_nop_();_nop_();res=lcdbf;lcden=0;return res;}void write_inst (uchar cmd)//写命令{while(busy()==1); //忙碌就等待lcdrs=0;lcdrw=0;lcden=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();lcden=1;_nop_();_nop_();lcden=0;}void write_com(uchar com)//写地址{write_inst(com|0x80);}void write_date(uchar dat) //写数据{while(busy()==1);lcdrs=1;lcdrw=0;lcden=0;P0=dat;_nop_();_nop_();lcden=1;_nop_();_nop_();lcden=0;}void init() //初始化{lcden=1;write_inst(0x38);//显示8位2行delay(5);write_inst(0x0c);//显示开,光标关,不闪烁delay(5);write_inst(0x06);//增量方式不位移delay(5);write_inst(0x80);//检测忙碌信号delay(5);write_inst(0x01);//delay(5);}/*------------键盘扫描-----------*/void keyscan()//键盘扫描{P3=0xfe;if(P3!=0xfe){delay(20);if(P3!=0xfe){temp=P3&0xf0;switch(temp){case 0xe0:key=0;break;case 0xd0:key=1;break;case 0xb0:key=2;break;case 0x70:key=3;break;}}while(P3!=0xfe);if(key==0||key==1||key==2){if(j!=0)write_inst(0x01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]);}else{if(k==0){flag=1;k=1;fh=1;write_date(table2[key]);}}P3=0xfd;if(P3!=0xfd){delay(20);if(P3!=0xfd){temp=P3&0xf0;switch(temp){case 0xe0:key=4;break;case 0xd0:key=5;break;case 0xb0:key=6;break;case 0x70:key=7;break;}}while(P3!=0xfd);if(key==4||key==5||key==6){if(j!=0){write_inst(0x01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]); }else{if(k==0){flag=1;k=1;fh=2;write_date(table2[key]);}}}P3=0xfb;if(P3!=0xfb){delay(20);if(P3!=0xfb){temp=P3&0xf0;switch(temp){case 0xe0:key=8;break;case 0xd0:key=9;break;case 0xb0:key=10;break;case 0x70:key=11;break;}}while(P3!=0xfb);if(key==8||key==9||key==10){if(j!=0){write_inst(0x01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]); }else{if(k==0){flag=1;k=1;fh=3;write_date(table2[key]);}}}P3=0xf7;if(P3!=0xf7){delay(20);if(P3!=0xf7){temp=P3&0xf0;switch(temp){case 0xe0:key=12;break;case 0xd0:key=13;break;case 0xb0:key=14;break;case 0x70:key=15;break;}}while(P3!=0xf7);switch(key){case 12:{write_inst(0x01);a=0;b=0;flag=0;fh=0;j=0;k=0;} break;case 13:{if(flag==0){a=a*10;write_date(0x30);P1=0;}else if(flag==1){b=b*10;write_date(0x30);}} break;case 14:{j=1;if(fh==1){write_com(0x4f);write_inst(0x04);c=a+b;while(c!=0){write_date(0x30+c%10);c=c/10;}write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0; }else if(fh==2){write_com(0x4f);write_inst(0x04);if((a-b)>0)c=a-b;elsec=b-a;if(c==0)write_date(0x30+0);while(c!=0){write_date(0x30+c%10);c=c/10;}if((a-b)*(-1)>0)write_date(0x2d);write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;}else if(fh==3){write_com(0x4f);write_inst(0x04);c=a*b;if(c==0)write_date(0x30+0);while(c!=0){write_date(0x30+c%10);c=c/10;}write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;}else if(fh==4){write_com(0x4f);write_inst(0x04);i=0;c=(long)(((float)a/b)*1000); //计算c的数据if(c==0)write_date(0x30+0);while(c!=0){write_date(0x30+c%10);c=c/10;i++;if(i==3)write_date(0x2e); //写数据}if((a/b)<=0)write_date(0x30);write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;}} break;case 15:{if(k==0){write_date(table2[key]);flag=1;k=1;fh=4;}} break;}}}void main(){init();i=0;j=0;a=0;b=0;c=0;k=0;flag=0;fh=0;while(1){keyscan();}}3.本设计的操作1.软件概述Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
基于51单片机计算器设计

基于51单片机计算器设计计算器是一种常见的电子设备,可以进行数学运算、数据处理等功能。
本文将基于51单片机进行计算器设计。
一、设计目标:1.实现基本的数学运算功能,如加减乘除、取余等。
2.能够进行复杂的数学运算,如平方、开方等。
3.具备记忆功能,能够存储中间结果和运算符号。
4.设置输入界面,允许用户输入数字和操作符。
5.显示运算结果和中间过程。
二、硬件系统设计:1.使用51单片机作为主控芯片,具有高集成度和处理能力。
2.连接光栅液晶显示屏,用于显示数值和操作符。
3.连接矩阵键盘,用于获取用户的输入。
4.连接电源电路,保证计算器正常运行。
三、软件系统设计:1.确定界面设计,包括数值显示区、操作符显示区和功能键区。
2.设计输入处理模块,根据用户输入获取相应的数值和操作符,并进行相应的处理。
3.设计运算模块,根据用户输入的操作符进行相应的数学运算,并将结果存储起来。
4.设计显示模块,将计算结果和中间过程显示在液晶屏上。
5.设计存储模块,用来存储中间运算结果和操作符号。
四、软件流程设计:1.系统初始化:包括设置显示模式、清零中间结果等。
2.输入处理:通过矩阵键盘输入数字和操作符,并进行相应的处理。
3.运算处理:根据用户输入的操作符,进行相应的数学运算,并将结果存储起来。
4.结果显示:将计算结果和中间过程显示在液晶屏上。
5.存储结果:将计算结果和操作符存储起来,以备后续计算。
五、测试和调试:在设计完成后,需要进行系统测试和调试,确保计算器的各项功能正常运行。
首先进行单元测试,验证各个模块的功能是否按照设计要求正确执行。
然后进行综合测试,模拟用户输入各种情况下的运算过程,检测是否能够正确进行运算并显示结果。
如果发现问题,则进行调试和修改,直到计算器满足设计要求。
六、总结:基于51单片机进行计算器设计,可以实现基本的数学运算功能,并具备记忆功能。
设计步骤包括确定硬件系统和软件系统设计,设计界面、输入处理、运算处理、显示和存储模块,进行测试和调试确保计算器功能正常运行。
基于51单片机的简易计算器设计

基于51单片机的简易计算器设计基于51单片机的简易计算器设计一、引言随着微电子技术和嵌入式技术的发展,越来越多的智能化设备被应用于日常生活中。
其中,基于51单片机的简易计算器设计具有广泛的应用价值。
本文将介绍如何使用51单片机设计一个简易计算器,实现加减乘除的基本运算功能。
二、设计方案1.硬件组成:本设计采用51单片机作为主控芯片,与键盘、显示器等外围设备相连。
键盘用于输入数字和运算符,显示器则用于显示运算结果。
2.软件设计:软件部分包括主程序和子程序。
主程序负责初始化硬件、读取键盘输入和显示运算结果。
子程序包括加减乘除的运算子程序,可根据输入的运算符和操作数进行相应的运算。
3.算法实现:在加减乘除的运算子程序中,采用基本的数学运算方法实现。
对于加法,直接将两个操作数相加;对于减法,将两个操作数相减;对于乘法,采用循环相乘的方法;对于除法,采用循环相除的方法。
三、实验结果在实验中,我们成功地使用51单片机设计了一个简易计算器,实现了加减乘除的基本运算功能。
在测试过程中,我们输入了不同的数字和运算符,得到了正确的运算结果。
同时,我们也测试了计算器的稳定性,发现其在连续运算时表现良好,没有出现明显的误差或故障。
四、结论基于51单片机的简易计算器设计具有简单易行、实用性强等优点。
通过实验测试,我们验证了其可行性和稳定性。
此外,该设计还可以根据需要进行扩展和优化,例如增加更多的运算功能、优化算法等。
未来,我们可以进一步研究如何提高计算器的运算速度和精度,以及如何将其应用于更多的实际应用场景中。
五、改进意见与展望1.增加更多的运算功能:例如实现括号、开方、指数等高级运算,满足更复杂的数学计算需求。
2.优化算法:针对现有的加减乘除运算算法进行优化,提高运算速度和精度。
例如采用更高效的除法算法,减少运算时间。
3.增加存储功能:在计算器中加入存储单元,使得用户可以在多个步骤之间进行数据传递和保存。
4.增强人机交互界面:优化显示器的显示效果,增加用户输入的便捷性,提高用户体验。
51单片机简易计算器设计
51单片机简易计算器设计一、设计思路计算器的基本功能包括加法、减法、乘法和除法。
我们可以使用按键作为输入方式,将输入的数字和操作符暂时保存在内存中,然后根据操作符进行相应的运算。
最后再将运算结果显示在数码管上。
具体设计思路如下:1.确定计算器所需的硬件组件:数码管、按键、51单片机和相关电路。
2.定义按键与数字和操作符的对应关系。
3.编写51单片机的程序,实现按键输入、运算和结果显示的功能。
二、硬件设计1.数码管:使用常见的7段数码管作为显示器,通过引脚连接到51单片机的IO口。
2.按键:使用4个按键分别表示数字输入键、加法键、减法键和等于键。
三、软件设计1.初始化:将数码管引脚设为输出模式,将按键引脚设为输入模式。
2.按键处理:采用中断方式检测按键输入,通过编程判断所按的键。
3.数字输入:将按键所对应的数字保存在变量中,最多支持四位数的输入。
4.操作符输入:将按下的操作符保存在变量中。
5.运算:根据保存的操作符进行相应的运算,并将结果保存在变量中。
6.结果显示:将结果显示在数码管上。
四、代码实现下面是一个示例代码的框架,供参考:```c#include <reg52.h>sbit SDA = P0^0; // I2C总线数据线sbit SCL = P0^1; // I2C总线时钟线//定义按键的IO口sbit BUTTON0 = P1^0; // 数字输入键sbit BUTTON1 = P1^1; // 加法键sbit BUTTON2 = P1^2; // 减法键sbit BUTTON3 = P1^3; //等于键unsigned char num1 = 0; // 第一个操作数unsigned char num2 = 0; // 第二个操作数unsigned char op = 0; // 操作符unsigned char result = 0; // 运算结果//判断按键所对应的数字或操作符void buttonif (BUTTON0 == 0) // 数字输入键//将按键所对应的数字保存在变量中//显示数字}else if (BUTTON1 == 0) // 加法键//保存操作符为加号}else if (BUTTON2 == 0) // 减法键//保存操作符为减号}else if (BUTTON3 == 0) //等于键//根据保存的操作符进行相应的运算//将结果保存在变量中//显示结果}void mainwhile (1)button(; // 按键处理}```五、总结通过以上的设计思路和示例代码,我们可以轻松地实现一个简易的计算器。
基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告
1. 研究背景
•计算器是人们日常生活和工作中常用的工具之一。
•通过设计简易计算器,可以加深学生对51单片机的理解和应用。
2. 目标和需求
•设计一个基于51单片机的简易计算器,能够进行基本的四则运算和开方运算。
•要求计算器能够显示输入和计算结果。
•要求计算器具备简单的界面和操作。
3. 设计方案
•使用51单片机作为计算器的控制核心。
•通过键盘输入数字和运算符,并显示在液晶屏上。
•根据输入的运算符,进行相应的计算,并将结果显示在液晶屏上。
4. 硬件设计
•使用51单片机作为主控芯片。
•连接液晶屏模块,用于显示输入和计算结果。
•连接键盘模块,用于输入数字和运算符。
5. 软件设计
•使用C语言进行编程。
•设计主程序,包括初始化、输入处理和计算输出等功能。
•设计函数,实现基本的四则运算和开方运算。
6. 实验结果
•成功设计并实现了基于51单片机的简易计算器。
•可以正常进行基本的四则运算和开方运算。
•输入和计算结果能够准确显示在液晶屏上。
7. 总结与展望
•通过设计这个简易计算器,学生对51单片机的理解和应用能力有了提高。
•下一步可以考虑增加更多的功能,如科学计算和数据存储等。
以上是本次基于51单片机简易计算器课程设计的报告。
通过这个实验,学生对51单片机的应用能力得到了提升,进一步增强了对计算器的理解。
在未来的课程设计中,可以进一步拓展功能,提升计算器的实用性和功能性。
基于51单片机的简易计算器设计
2013 - 2014 学年_一_学期山东科技大学电工电子实验教学中心创新性实验研究报告实验项目名称__基于51单片机的简易计算器设计_2013 年12 月27 日四、实验内容2、实验内容(一)、总体硬件设计本设计选用AT89C52单片机为主控单元。
显示部分:采用六位LED动态数码管显示。
按键部分:采用2*8键盘;利用2*8的键盘扫描子程序,读取输入的键值。
(二)、键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用两条I/O 线作为行线,八条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为2×8个。
这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。
矩阵键盘的工作原理:计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口和另一个P口的两个管脚实现16个按键功能,这种形式在单片机系统中也最常用。
矩阵键盘布局图:矩阵键盘内部电路图如下图所示:(三)、LED显示模块本设计采用LED数码显示来显示输出数据。
通过D0-D7引脚向LED写指令字或写数据以使LED实现不同的功能或显示相应数据。
(四)运算模块(单片机控制)MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。
基于51单片机的简易计算器设计
基于单片机的简易计算器设计摘要 (3)关键字:80C51 LCD1602 4*4矩阵键盘计算器 (3)第一章绪论 (5)1.1系统开发背景 (5)1.2系统开发意义 (5)1.3设计目的 (5)1.4设计任务 (5)第二章单片机发展现状 (7)2.1目前单片机的发展状况 (7)2.1.1单片机的应用场合 (7)2.2计算器系统现状 (8)2.3简易计算器系统介绍 (9)第三章系统硬件设计及说明 (9)3.1系统组成及总体框图 (11)3.2AT89S52单片机介绍 (11)3.3其它器件介绍及说明 (13)3.3.1 LCD1602液晶显示 (13)3.3.2 4*4矩阵扫描按键 (18)第四章 PROTEUS模拟仿真 (19)第五章系统硬件设计及说明 (21)第六章软件设计 (22)6.1汇编语言和C语言的特点及选择 (22)6.2源程序代码 (22)摘要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。
计算机在人们的日常生活中是比较常见的电子产品之一。
可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计主要以80C51单片机为控制芯片,用C语言进行编程实现,通过4*4矩阵键盘控制,输出用液晶屏LCD1602显示,该计算器可以实现一般的加减乘除四则混合运算。
关键字:80C51 LCD1602 4*4矩阵键盘计算器第一章绪论1.1 系统开发背景随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。
电子产品的更新速度快就不足惊奇了。
计算器在人们的日常中是比较的常见的电子产品之一。
如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好的为各个行业服务,成了如今电子领域重要的研究课题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(完整)基于51单片机的简易计算器设计
基于51单片机的简易计算器设计
计算器作为一种常见的电子设备,既能满足日常生活的计算需求,
又能帮助人们提高工作效率。
本文将介绍基于51单片机的简易计算器
的设计。
该计算器具备加减乘除的基本计算功能,并支持用户输入和
结果显示。
下面将从材料准备、电路连接和程序设计三个方面详细介
绍该计算器的设计。
一、材料准备
在设计计算器之前,我们需要准备以下材料:
1. 51单片机开发板:用于控制计算器的整个运行过程;
2. 液晶显示屏:用于显示用户输入的数字和计算结果;
3. 数字按键:用于用户输入数字和运算符;
4. 连接线:用于连接51单片机开发板、液晶显示屏和数字按键。
二、电路连接
1. 连接液晶显示屏和51单片机开发板:将液晶显示屏的VCC、GND、SCL和SDA引脚分别与开发板上对应的引脚连接。
2. 连接数字按键和51单片机开发板:将数字按键的引脚依次与开
发板上的IO口引脚连接,其中有一根引脚需要连接到开发板的中断口。
三、程序设计
1. 初始化设置:在程序开始时,进行液晶显示屏和数字按键的引脚初始化设置,以及相应的中断设置。
2. 输入处理:通过数字按键输入,获取用户输入的数字和运算符,并将其保存到相应的变量中。
3. 运算处理:根据用户输入的运算符,对相应的数字进行加、减、乘、除的运算,并将结果保存到一个变量中。
4. 结果显示:将运算结果显示在液晶显示屏上,以便用户查看计算结果。
5. 重置处理:在每次运算结束后,对相关变量进行重置,以便下一次计算。
通过以上程序设计,我们可以完成基于51单片机的简易计算器的设计。
在实际使用过程中,用户只需要通过数字按键输入相应的数字和运算符,计算器就可以自动进行运算,并将结果显示在液晶显示屏上,方便用户进行查看。
总结
本文介绍了基于51单片机的简易计算器的设计。
通过合理的材料准备、电路连接和程序设计,我们可以实现一个具备加减乘除功能的计算器。
该计算器不仅能满足人们日常的计算需求,还能帮助提高工作效率。
随着技术的不断进步,计算器的功能也逐渐丰富,让我们期待未来计算器的更多创新和发展。