- 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)