- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)