基于51单片机的简易计算器设计报告.doc
《基于51单片机的简易计算器设计报告.doc》由会员分享,可在线阅读,更多相关《基于51单片机的简易计算器设计报告.doc(31页珍藏版)》请在沃文网上搜索。
1、 基于51单片机的简易计算器设计【摘 要】单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除八位数范围内的基本四则运算,并在LCD上显示相应的结果。设计电路采用AT89S51单片机为主要控制电路,利用4*4矩阵键盘作为计算器的数字以及运算符的输入。显示采用字符LCD静态显示。软件方面使用C语言编程,并用开发板制作并演示。【关键词】计算器,单片机,LCD,矩阵键盘 AbstractThe emergence
2、 of computer chip manufacturing technology, rapid development of the product, which is the core of embedded control systems, and now, it has been widely applied to all areas of our lives, electronics, technology, communications, automotive, industrial and so on.The design is based on the 51 computer
3、s for digital system design calculator, you can complete the calculator keyboard, to add, subtract, multiply, and divide within the scope of the basic six-digit arithmetic, and the corresponding results on the LCD display.AT89C51 microcontroller circuit design as the main control circuit, use MM74C9
4、22 4 * 4 keypad as a calculator scan IC to read keyboard input.Character LCD display with a static display.Software using the C programming language, and use PROTUES simulation.Keywords: calculator,MCU,LCD, Matrix keyboard目录摘 要1一、系统总体设计11.1设计概述11.2设计思路11.3系统总体模块图:21.4系统方案2二、硬件系统设计22.1主控芯片AT89S52单片机2
5、2.2 LCD1602液晶显示屏32.3键盘接口电路42.4 清零、音乐开关、开方和多次方运算功能模块52.5电源模块设计6三、软件系统设计63.1总体设计63.2子程序设计83.2.1液晶显示程序设计83.2.2 矩阵键盘扫描程序设计83.2.3 AC清零程序设计93.2.4 声音开关子程序设计10四、系统功能测试104.1总体实物测试104.2 各项功能测试114.3 多次测试11五、总结12六、结束语12参考文献13附录14附1:计算器原理图14附2:主程序清单14附3:键盘扫描子程序21附4:LCD1602显示程序24附5:LCD1602显示字符表28附6: LCD接口信号说明29附7
6、: LCD写操作时序图29一、系统总体设计1.1设计概述本设计使用AT89S52单片机作为主控芯片,通过计算机键盘进行数据输入,进行相应的加、减、乘、除的运算,并在LCD上显示相应的结果,主要功能特点如下:(1)LCD的第一行显示运算式子,第二行显示运算结果,在任何时候按下AC清零按键时候,都必须退出当前计算,返回初始状态,等下新的一次运算。(2)当运算完第一次完整的计算以后,可以在不按任何按键的情况下,进行新的一轮运算,若运算完一次运算后继续按运算符按键,则利用之前一次的结果作为第一个算数,直接等待第二运算数的输入并完成计算,即可进行连续运算。(3)可根据用户需要开启或关闭按键声音提示,即通
7、过重复按声音开关按钮可关声音或开声音。(4)可进行开方运算、可进行任意次方的运算,即能进行x的y次方的运算。1.2设计思路根据课程要求和设计指标,本系统采用MCS-51系列单片机作为主控机,通过拓展必要的外围电路,实现对计算器的设计,具体设计思路如下:(1) 由于要显示运算式和结果,为了达到良好的显示效果,本系统采用LCD1602液晶显示屏作为显示模块。(2) 计算器一般包含数字键(09),符号键(、)、小数点按键,等号按键,故采用4*4矩阵键盘结合键盘扫描技术容易达到要求,并且电路和程序也比较简单。(3) 执行过程:开机显示0,等待按键输入,当键入数字,在LCD上显示出来,计算器内部吧数据储
8、存起来,并等待下一按键输入,当键入、运算符,计算器在内部进行转换,得到第一运算数,然后等待再次输入数值,按等于号就在LCD上显示结果,如果继续按下、运算符,则直接利用第一次运算的结果进行下一次运算。(4) AC清零功能:在运算的任何时候键入AC键,则把数据清零,等待下一次运算。为了实现此功能,本系统采用AC按键外部中断输入,运用中断技术,随时对计算器进行清零。(5) 音乐开关功能:由于在输入的任何时候都有可能需要开启或关闭声音提示,所以声音开关按键也采用外部中断输入单片机,运用中断技术,随时开或关声音提示。(6) 开方和多次方运算功能的实现:采用独立按键,再检测运算符的时候也检测这两个按键,一
9、旦符合按下则进行开方或者多次方运算,程序可通过条用“math.h”头文件中的sqrt和pow函数实现。(7) 错误提示:当输入超过范围时,则停止输入,等待输入运算符;当除数为0时,计算器会在LCD上提示错误;当被开方数小于0时,提示错误。鉴于本设计的计算器的难度以及功能的要求,在本设计中决定使用语言功能丰富、表达能力强、使用方便灵活、可移植性好的C语言编写软件,这样有利于减轻工作量和代码量,提高设计效率。若使用汇编语言编写程序,会出现汇编语言无法表达、移植困难等问题,而且对于开方和多次方的运算,汇编语言难以表达和设计,这是设计是很不利。1.3系统总体模块图:图1.1 系统总体框图1.4系统方案
10、经过反复推敲最终确定系统采用以下方案:(1)采用AT89S52作为主控芯片;(2)显示模块使用LCD1602液晶显示屏;(3)输入模块使用4*4矩阵键盘;(4)AC清零按键使用独立按键并接入单片机外部中断引脚;(5)声音提示开关按键使用独立按键并接入单片机外部中断引脚;(6)平方和开方按键由开发板上的独立按键实现;(7)电源采用LM7805稳压电路。二、硬件系统设计2.1主控芯片AT89S52单片机AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程 DIP封装Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完
11、全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM
12、内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52的最大优点是可以在线编程,在调试程序的时候,可直接带电烧录程序,烧录完成即可自动复位运行,非常适合调试程序。而且AT89S52可编程一千多次以上,的确是一种价格低廉的开发芯片。单片机的最小系统设计:图2.1 单片机最小系统2.2 LCD1602液晶显示屏LCD1602,工业字符型液晶,能够同时显示16x02即32个字符(16列2行),故简称1602。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完
13、全一样。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。1602LCD 液晶具有功耗低、显示内容丰富、清晰,显示信息量大,显示速度较快,界面友好等而得到广泛应用,因此使用1602液晶显示屏,可以方便的显示多种字符
14、,特别适用于单片机计算器的双行显示。液晶显示模块的设计:图2.2 液晶显示模块2.3键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为44个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,
15、这种形式在单片机系统中也最常用。矩阵键盘的设计:图2.3 矩阵键盘2.4 清零、音乐开关、开方和多次方运算功能模块本设计要求在任何时候按下AC清零键,都必须退出当前操作,数据清零,准备下一次的运算,故应采用独立键盘产生下降沿输入给单片机外部中断处理。对于声音开关按键,由于要求随时关闭或打开声音提示,本设计也采用独立按键产生下降沿输入给单片机的外部中断处理。而开方或多次方运算,则可与矩阵键盘一起检测,也当做一个运算符处理。具体功能按键设计如下图图2.4 AC清零模块图中,AC为清零按键、KeyBeep为声音开关按键、KeySqrt为开方按键、KeyPow为多次方按键。2.5电源模块设计由于AT8
16、9S52和LCD1602都是采用5V供电,而且其他模块功能也采用5V电平,本系统采用LM7805作为稳压芯片,经过初级和次级的电容滤波,最终得到稳定的5V电压供给系统使用,其电路如下:图2.5 5V稳压电路三、软件系统设计3.1总体设计本系统采用大小循环嵌套方式的软件设计思想,大循环则一直在运行,使计算器一直处于工作状态,并不断扫描按键,小循环用于识别数字是否输入完,一旦检测到输入的是运算符,则转换输入数值并储存起来,最后按下等于号以后则根据运算符计算两个数值的大小,并通过LCD显示。软件系统总框图如下:图3.1 总程序框图3.2子程序设计3.2.1液晶显示程序设计LCD1602在上电以后,应
17、该先等待50毫秒左右,让其内部芯片初始化后再对其进行操作。在对其操作时,应参考其时序图,先把命令写入其内部寄存器设置它的工作方式和状态。要显示数据的时候,先设置好显示坐标,再往里面写入要显示的ASCII码,LCD则通过刷新和替换来显示新的数据。其程序流程图如下图所示:3.2.2 矩阵键盘扫描程序设计由于矩阵键盘采用4行4列的结构,每一行每一列各对应一个I/O口,故程序应该逐行查询,一旦查询到有某一行的按键被按下了,则根据读取到的I/O总线口的数据即可查询到是哪一列的按键被按下了,最后对应行列返回一个按键值回主函数。其程序流程图如下:图3.3 矩阵键盘程序流程图3.2.3 AC清零程序设计根据系
18、统要求以及硬件结构,AC按键直接接入单片机外部中段0,则程序应使用中断来清除各数据存储变量达到清零的目的,并把清零标志位至1,在主程序中不断查询标志位,若为1,则清零后。其程序框图如右图:3.2.4 声音开关子程序设计根据要求,声音开关使用外部中断1来处理,当按下声音开关时,触发单片机进入外部中断1,在中断程序里,通过对声音开关标志位取反,在按键扫描过程中,加入对声音标志位的判断,若为1,则发出声音,即可实现声音提示功能。其程序框图如右图:四、系统功能测试4.1总体实物测试制作出来的系统实物图如下:4.2 各项功能测试表4-2 各项功能测试加法测试:减法测试:乘法测试:除法测试:开方测试:多次
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 简易 计算器 设计 报告