简易计算器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1.概述 (1)
2.系统软件设计 (1)
2.1设计目标和实现方法 (1)
2.2整体方案论证 (1)
3.系统硬件的设计 (2)
3.1复位电路的设计 (2)
3.2时钟振荡器电路的设计 (3)
3.3输入电路的设计 (4)
3.4输出电路的设计 (7)
4.系统程序的设计与介绍 (9)
4.1读键输入程序流程图设计 (9)
4.2 LED显示程序流程图设计 (11)
4.3主程序流程图设计 (12)
5.程序设计体会........................................... . (12)
附 1 源程序代码 (14)
附 2 计算器电路图 (24)
1.概述
随着社会的发展,科学的进步,人们的生活水平在逐步地提高,尤其是微电子技术的发展犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了。计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好地为各个行业服务,成了如今电子领域重要的研究课题。
现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。
本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。
1、对字符液晶显示模块的工作原理,如初始化、清屏、显示、调用及
外特性有较清楚的认识,并会使用LCD(液晶显示模块)实现计算结果的显示;掌握液晶显示模块的驱动和编程,设计LCD和单片机的接口电路,以及利用单片机对液晶显示模块的驱动和操作;
2、在充分分析内部逻辑的概念,进行软件和调试,学会使用,并能够
以其为平台设计出具有四则运算能力简易计算器的硬件电路和软件程序。2.系统软件设计
2.1 设计目标和实现方法
为了满足简易计算器的基本要求,可以进行基本的加、减、乘、除运算以及数据归零操作,我们采用基于51单片机设计计算器,并用七段共阴极LED 数码管显示数据,4*4的矩阵键盘实现数据的输入。
2.2 整体方案论述
根据简单计算器的功能和本方案中的设计指标要求,本系统选用了MCS 51 单片机为主控机。通过扩展必要的外围接口电路,实现对简单计算器的设计。具体
设计考虑如下:
①由于要设计的是简单的计算器,可以进行基本的四则运算,对数字的大小范围要求不高,故我们采用可以进行四位数字的运算,选用8 个LED 数码管显示数据和运算结果。
②另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可。
系统模块图:
图2-1 系统模块图
3.系统硬件的设计
3.1 复位电路的设计
上电复位的原理:VCC上电时,C充电,在10K电阻上出现了电压,使单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。
手动复位的原理:工作期间,按下S,C放电。S松手,C又充电,在10K电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。
如SW复位键按下时:RST经1k电阻接VCC,获得10k电阻上所分得电压,形成高电平,进入“复位状态”。
当SW复位键断开时:RST经10k电阻接地,电流降为0,电阻上的电压也将为0,RST降为低电平,开始正常工作。
对于成熟产品,从降低成本角度,可以使用上电复位。另外,作为产品,最
好使用上电复位。因为使用者通常没有专业知识,就知道断电通电,对他们来说,按键复位成了摆设。按键复位比较适合样品制作或者实验室调试场合,上电复位电路成本也低一些。
综上所述我们在本方案中选用了上电自动复位电路。
上位自动复位电路图和手动复位电路图如下图
如图3—1两种复位方式
3.2 时钟振荡电路的设计
能够产生振荡电流的电路叫做振荡电路。一般由电阻、电感、电容等元件和电子器件所组成。由电感线圈l和电容器c相连而成的lc电路是最简单的一种振荡电路,其固有频率为f=[sx(]1[]2πlc。§一种不用外加激励就能自行产生交流信号输出的电路。它在电子科学技术领域中得到广泛地应用,如通信系统中发射机的载波振荡器、接收机中的本机振荡器、医疗仪器以及测量仪器中的信号源等。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用此振动器。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
使用片内振荡器,可以节省IO引脚,减少成本,但是内部振荡器使用阻容震荡,导致它的精度不高,如果使用了串口、或者PWM等对时钟比较敏感的功能,最好还是使用外部晶体振荡。
在本方案中我们选择了内部时钟方式,如下图:
如图3—2两种时钟方式
3.3 输入电路的设计
每一个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
当无按键闭合时,P10~P13 与P14~P17 之间开路;当有键闭合时,与闭合键相连的两条I/O 口线之间短路。判断有无按键按下的方法是:第一步,置列线
P14~P17 为输入状态,从行线P10~P13 输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P14~P17 读入数据,若有某一列为低电平,则对应行线上表示有键按下。综合一二两步的结果,可以确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。
键盘是单片机系统中常用的人机对话输入设备,用户通过键盘向单片机输入数据或者指令。键盘控制程序需要完成的任务有:监测是否有键按下,有键按下