简易计算器课程设计

简易计算器课程设计

ID:11365701

大小:2.79 MB

页数:18页

时间:2018-07-11

简易计算器课程设计_第1页
简易计算器课程设计_第2页
简易计算器课程设计_第3页
简易计算器课程设计_第4页
简易计算器课程设计_第5页
资源描述:

《简易计算器课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、目录摘要...................................................................................................................I1 任务及要求21.1设计任务21.2设计要求22 设计思想22.1硬件设计思想22.2软件设计思想23 电路原理与电路图33.1电路原理33.2电路原理图34 流程图与算法描述34.1流程图34.2算法描述55仿真结果66 设计总结12参考文献12致谢12附录14181 任务及要求1

2、.1设计任务设计一个4×4的键盘的简易计算器和LED数码管的显示电路的Proteus仿真及汇编程序设计。1.2设计要求(1)、设计一个十六个按键的矩阵式计算器的模拟系统。(2)、该系统具有加减乘除等功能。(3)、用Proteus7仿真工作的全过程。(4)、掌握4×4矩阵式键盘程序识别原理,4×4矩阵式键盘按键的设计方法。2 设计思想2.1硬件设计思想用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.7各管脚作输入线,以单片机的P2.0-P2.7和P0.0—P0.7各管脚作输出线,在数码管上显示每个按键“

3、0-9”的序号。键盘中对应按键的序号排列如图(1)所示。数字0、1、2、3接X0;4、5、6、7接X1;8、9、10、11接X2;12、13、14、15接X3。即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。该系统可以实现四则运算,当分别按下2个数字,再按任意一个功能键即可实现相应的运算。2.2软件设计思想整个程序可以实现十进制内的加减乘除,其中包含了延时子程序(去抖动),加法、减法、除法、乘法等子程序。(1)按键的识别判断键盘上有无按键闭合,先判断行线X0—X3输出低电平“0”

4、,然后判断列线Y0—Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0—Y3不全为1,说明有键按下。(2)消抖处理当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采用时间延时0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的计算。18(3)判别键号先判断行线X0—X3是否有输出低电平“0”,若有键按下,则相应的列线也为低电平“0”,例如行线X1输出为低电平“0”,且列线Y2为低电平,即X1与Y2相交的键被按下,进行键号=行号*4+列号的计算。(4)显示结果显示器接高电频,

5、左边显示器接P0,右边显示接P2,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为几点几,为高电频则几十几。其它运算直接看数据即可。3 电路原理与电路图3.1电路原理单片机最小系统。一个AT89C51单片机做为控制电路,运用其P0、P1口来控制数码管和键盘,通过P0和P2口来显示键值(0~9)。通过P1口来控制键盘。3.2电路原理图图3.1电路原理图4 流程图与算法描述4.1流程图18主函数流程图:开始P1口高四位置一

6、扫描键盘按下键?消除抖动计算键入的值十进制?送入P2口显示第一次键入的值消除抖动计算键入的值十进制?送入A按下键?NNYYYYNN送入P0显示第二次送入的值再按一次键加法?减法?乘法?除法?结束NNYYYYN把结果送入P0,P2口,P0存十位,P2存个位图4.1主函数流程图18主函数首先判断是否有键按下,如果有键按下则去抖动,判断是否是十进制,把第一次按下的数字发送到P2口。再判断第二次按下的值,和第一次一样,发送至P0口显示,在判断第三次按下的值,看是什么功能键,相对的再进行运算,把结果的十位存在P0口,P2口存个位。

7、延时函数流程图:开始R7送100R5送10R6送250R5减一为0?R6减一为0?R7减一为0?返回NNNYYY图4.2延时子程序流程图延时函数是由三个嵌套的循环构成。首先发送初值至R7,R6,R5,R5为内循环,R6为第二层,R7是最外层循环,也就是说,当R7的值减为0时,循环就结束了,延时程序结束,返回主函数。4.2算法描述18(1)、设计一个延时子程序,延时0.5s。本程序通过两个DJNZ的语句来实现。延时程序的代码段如下:DELAY:MOVR7,#100DDEL1:MOVR6,#250DDEL2:MOVR5,#1

8、0DDJNZR5,$DJNZR6,DEL2DJNZR7,DEL1RET(2)、仅实现十进制的加减乘除运算。CJNE是判断两个数是否相等,不想等则转移,代码段如下:M0:CJNER1,#10D,M1LJMPL1M1:CJNER1,#11D,M2LJMPL1M2:CJNER1,#12D,M3LJMPL1M3:CJNER1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。