基于51单片机的多功能计算器设计课程设计

上传人:s9****2 文档编号:513136743 上传时间:2023-01-16 格式:DOC 页数:36 大小:2.85MB
返回 下载 相关 举报
基于51单片机的多功能计算器设计课程设计_第1页
第1页 / 共36页
基于51单片机的多功能计算器设计课程设计_第2页
第2页 / 共36页
基于51单片机的多功能计算器设计课程设计_第3页
第3页 / 共36页
基于51单片机的多功能计算器设计课程设计_第4页
第4页 / 共36页
基于51单片机的多功能计算器设计课程设计_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《基于51单片机的多功能计算器设计课程设计》由会员分享,可在线阅读,更多相关《基于51单片机的多功能计算器设计课程设计(36页珍藏版)》请在金锄头文库上搜索。

1、 微机原理课程设计设计课题 基于51单片机的计算器设计 学 院 姓 名 学 号 专业班级 指导教师 设计时间 南华大学【摘要】 当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且人脑比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器设计开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用44矩阵键盘再加上4个独立按键

2、,可以进行加、减、乘、除7位带符号数字运算,同时支持括号的嵌套使用级浮点数的运算,并在LCD1602上显示操作过程。本次设计注重设计方法及流程,首先根据原理设计电路,利用keil编程,借助实验开发平台进行仿真实验,进而利用altium designer 制作PCB,最后到焊接元器件,直至调试成功。在设计的同时,特别注重keil软件和altium designer软件的使用方法和技巧以及常用的LCD显示器和矩阵键盘的设计和使用方法。【关键词】 计算器,STC89C52,矩阵键盘,1602液晶目录1 系统方案设计- 5 -1.1 设计目的及要求- 5 -1.1.1 设计目的- 5 -1.1.2 设

3、计要求- 5 -1.2 方案论证及选择- 5 -1.2.1 方案一 采用FPGA控制- 6 -1.2.2 方案二 采用STC89C52- 6 -1.2.3 方案比较及选择- 6 -2 单元电路设计- 7 -2.1 工作原理- 7 -2.2 硬件电路设计- 8 -2.2.1 单片机电路设计- 8 -2.2.2 键盘模块电路- 9 -2.2.3 蜂鸣器提示电路- 9 -2.2.4 液晶显示电路- 10 -2.3 软件设计- 11 -2.3.1 键盘扫描- 11 -2.3.2 表达式的处理- 11 -2.4 altium designer 原理图设计及PCB制作- 13 -2.4.1 原理图设计-

4、13 -2.4.2PCB制作- 14 -2.4.3设计结果- 15 -3系统测试- 15 -3.1 整数运算- 15 -3.2 浮点数运算- 16 -3.3 输入出错的情况- 17 -4 结论与心得体会- 17 -5 参考文献- 18 -附录1 元器件清单- 18 -附录2 程序清单- 19 -1 系统方案设计1.1 设计目的及要求1.1.1 设计目的通过本次课题设计,应用单片机应用基础、数据结构等所学相关知识及查阅资料,完成实用计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌

5、入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。1.1.2 设计要求在本次课程设计中,主要完成如下方面的设计要求:1、掌握MCS-51系列某种产品(例如8051)的最小电路及外围扩展电路的设计方法;2、计算器能实现基本的加、减、乘、除四则运算;3、支持浮点数运算;4、支持括号运算,允许括号的多层正确嵌套;5、较为友好的界面显示,对输入实时显示,对计算结果输出显示;6、能够具备比较完善的报错系统1.2 方案论证及选择基于设计要求,笨设计考虑了两种设计方案,他们均可以实现计算器的功能,但基于设计目的及微控制器的广泛运用,比较两种方案的优劣,最终选择基于51单片机的计算器设计。1.2.1

6、 方案一 采用FPGA控制FPGA是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达200MHz。由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。但是而基于 SRAM编程的FPGA,其编程信息需存放在外部存储器上 ,需外部存储器芯片 ,且使用方法复杂 ,保密性差,而其对于一个简单的计算器而言,实用FPGA有点大材小用,成本太高。1.2.2 方案二 采用STC89C52单片机是单片微型机的

7、简称,故又称为微控制器MCU(Micro Control Unit)。通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机广泛用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单,实用方便,价格便宜等优点,而其中AT89S52以MCS-51为内核,是单片机中最典型的代表,应用于各种控制领域。1.2.3 方案比较及选择通过以上两种方案论证和比较,从设计的实用性,方便性和成本出发,选择了以STC89C52单片机作为中央处理单元进行计算器的设计,这样设计能够实现对

8、六位浮点数的加减和三位浮点数的乘除运算。2 单元电路设计2.1 工作原理利用矩阵键盘进行按键的输入,通过对矩阵键盘的扫描,获取用户的输入,并实时的显示在1602液晶上,每次获取到输入时,根据软件设计的相应方法对输入进行处理、运算,输入结束后(以“=“为标志),将最终的运算结果输出的液晶上。系统组成及整体框图如图2.1所示。LCD液晶显示屏模块STC89C52主控制模块(处理、运算)键盘模块电源图2.1 系统组成及总体框图2.2 硬件电路设计2.2.1 单片机电路设计为使单片机正常工作,除电源供电部分外,还需提供晶振电路和复位电路。具体电路如下:图2.2 单片机工作电路由图2.2可知,9脚外接的

9、是按键复位电路,18,19脚外接的是晶振电路,这样,就构成了单片机正常工作的必备电路。同时,为使P0口正常工作,并增加其带负载能力,P0口需接了上拉电阻。图中EA为外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。在这里,STC89C52单片机8k的程序存储器已经够本设计使用,无需外部程序储存器,故EA直接接高电平。 2.2.2 键盘模块电路图2.3是键盘电路,共20个按键,用来实现人机交互和运算表达式的输入,S0S3、S5S8、S10S13、S15S18共16个按键组成一组4*4的矩阵键盘,行线第一行到第四行分别接在P3.0P3.3口

10、,列线第一列到第四列分别接在P3.4P3.7口,这样P3口就完成了对4*4的矩阵键盘的接线。同时,注意到按键数量还达不到要求,故增加了四个独立按键S4,S9,S14,S19。他们依次接在P20P23口。可见,矩阵键盘相对来讲更节省I/O口,但本着学习的目的,加之本设计并不需要太多的I/O口,故为充分学习和利用资源,在这里也设计了4个这样的独立按键。图2.3 键盘模块电路2.2.3 蜂鸣器提示电路蜂鸣器主要用于按键时发出声音,提示当前的按键操作,电路如图2.5所示,三极管主要用于驱动蜂鸣器,因为单片机I/O的驱动能力有限。同时单片机I/O口还在这里还起到开关作用,为0时打开蜂鸣器通道,使蜂鸣器发

11、声。图2.4 蜂鸣器提示电路2.2.4 液晶显示电路LCD也是本次设计的重要组成部分之一,主要用于显示输入和输出。电路如图2.5所示,LCD数据端与单片机P0口相连,控制端与P24P26连接,电位器用于调节对比度。图2.5 LCD显示电路至此,整个电容测量仪的硬件设计部分就基本设计完成,接下来,需要的就是与之相匹配的软件支持了。2.3 软件设计软件编程平台选择最常用的keil软件。由于该程序并未涉及到底层的驱动问题,因此选择方便快捷的C语言编程。在编程中,将该程序分为四个模块:延时模块、1602显示模块、用于处理计算表达式的对战模块及主函数模块。采用模块化设计,方便调试与理解。具体程序见附录二

12、。在这里重点介绍软件核心的表达式处理程序算法。2.3.1 键盘扫描独立键盘很好实现,只需不停的检测即可,出现低电平即出现按键,在经过一定的延时消抖,再确认判断即可。矩阵键盘扫描程序,首先读出P3的低四位,然后读出P3口的高四位。然后确定键值并显示缓存,最终将按键的值通过一个预先定义好的数组转换为相应的ASCII码值送给LCD显示和与表达式相应的堆栈进行处理,读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。第一次所有行线均输出高电平,从P3口的值读入键盘信息(行信息);第二次所有列线均输出高电平,从P3口的值读入键盘信息(列信息)。2.3.2 表达式的处理表达式包含加、减、乘

13、、除、括号等,必须按照相应的优先级运算,才可能得出正确的结果。在这儿采用栈结构,可以有效的进行表达式的处理。栈结构具有“后进先出”的固有属性,借助这个属性我们可以随时对刚输入的元素进行操作,从而实现边输入边计算。为了实现算符优先算法。可以使用两个工作栈。一个称为OPTR,用以寄存运算符,另一个称做OPND,用以寄存操作数或运算结果。1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素;2.依次读入表达式,若是操作符即进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为”#”)。在这里,相应的处理指的是,如果当前符号的优先级比栈顶优先级低,则将该符号继续压入堆栈,不做其它操作;如果当前符号的优先级比栈顶优先级高,则依次取出操作数栈的栈顶两个数据和符号栈的栈顶符号进行这两个数的运算,运算结果数据再压入操作数栈中。若优先级相等,则弹出符号栈栈顶符号。算符间的优先关系如下(#表示开始和结束):+-*/()#+-*/(#=表2.1 运算符优先级表

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号