基于51单片机的简易计算器设计

  • 格式:doc
  • 大小:3.97 MB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013 - 2014 学年_一_学期

山东科技大学电工电子实验教学中心

创新性实验研究报告

实验项目名称__基于51单片机的简易计算器设计_

2013 年12 月27 日

四、实验内容

2、实验内容

(一)、总体硬件设计

本设计选用AT89C52单片机为主控单元。显示部分:采用六位LED动态数码管显示。按键部分:采用2*8键盘;利用2*8的键盘扫描子程序,读取输入的键值。

(二)、键盘接口电路

计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用两条I/O 线作为行线,八条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为2×8个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。

矩阵键盘的工作原理:

计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口和另一个P口的两个管脚实现16个按键功能,这种形式在单片机系统中也最常用。

矩阵键盘布局图:

矩阵键盘内部电路图如下图所示:

(三)、LED显示模块

本设计采用LED数码显示来显示输出数据。通过D0-D7引脚向LED写指令字或写数据以使LED实现不同的功能或显示相应数据。

(四)运算模块(单片机控制)

MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。

单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。

详细算术运算程序设计流程图:

五、实验结果与分析

1、实验现象、数据记录

经过反复测试调整,该计算器可简单进行100以内的加减乘除计算,以及清零功能,结果能保留小数点后一位,能显示计算结果的正负,完成了实验要求。

测试结果记录:

加法运算:15+23=38

减法运算:65-22=43

乘法运算:12*51=612

除法运算:99/23=4.3

2、对实验现象、数据及观察结果的分析与讨论:

该实验达到了实验的基本要求,但是需要改进和提高的还有很多,设计的计算器能进行100以内的加减乘除计算,以及清零功能,结果能保留小数点后一位,能显示计算结果的正负,但是只能进行两个操作数的操作,而不能进行连续计算,比如连加、连乘,并且不能进行有符号数的计算,即输入的两个操作数必须是正号的,也不能输入带小数点的操作数,对此,我会课下继续对它进行研究改进,争取做出具有更多功能的更先进的计算器。

六、实验结论

七、指导老师评语及得分:附件:源程序等。

YS EQU 20H ;第一个数十位YG EQU 21H ;第一个数个位ERS EQU 22H ;第二个数十位EG EQU 23H ;第二个数个位YI EQU 24H

ER EQU 25H JF EQU 26H ;结果负号位JQ EQU 27H ;结果千位JBA EQU 28H ;结果百位JS EQU 29H ;结果十位JG EQU 30H ;结果个位JX EQU 31H ;结果小数位

JG1 EQU 32H

ORG 0000H

MAIN: MOV 20H,#00H

MOV 21H,#00H

MOV 22H,#00H

MOV 23H,#00H

MOV 24H,#00H

MOV 25H,#00H

MOV 26H,#0C0H

MOV 27H,#00H

MOV 28H,#00H

MOV 29H,#00H

MOV 30H,#00H

MOV 31H,#00H

MOV 32H,#00H ONE1: CLR C

ACALL KEYSCAN

JB PSW.5,ONE1

CJNE A,#11,ONE11

SJMP MAIN

ONE11:CJNE A,#10,ONE12 SJMP ONE1

ONE12:JNC ONE1

MOV 21H,A

ACALL DELAY ONE2: ACALL XS1

ACALL KEYSCAN

JB PSW.5,ONE2

CJNE A,#11,ONE22

SJMP MAIN

ONE22:CJNE A,#10,ONE23 SJMP ONE2

ONE23:JNC ONE31

MOV 20H,21H

MOV 21H,A

ACALL DELAY

ONE3: ACALL XS2

ACALL KEYSCAN

JB PSW.5,ONE3

CJNE A,#11,ONE33

SJMP MAIN

ONE33:CJNE A,#10,ONE30 ACALL DELAY

ACALL XS1

SJMP ONE3

ONE30:JC ONE3

ONE31: MOV R5,A ;R5为符号位,表示加或减或乘或除

ONE4: ACALL XS2

ACALL KEYSCAN

JB PSW.5,ONE4

CJNE A,#11,ONE44

SJMP MAIN

ONE44:CJNE A,#10,ONE45

SJMP ONE4

ONE45:JNC ONE4

MOV 23H,A

ACALL DELAY

ONE5: ACALL XS4

ACALL KEYSCAN

JB PSW.5,ONE5

CJNE A,#11,ONE55

LJMP MAIN

ONE55:CJNE A,#10,ONE56

SJMP ONE66

ONE56:JNC ONE5

MOV 22H,23H

MOV 23H,A

ACALL DELAY

ONE6: ACALL XS5

ACALL KEYSCAN

JB PSW.5,ONE6

CJNE A,#11,ONE66

LJMP MAIN

ONE66:CJNE A,#10,ONE6

ACALL GN

ONE61:ACALL KEYSCAN

JB PSW.5,ONE60

LJMP MAIN

ONE60:ACALL XS3

SJMP ONE61

KEYSCAN:LCALL KAP ;扫描键子程序JNZ KP1

SETB PSW.5 ;置无键标志

RET

KP1:LCALL DEL Y ;去抖

LCALL KAP ;再次扫描键盘

JNZ KP2 ;转识键码程序