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

  • 9
  • 0
  • 约 16页
  • 2017-03-06 发布于贵州
  • 举报
单片机课程设计_简易计算器

4×4键盘的简易计算器和LED数码管的显示 1、设计要求 1、2、3、Proteus 7仿真工作的全过程。 4、5、4×4矩阵式键盘程序识别原理,掌握4×4矩阵式键盘按键的设计方法。 2、设计思想 2.1 硬件设计思想 用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.7各管脚作输入线,以单片机的P2.0-P2.7和P0.0—P0.7各管脚作输出线,在数码管上显示每个按键 “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”,然后判断列线Y0—Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0—Y3不全为1,说明有键按下。 (2)消抖处理 当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采用时间延时0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的计算。 (3)判别键号 先判断行线X0—X3是否有输出低电平“0”,若有键按下,则相应的列线也为低电平“0”,例如行线X1输出为低电平“0”,且列线Y2为低电平,即X1与Y2相交的键被按下,进行键号 行号*4+列号 的计算。 (4)显示结果 显示器接高电频,左边显示器接P0,右边显示接P2,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为几点几,为高电频则几十几。其它运算直接看数据即可。 3、电路原理与电路图 3.1 电路原理 单片机最小系统。一个AT89C51单片机做为控制电路,运用其P0、P1口来控制数码管和键盘,通过P0和P2口来显示键值(0~9)3.2 电路原理图 图3.1 电路原理图 4、流程图与算法描述 4.1 流程图 图4.1 主程序流程图 图4.2 延时子程序流程图 4.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 RET 2、仅实现十进制的加减乘除运算。CJNE是判断两个数是否相等,不想等则转移,代码段如下: 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 ;返回重新按入新的键号 5、仿真结果 5.1 仿真结果 1、加法仿真如下:(1加2) 图5.1 加法仿真结果图 图5.2 加法仿真结果图 2、减法仿真如下: 2减3 图5.3 减法仿真结果图 图5.4 减法仿真结果图 3、乘法仿真如下:( 图5.5 乘法仿真结果图 申 图5.6 乘法仿真结果图 4、除法仿真如下:(2除以4) 图5.7 除法仿真结果图 图5.8 除法仿真结果图 5、复位仿真如下: 图5.10复位仿真结果图 6、源程序 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中即个位 CJNE A,#00H,L8 ; 判断十位是否为0,不为0跳转 MOV

文档评论(0)

1亿VIP精品文档

相关文档