ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:1.42MB ,
资源ID:4702866      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4702866.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计简易计算器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计简易计算器.docx

1、单片机课程设计简易计算器44键盘的简易计算器和LED数码管的显示1、设计要求1、设计一个十六个按键的矩阵式计算器的模拟系统。2、该系统具有加减乘除等功能。3、用Proteus 7仿真工作的全过程。4、有相应的实物图5、掌握44矩阵式键盘程序识别原理,掌握44矩阵式键盘按键的设计方法。2、设计思想2.1 硬件设计思想用单片机的并行口P1连接44矩阵键盘,并以单片机的P1.0P1.7各管脚作输入线,以单片机的P2.0P2.7和P0.0P0.7各管脚作输出线,在数码管上显示每个按键 “09”的序号。键盘中对应按键的序号排列如图()所示。数字0、1、2、3接X0;4、5、6、7接X1;8、9、10、1

2、1接X2;12、13、14、15接X3。即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。该系统可以实现四则运算,当分别按下2个数字,再按任意一个功能键即可实现相应的运算。2.2 软件设计思想整个程序可以实现十进制内的加减乘除,其中包含了延时子程序(去抖动),加法、减法、除法、乘法等子程序。(1)按键的识别判断键盘上有无按键闭合,先判断行线X0X3输出低电平“0”,然后判断列线Y0Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0Y3不全为1,说明有键按下。(2)消抖处理当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采

3、用时间延时0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的计算。(3)判别键号先判断行线X0X3是否有输出低电平“0”,若有键按下,则相应的列线也为低电平“0”,例如行线X1输出为低电平“0”,且列线Y2为低电平,即X1与Y2相交的键被按下,进行键号=行号*4+列号 的计算。(4)显示结果显示器接高电频,左边显示器接P0,右边显示接P2,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为几点几,为高电频则几十几。其它运算直接看数据即可。3、电路原理与电路图3.1 电路原理单片

4、机最小系统。一个AT89C51单片机做为控制电路,运用其P0、P1口来控制数码管和键盘,通过P0和P2口来显示键值(09)。通过P1口来控制键盘。3.2 电路原理图图3.1 电路原理图4、流程图与算法描述4.1 流程图开始P1口高四位置一扫描键盘按下键?消除抖动计算键入的值十进制?送入P2口显示第一次键入的值消除抖动计算键入的值十进制?送入A按下键?NNYYYYNN送入P0显示第二次送入的值再按一次键加法?减法?乘法?除法?结束NNYYYYN把结果送入P0,P2口,P0存十位,P2存个位图4.1 主程序流程图开始R7送100R5送10R6送250R5减一为0?R6减一为0?R7减一为0?返回N

5、NNYYY 图4.2 延时子程序流程图 Y4.2 算法描述1、设计一个延时子程序,延时0.5s。本程序通过两个DJNZ的语句来实现。延时程序的代码段如下:DELAY: MOV R7,#100D DEL1: MOV R6,#250D DEL2: MOV R5,#10D DJNZ R5,$ DJNZ R6,DEL2 DJNZ R7,DEL1 RET2、仅实现十进制的加减乘除运算。CJNE是判断两个数是否相等,不想等则转移,代码段如下:M0: CJNE R1,#10D,M1 LJMP L1 M1: CJNE R1,#11D,M2 LJMP L1 M2: CJNE R1,#12D,M3 LJMP L1

6、 M3: CJNE R1,#13D,M4 LJMP L1 M4: CJNE R1,#14D,M5 LJMP L1 M5: CJNE R1,#15D,M6 LJMP L1 M6: RET ;返回重新按入新的键号5、仿真结果5.1 仿真结果1、加法仿真如下:(1加2)图5.1 加法仿真结果图图5.2 加法仿真结果图2、减法仿真如下:(2减3) 图5.3 减法仿真结果图 图5.4 减法仿真结果图3、乘法仿真如下:(3乘以2) 图5.5 乘法仿真结果图申图5.6 乘法仿真结果图4、除法仿真如下:(2除以4)图5.7 除法仿真结果图图5.8 除法仿真结果图5、复位仿真如下: 图5.10复位仿真结果图 6

7、、源程序ORG 0000H L1:LCALL SCAN MOV 40H,32H ;将键号保存在40H MOV R1,40H ;暂存在R1 LCALL M0 LCALL XY1 MOV P0,#0FFH ; 使P0口置1 LCALL SCAN MOV 41H,32H ;将键号保存在41H MOV R1,41H ;暂存在R1 LCALL M0 LCALL XY2 L2:LCALL SCAN MOV 42H,32H MOV R7,42H CJNE R7,#10D,L3 ;是否进行加法运算 MOV A,40H ADD A,41H MOV B,#10D DIV AB ; 商存在A中即十位,余数存在B中即

8、个位 CJNE A,#00H,L8 ; 判断十位是否为0,不为0跳转 MOV P0,#0FFH ;置1不显示 LJMP L9 L8:MOV 32H,A LCALL XY2 ;商非0则调用显示十位数L9:MOV 32H,B LCALL XY1 ;调用显示个位数 LJMP L1 l3:CJNE R7,#11,l4 ;是否进行减法运算 MOV A,40H SUBB A,41H ;结果存在A JB ACC.7,N1 ;判断正负 MOV 32H,A MOV P0,#0FFH LCALL XY1 ;减法结果为正 LJMP L1 N1:MOV P0,#0BFH ;显示负号 MOV A,41H SUBB A,

9、40H ADD A,#1D MOV 32H,A LCALL XY1 ;显示结果 LJMP L1 l4:CJNE R7,#12,l5 ;是否进行乘法运算 MOV A,40H MOV B,41H MUL AB ;结果存在A中 MOV 50H,A MOV B,#10D DIV AB ;商存在A中即十位,余数存在B中即个位 CJNE A,#00H,L10 ;判断十位是否为0,不为0跳转 MOV P0,#0FFH ; 置1不显示 LJMP L11 L10:MOV 32H,A LCALL XY2 L11:MOV 32H,B LCALL XY1 LJMP L1 l5:CJNE R7,#13,l6 ;是否进行

10、除法运算 MOV A,40H MOV B,41H DIV AB ;X/Y 除法 MOV R6,B CJNE R6,#00H,L12 ; 判断余数是否为0,不为0跳转 MOV P0,#0FFH ; 置1不显示十位 MOV 32H,A LCALL XY1 LJMP L13 L12:MOV 32H,A LCALL XY2 ; p0显示小数点前的数 CLR P0.7 ;有小数点 MOV A,B MOV B,#10D MUL AB ;余数的十倍 MOV B,41H DIV AB ;余数的十倍再除以除数 MOV 32H,A ;结果保留小数点后一位 LCALL XY1 ;p2显示小数点后的数L13:LJMP

11、 L1 l6:CJNE R7,#0D,L7 CJNE R7,#1D,L7 ;屏蔽十进制,实现加减乘除 CJNE R7,#2D,L7 CJNE R7,#3D,L7 CJNE R7,#4D,L7 CJNE R7,#5D,L7 CJNE R7,#6D,L7 CJNE R7,#7D,L7 CJNE R7,#8D,L7 CJNE R7,#9D,L7 CJNE R7,#14D,L7 ;屏蔽E、F CJNE R7,#15D,L7 L7:LJMP L2 SCAN:MOV P1,#0F0H ; P1口高4位置1 JNB P1.4,Y0 ;判断Y0列是否有键按下,有就跳至Y0 JNB P1.5,Y1 JNB P1

12、.6,Y2 JNB P1.7,Y3 LJMP SCAN ;无键按下继续扫描 Y0:MOV 31H,#00H ; 列线Y0有键按下 MOV P1,#0FEH JNB P1.4,X0 ;判断X0横是否有键按下 MOV P1,#0FDH JNB P1.4,X1 ;判断X1横是否有键按下 MOV P1,#0FBH JNB P1.4,X2 ;判断X2横是否有键按下 MOV P1,#0F7H JNB P1.4,X3 ;判断X3横是否有键按下 LJMP Y0 ;返回继续判断 Y1:MOV 31H,#01H ;列线Y1有键按下 MOV P1,#0FEH JNB P1.5,X0 MOV P1,#0FDH JNB

13、 P1.5,X1 MOV P1,#0FBH JNB P1.5,X2 MOV P1,#0F7H JNB P1.5,X3 LJMP Y1 Y2:MOV 31H,#02H ;列线Y2有键按下 MOV P1,#0FEH JNB P1.6,X0 MOV P1,#0FDH JNB P1.6,X1 MOV P1,#0FBH JNB P1.6,X2 MOV P1,#0F7H JNB P1.6,X3 LJMP Y2 Y3:MOV 31H,#03H ;列线Y3有键按下 MOV P1,#0FEH JNB P1.7,X0 MOV P1,#0FDH JNB P1.7,X1 MOV P1,#0FBH JNB P1.7,X

14、2 MOV P1,#0F7H JNB P1.7,X3 LJMP Y3 X0:MOV 30H,#00H ;行线X0有键按下 LCALL DELAY ;0.5s延时消除抖动 LJMP JS ;跳转键值计算程序 X1:MOV 30H,#01H ;行线X1有键按下 LCALL DELAY LJMP JS X2:MOV 30H,#02H ;行线X2有键按下 LCALL DELAY LJMP JS X3:MOV 30H,#03H ;行线X3键按下 LCALL DELAY LJMP JS JS: MOV A,30H ;计算键入的值 MOV B,#04H MUL AB ADD A,31H MOV 32H,A

15、RET XY1:MOV A,32H MOV DPTR,#TAB MOVC A,A+DPTR MOV P2,A ;显示第一次按入的键号及结果的个位 RET XY2:MOV A,32H MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A ;显示第二次按入的键号及结果的十位 RET DELAY:MOV R7,#100D ;延时0.5s子程序DEL1:MOV R6,#250D DEL2:MOV R5,#10D DJNZ R5,$ DJNZ R6,DEL2 DJNZ R7,DEL1 RET M0:CJNE R1,#10D,M1 ;仅实现十进制的加减乘除运算 LJMP L1 M1:CJNE R1,#11D,M2 LJMP L1 M2:CJNE R1,#12D,M3 LJMP L1 M3:CJNE R1,#13D,M4 LJMP L1 M4:CJNE R1,#14D,M5 LJMP L1 M5:CJNE R1,#15D,M6 LJMP L1 M6:RET ;返回重新按入新的键号TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H DB 0C6H,0A1H,86H,8EH,0FFH END

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1