计算器毕业论文.docx
《计算器毕业论文.docx》由会员分享,可在线阅读,更多相关《计算器毕业论文.docx(53页珍藏版)》请在冰豆网上搜索。
计算器毕业论文
毕业设计(论文)
题目:
基于单片机的电子计算器设计
学院:
电子信息学院
专业班级:
测控08级1班
指导教师:
张莉职称:
副教授
学生姓名:
代剑波
学号:
40803050104
摘要
计算器一般是指“电子计算器”,该名词由日文传入中国。
计算器是能进行数学运算的手持机器,拥有集成电路芯片,结构简单,功能较弱,但由于它使用方便、操作简单、价格低廉,因而广泛运用于商业交易中,也是必备的办公用品。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。
因此,单片机的应用已经越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。
计算器在人们的日常中是比较的常见的电子产品之一。
可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的计算器。
该设计系统是以AT89C51为单片机,P0口作为输入端,外接4X4的键盘。
通过键盘扫描来对输入数的控制,在P1口、P2口接了驱动电路,用来保证LED的工作正常。
计算器将完成的功能有加,减,乘,除等功能。
关键词:
计算器,单片机,LCD,矩阵键盘
ABSTRACT
Calculatorgenerallyreferstotheelectroniccalculator,andthetermisintroducedtoChinabytheJapanese.ThecalculatorwiththeICchip,simplestructure,andweakfunctionisabletoperformmathematicaloperationsonhandheldmachine.Butitiseasyusing,simpleoperationandlowprice.Soitiswidelyusedincommercialtransactions,andisalsoanessentialofficesupplies.
Withtherapiddevelopmentofscienceandtechnologyinrecentyears,theapplicationofSCMisthedeepeningandpromotethetraditionalcontrollingdetectiontechnologiesthatareincreasinglyupdated.Inreal-timedetectionandautomaticcontrolofmicrocomputerapplicationsystem,themicrocontrollerisoftenusedasacorecomponenttouse,butonlytheknowledgeofthemicrocontrollerisnotenough,andshouldbebasedonthespecifichardwarearchitecture,hardwareandsoftwarecombinationtomakeitperfect.SotheapplicationofSCMismoreandmoreclosetolife,sousingofsinglechiptoachievesomeelectronicdesignsalsobecomeeasy.Inthepeopledailylifethecalculatorisoneofthecommonelectronicproducts.Butitisstillindevelopment,itwillbecomemorepowerfulcalculatorinthefuture.Accordingtosuchidea,thedesignisthatSCMdesigncalculator.ThedesignsystemisbasedonAT89C51microcontroller,P0portasinput,external4X4keyboard.InP1,P2mouthisconnectedwiththedrivecircuittoensurethenormalworkofLED.Thecalculatorwillcompleteadd,subtract,multiply,divideandotherfunction.
KEYWORDS:
calculator,MCU,LCD,Matrixkeyboard
前言
计算器(calculator;counter)一般是指“电子计算器”,该名词由日文传入中国。
计算器是能进行数学运算的手持机器,拥有集成电路芯片,结构简单,功能较弱,但由于它使用方便、操作简单、价格低廉,因而广泛运用于商业交易中,也是必备的办公用品之一。
计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备组成。
随着科学技术的不断发展及计算器应用的普及,人们发现在工业控制中,有很多时候需要在恶劣的环境中进行各种数据的采集、运算和控制。
本设计是由单片机实现的模拟计算器,它不仅能实现数据的加减乘除运算,而且还能使数据及其计算结果在数码管上显示出来,能够实现0-256的数字四则运算。
本设计是用单片机AT89C51来控制,采用LCD1602液晶显示读取数据,软件部分是由C语言来编写的。
利用键盘和LCD1602设计一个简单的数学计算器,可以完成简单的如加,减,乘,除的四则运算,并将运算结果在LCD1602上显示出来。
第1章绪论
1.1研究背景
1.1.1单片机发展现状
单片机的发展现状:
使用寿命长;低电压与低功耗化;发展速度越来越快;从8位、16位到32位,数不胜数,应有尽有,部分与主流C51系列兼容,部分与之不兼容,它们各具特色,互补互成。
纵观单片机的发展历史,其有如下发展趋势:
1、大容量、高性能
以往单片机内的ROM为1KB~4KB,RAM为64~128B。
但在需要复杂控制的场合,该存储容量是不够的,必须进行外接扩充。
为了适应这种领域的要求,须运用新的工艺,使片内存储器大容量化。
目前,单片机内ROM最大可达64KB,RAM最大为2KB。
另外单片机进一步改变CPU的性能,加快指令运算的速度和提高系统控制的可靠性。
采用精简指令集(RISC)结构和流水线技术,可以大幅度提高运行速度。
现指令速度最高者已达100MIPS(MillionInstructionPerSeconds,即兆指令每秒),并加强了位处理、中断和定时控制功能。
这类单片机的运算速度比标准的单片机高出10倍以上。
由于这类单片机有极高的指令速度,可以使用软件模拟其I/O功能,由此引入了虚拟外设的新概念。
2、串行扩展技术
在很长一段时间里,通用型单片机通过三总线结构扩展外围器件成为单片机应用的主流结构。
随着低价位OTP(OneTimeProgramble)及各种特殊类型片内程序存储器的发展,加之处围接口不断进入片内,推动了单片机“单片”应用结构的发展。
特别是I2C、SPI等串行总线的引入,可以使单片机的引脚设计得更少,单片机系统结构更加简化及规范化。
3、低功耗CMOS化
MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗,电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径。
4、微型单片化
现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)等集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)等都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
5、主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。
所以C8051为核心的单片机占据了半壁江山。
而Microchip公司的PIC精简指令集(RISC)也有着强劲的发展势头,中国台湾的HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。
此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。
在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
1.1.2计算器系统现状
计算器一般由存储器、键盘和机器设备等组成。
键盘是计算器的输入部件,一般采用接触式或传感式。
为减小计算器的尺寸,一键常常有多种功能。
显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。
除显示计算结果外,还常有溢出指示、错误指示等。
计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。
为节省电能,计算器都采用CMOS工艺制作的大规模集成电路,并在内部装有定时不操作自动断电电路。
1.1.3选题意义及现状
计算器(calculator;counter)一般是指“电子计算器”,该名词由日文传入中国。
计算器是能进行数学运算的手持机器,拥有集成电路芯片,结构简单,功能较弱,但由于它使用方便、操作简单、价格低廉,因而广泛运用于商业交易中,也是必备的办公用品之一。
随着科学技术的不断发展及计算器应用的普及,人们发现在工业控制中,有很多时候需要在恶劣的环境中进行各种数据的采集、运算和控制。
1.2设计概要
1.2.1设计目的
通过本次毕业设计,应用《单片机应用基础》《计算机应用基础》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步综合运用所学知识设计的能力的目的。
通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。
1.2.2设计任务
1.了解单片机的基本原理。
2.学习电子计算机制作基本原理及方法。
3.熟练掌握PROTEL软件。
4.会用KEIL编程,具有一定的编程能力。
5.设计制作电子计算器硬件及软件系统。
6.撰写毕业论文。
1.3设计思路
1.3.1系统总体模块图
图1-1总体模块图
整个系统由电源给51单片机和LCD液晶显示提供电源使其工作,当外接按键输入有效数值和运算模式时,通过主控芯片实现整个系统的功能。
1.3.2系统方案
经过反复推敲最终确定系统采用以下方案:
(1)采用AT89S52作为主控芯片;
(2)显示模块使用LCD1602液晶显示屏;
(3)输入模块使用4*4矩阵键盘;
(4)AC清零按键使用独立按键并接入单片机外部中断引脚;
(5)声音提示开关按键使用独立按键并接入单片机外部中断引脚;
(6)平方和开方按键由开发板上的独立按键实现;
(7)电源采用LM7805稳压电路。
第2章硬件设计
2.1键盘输入模块设计
计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
矩阵键盘的设计:
图2-1矩阵键盘
图2-1矩阵键盘键值与其功能对应表如下:
表2-1按键功能对照
对照
键值0123456789+-/=.
功能0123456789+-/=点
2.2LCD显示模块设计
LCD1602,工业字符型液晶,能够同时显示16x02即32个字符(16列2行),故简称1602。
1602LCD液晶具有功耗低、显示内容丰富、清晰,显示信息量大,显示速度较快,界面友好等而得到广泛应用,因此使用1602液晶显示屏,可以方便的显示多种字符,特别适用于单片机计算器的双行显示。
液晶显示模块的设计:
图2-2液晶显示
2.3清零、音乐开关、开方和多次方运算功能模块设计
本设计要求在任何时候按下AC清零键,都必须退出当前操作,数据清零,准备下一次的运算,故应采用独立键盘产生下降沿输入给单片机外部中断处理。
对于声音开关按键,由于要求随时关闭或打开声音提示,本设计也采用独立按键产生下降沿输入给单片机的外部中断处理。
而开方或多次方运算,则可与矩阵键盘一起检测,也当做一个运算符处理。
具体功能按键设计如下图:
图2-3功能按键设
图中,AC为清零按键、KeyBeep为声音开关按键、KeySqrt为开方按键、KeyPow为多次方按键。
2.4电源模块设计
由于AT89S52和LCD1602都是采用5V供电,而且其他模块功能也采用5V电平,本系统采用LM7805作为稳压芯片,经过初级和次级的电容滤波,最终得到稳定的5V电压供给系统使用。
图2-4电源
2.5主控模块设计
2.5.1MSC-51芯片简介
MCS-51单片机内部结构:
图2-5单片机内部结构图
8051的复位方式可以是自动复位,也可以是手动复位。
其复位电路图如下:
图2-6复位电路
2.5.2AT89S52
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程DIP封装Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52的最大优点是可以在线编程,在调试程序的时候,可直接带电烧录程序,烧录完成即可自动复位运行,非常适合调试程序。
而且AT89S52可编程一千多次以上,的确是一种价格低廉的开发芯片。
单片机的最小系统设计:
图2-7最小系统
第3章软件设计
3.1显示程序设计
LCD1602在上电以后,应该先等待50毫秒左右,让其内部芯片初始化后再对其进行操作。
在对其操作时,应参考其时序图,先把命令写入其内部寄存器设置它的工作方式和状态。
要显示数据的时候,先设置好显示坐标,再往里面写入要显示的ASCII码,LCD则通过刷新和替换来显示新的数据。
其程序流程图如下图所示:
图3-1显示程序流程图
其程序位于后面附录
3.2键扫程序设计
由于矩阵键盘采用4行4列的结构,每一行每一列各对应一个I/O口,故程序应该逐行查询,一旦查询到有某一行的按键被按下了,则根据读取到的I/O总线口的数据即可查询到是哪一列的按键被按下了,最后对应行列返回一个按键值回主函数。
其程序流程图如下:
否
否
否
否
图3-2矩阵键盘程序流程图
其程序位于后面附录
3.3清零程序设计
根据系统要求以及硬件结构,AC按键直接接入单片机外部中段0,则程序应使用中断来清除各数据存储变量达到清零的目的,并把清零标志位至1,在主程序中不断查询标志位,若为1,则清零后。
其程序框图如下图:
图3-3清零程序流程图
其程序如下:
/***清零中断程序******/
voidEX0_int()interrupt0
{
if(beepflag==1)//若开声音则每一次按键均鸣叫
{
beep=0;
delayms(100);
beep=1;
}
lcdwrite_com(0x01);//显示清屏
lcd_setxy(0,0);
lcdwrite_data('0');
lcd_setxy(0,0);
num='N';//数字初始化
keynum1=0,keynum2=0,sign=0;
ans1=0,ans2=0,ans=0,point=0;
conflag=0,newcalc=0;
ac=1;
}
3.4声音开关程序设计
根据要求,声音开关使用外部中断1来处理,当按下声音开关时,触发单片机进入外部中断1,在中断程序里,通过对声音开关标志位取反,在按键扫描过程中,加入对声音标志位的判断,若为1,则发出声音,即可实现声音提示功能。
其程序框图如下图:
否
图3-4声音开关程序流程图
其程序如下:
/***声音中断程序******/
voidEX1_int()interrupt2
{
beepflag=~beepflag;
if(beepflag==1)//若开声音则每一次按键均鸣叫
{
beep=0;
delayms(100);
beep=1;
}
}
3.5总体设计
整体程序包括:
电子计算器.C、lcd1602.C和lcd1602_8.h
本系统采用大小循环嵌套方式的软件设计思想,大循环则一直在运行,使计算器一直处于工作状态,并不断扫描按键,小循环用于识别数字是否输入完,一旦检测到输入的是运算符,则转换输入数值并储存起来,最后按下等于号以后则根据运算符计算两个数值的大小,并通过LCD显示。
软件系统总框图如下:
是
是
否
是
是
是
否
是
否
图3-5总程序流程图
其程序位于后面附录
第4章系统仿真及原理图
4.1Proteus仿真
系统仿真图见下图:
图4-1系统仿真图
图4-2加法运算
图4-3减法运算
图4-4乘法运算
图4-5除法运算
图4-6开根号运算
图4-7幂运算
图4-8错误提示1
图4-9错误提示2
4.2Protel原理图
系统原理图见下图:
图4-10系统原理图
第5章系统调试
5.1问题与分析
5.1.1硬件常见故障
1、逻辑错误:
它是由设计错误或加工过程中的工艺性错误所造成的。
这类错误包括错线、开路、短路等。
2、元器件失效:
有两方面的原因:
一是器件本身已损坏或性能不符合要求;二是组装错误造成元件失效,如电解电容、集成电路安装方向错误等。
3、可靠性差:
因其可靠性差的原因很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;走线和布局不合理也会引起系统可靠性差。
4、电源故障:
若样机由电源故障,则加电后很容易造成器件损坏。
电源故障包括电压值不符合设计要求,电源引线和插座不对,功率不足,负载能力差等。
5.1.2软件调试
软件调试一般分为以下四个阶段:
1、编写程序并查错;
2、在C语言的编译系统中编译源程序
3、对程序进行编译连接,并及时发现程序中存在的错误;
4、改正错误。
在本次调试中出现的问题有:
1、在程序中有的函数名未定义;
2、在抄录程序时,少录入一些字符,如:
”“{”“-”“;、、等符号,而出现错误;
3、有一些函数名录入时少写一个字母或顺序颠倒;
4、没有注意函数名的调用及定义;
5、芯片引脚定义出错而导致没有实验现象。
5.2系统演示
整体图的照片:
图5-1未工作时系统
各项功能测试:
表5-1功能测试
加法测试减法测试
表5-2功能测试
乘法测试除法测试
表5-3功能测试
开方测试多次方运算测试
表5-4功能测试
错误提示测试1错误提示测试2
由以上测试结果可知,计算器的各项功能正常,基本能达到设计要求。
下面将进行多次测试,以检验计算器的性能指标。
本次对计算器的功能进行多次测量,其测试结果如下表:
表5-5功能多次测量
次数第一运算数运算符号第二运算数运算结果实际结果
1524+5624.5636148.56298826148.563
255914-264.5155649.488281155649.49
3562*211241124
467/7.58.9333348.93333333
58
(无输入)2.8284272.28427125
69^28181
7(无输入)+19100100
8
(无输入)(无输入)1010
942/0matherror错误
10-64
(无输入)matherror错误
结果分析:
对比运算结果和实际结果可知,进行一般的整形运算计算器能准确无误计算出来,但是当进行浮点运算时候,会产生精度丢失或者是有尾数产生,这是因为单片机对的浮点运算功能差,而且在keil开发环境中,float型和double型浮点数的精度都是一样的,其小数点的有效数字位数都是6~7位,这就决定了本设计的计算器的浮点数精度有限,只能通过小数点补偿来减少浮点数运算误差。
另外,由连续运算、新一轮运算测试、错误提示测试的结果以及运算过程中的AC清零、声音开关设置可见,本设计的计算器的功能基本能实现。
但是,由实际操作可发现本设计存在以下不足:
(1)某些按键不够灵敏,导致需要按很多次才能输入;
(2)当运算式子超过屏幕范围时,不能通过移动屏幕来完全显示式子;
(3)当连续出现错误操作时,如连续输入减号,程序不能自动复位,会产生连续错误;
(4)没有删除输入功能,当输入出错时,只能通过清零后重新输入;
(5)没有数据溢出提示功能。
第6章总结与展望
6.1总结
经过多次测量与调试,本计算器基本能实现设计要求中的功能。
在设计的过程中,也遇到了不少的困难,例如在LCD上显示任意位整数,显示任意位小数,在输入小数的时候小数点的处理问题,连续运算的结果保存与