单片机设计简易计算器.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机设计简易计算器 单片机设计简易计算器 PAGE / NUMPAGES 单片机设计简易计算器 简易计算器 Simply Calculator 设计思想 此计算器有键盘部分、单片机、显示部分三部分组成,键盘部分主要完成输入功能;单片机主要完成数据处理功能,包括确定按键,完成运算,以及输出数据;显示器部分主要完成单片机输出的显示。 本设计的思路是利用单片机性能好,稳定性强的优点来实现系统的运行。设计大致可以分为三个步骤:第一步,硬件的选取和设计;第二步,程序的设计和调试;第三步, Protues 系统仿真。 硬件是设计的骨骼,不仅关系到设计总体方向的确定,还要综合考虑节能,环保,以及稳定性和经济性等各种因素。因此需要花费大量的时间。硬件的选取最为重要,包括选用的芯片,显示设备的选取,输入设备的选取等。本设计是通过单片机来实现的,因此选用了 ATMEGA16单片机作为主体,输入设备选用矩阵键盘。程序是硬件的灵魂,是实现设计的中心环节。本设计使 用的程序语言是 C语言,在“ ICC AVR”中运行,调试,直到运行出正确结果,然后输出后缀名为 .HEX 格式的文件,以备在 Protues 中仿真使用。程序是设计的关键,程序的调试需要大量的时间,耐心,还够要有足的细心才能成功。 本设计中就出现了大量的错误,经过认真修改,最终才能运行出正确结果。最后的系统仿真是设计是否成功的验证,是设计不可缺少的重要环节。这就要求能掌握 Protues 的一些基本操作。 原理分析 矩阵键盘的扫描 M 1  M 2  M 3  M 4 P D 0 SW -PB M 5  SW-PB M 6  SW -PB M 7  SW -PB M 8 P D 1 SW -PB M 9  SW-PB M 1 0  SW -PB M 1 1  SW -PB M 1 2 P D 2 SW -PB M 1 3  SW-PB M 1 4  SW -PB M 1 5  SW -PB M 1 6 P D 3 SW -PB  SW-PB  SW -PB  SW -PB P D 4 P D 5 P D 6 P D 7 图 矩阵键盘图 如图所示,单片机的 8 个 I/O 口和矩阵键盘相连,用 8 个 I/O 口来控制矩阵键盘的 16 个按键是非常有意思的,首先我们设置单片机的 PD0—PD7为输出,且 PD0—PD3依次设置为低电平,而 PD4—PD7设置为高电平,然后我们设置 PD4—PD7为输入,而 PD0—PD3仍然为输出,假如此时 M1键按下,则PD0与 PD4相连,因为 PD0是低电平,而 PD4是输入,所以 PD4会被拉为低电平,同理,如果 M2被按下,则 PD5会被拉低, M3按下, PD6会被拉低, M4按下,PD7被拉低。这是判断有无键盘按下的过程,当我们判断是那一个键盘按 下时,我们首先设置 8 个 I/O 口为输出,输出为 FE,即,PD0为低电平,其他全为高电平,然后我们设置 PD4—PD7为输入,如果 M1被按下,则 PD4会比被拉为低电平,此时会变成 EE,同理可以知道 M2被按下时会变为 DE,M3被按下时会变为 BE,M4被按下时会变为 7E。同理我们可以设置 8 个 I/O 口输出 FD 来检测 M5—M8是否被按下,设置 8 个 I/O 口输出 FC来来检测 M9—M12,设置 8 个 I/O 口输出 F7 来检测 M13—M16,如果 M1—M4 没有被按下,就继续检测M4—M8,一次类推,就可以检测出 16 个按键了。在这次设计中, 16 个按键M1—M16所对应检测值分别为: EE,DE,BE,7E,ED,DD,BD,7D,EB,DB,BB,7B,E7,D7,B7,77。 数字显示与计算 本次设计选用的显示器是 1602液晶显示器,此液晶显示器能显示 32个字符, VSS接地 ,VDD接电源正极, E为时使能信号, R/W为读写选择端( H/L),RS为数据 / 命令选择端( H/L),D0—D7为数据 I/O 口。 首先我们初始化液晶显示器,然后显示出第一个被按下的数,并且使光 标右移,如果有第二个数按下,则据继续显示,以此类推,然后把所有显示 出来的数换算成一个数,如果按下“ +”号,则显示出“ +”,并且同理显示 出“ +”号后面按下的数字,然后调用加子程序,运算出结果,如果按下的是 “- ”, 则调用减子程序,如果按下“ *”,则调用乘子程序,如果按下“ / ”,则调用除子程序。然后再调用显示结果子程序,显示出结果。 程序设计与说明流程图 主程序流程图和运算子程序流程图为: 开始 开始 显示 Welcome 是否是+ 否 是否按键按下 是 是否是— 是 是否是 +-*/ 显示 +-*

文档评论(0)

150****7287 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档