您的当前位置:首页正文

简易计算器设计课程设计分析

来源:个人技术集锦
简略计算器设计课程设计剖析

题目名称 课 程名称 学 生姓名 学 号 系 、专业 指

导教师

课程设计(论文)

简略计算器设计 单片机原理及应用

2021年6月24日

1

简略计算器设计课程设计剖析

纲要

本设计是鉴于51系列的单片机进行的十进制计算器系统设计,能够达成计算器 的键盘输入,进行加、减、乘、除 3位无符号数字的简单四那么运算,并在LED上相 訛赛时僂屢閏秘軸齙称貨裝橼謨僉。 应的显示结果。 设计过程在硬件与软件方面进行同步设计。 硬件方面从功能考虑,第一选择内部 储存资源丰富的AT89C51单片机,输入采纳 4×4矩阵键盘。显示采纳 3位7段 共阴极LED动向显示。软件方面从剖析计算器功能、流程图设计,再到程序的编写 进行系统设计。编程语言方体设计以及高效性和功能性对 C语言和汇编语言进行比 尋鏝隐踴銑竇刘鬧繅實珑飽檉断鄖。 较剖析,针对计算器四那么运算算法特别是乘法和除法运算的实现, 采纳汇编语言进行 编程,并用proteus仿真。

态芜熗錙连龕娱覲轫厂刘鋨刭钼統。

重点词:计算器;AT89C51芯片;数码管;矩阵键盘

2

简略计算器设计课程设计剖析

目录

第1章设计说明. ............................................................................... 1 设计要求 .......................................................................................... 1 性能指标. ......................................................................................... 1 设计方案的确定 ................................................................................ 1 第2章单片机主要原理...................................................................... 2 单片机概括 ....................................................................................... 2 单片机最小系统 ................................................................................ 4 七段共阳极数码管 ............................................................................ 5 第3章硬件设计. ............................................................................... 5 键盘电路的设计 ................................................................................ 5 显示电路的设计 ................................................................................ 6 第4章软件设计. ............................................................................... 7 系统设计. ......................................................................................... 7 显示与按键设计 ................................................................................ 9 第5章调试与仿真 ............................................................................ 11 ....................................................................................................... 单片机软件开发系统 ................................................................................... 11 ....................................................................................................... 的操作 ....................................................................................................... 12 第6章心得领会. ............................................................................... 16 参照文件 .......................................................................................... 17 道谢 ................................................................................................. 18 附录程序清单 ................................................................................... 19陰暉鬧穢歿谯栏賜軼膩骧痒團贐儿。 3

简略计算器设计课程设计剖析

第1章设计说明

设计要求

靈飙绣冊壳颛蔥繒樹紜陨儼魇艦奩。 要求能实现小于255的数的加减乘除运算,采纳 4×4键盘,依据输入键的按下 实现不一样的功能,最后结果经过 LED显示。

性能指标

本课程设计的十进制加法计算器的计算范围为 0~255,计算结果全为整数,计

算结果溢出结果不显示。

1.加法:三位加法,计算结果超出 255溢出不显示 2.减法:三位减法,计算结果假定小于零溢出不显示 3.乘法:三位数乘法 4.除法:整数除法 5.有清零功能 设计方案的确定

依据设计要求,本课题需要使用数码管显示和扩展 4*4键盘,因为AT89C51

閡驥缦蹌續办錦匮郟專处苋駒渊瓚。

芯片的I/O口不够多,并且为了硬件电路设计的简单化,应选择串行动向显示和用 P1口扩展4*4键盘,扩展的4*4键盘定义十个数字键,六个功能键,使用串行动向 显示显示运算结果。

主程序进行初始化,采纳队列扫描进行查表得出键值, 每次按键后调用显示子程 序。銷閥饜迁腻饈執錆燭嗩冁刚谤笕驄。 1

4

简略计算器设计课程设计剖析

第2章单片机主要原理

滟賓蟻鈳騮療襤澜枣趸颂鼉绡担剄。 在该课程设计中,主要用到一个AT89C51芯片和串接的共阴数码管。作为该设 计的主要局部,下边将对它们的原理及功能做详尽介绍和说明。

单片机概括

单片机微型计算机是微型计算机的一个重要分支, 也是颇具生命力的机种。单片 机微型计算机简称单片机,特别合用于控制领域,故又称为微控制器。

往常,单片机由单块集成电路芯片构成,内部包含有计算机的根本功能零件:中央办理器、储存器和I/O接口电路等。所以,单片机只要要和适合的软件及外面设施 相联合,即可成为一个单片机控制系统。

单片机经过1、2、3,3代的展开,目前单片机正朝着高性能和多品种方向发 展,它们的CPU功能在加强,内部资源在增加,引脚的多功能化,以及低电压低功 耗。

MSC-51芯片简介:

8051单片机包含中央办理器、程序储存器 (ROM)、数据储存器(RAM)、准时 计数器、并行接口、串行接口和中止系统等几大单元及数据总线、地点总线和控制 总线等三大总线,此刻我们分别加以说明: 〔1〕中央办理器:

中央办理器(CPU)是整个单片机的核心零件,是 8位数据宽度的办理器,能处

理8位二进制数据或代码,CPU负责控制、指挥和调动整个单元系统协调的工作,达成运算和控制输入输出功能等操作。 〔2〕数据储存器(RAM):

8051内部有128个8位用户数据储存单元和128个专用寄存器单元,它们是一致编址的,专用寄存器只好用于寄存控制指令数据,用户只好接见,而不可以用于寄存用户数据,所以,用户能使用的RAM只有128个,可寄存读写的数据,运算的 中间结果或用户定义的字型表。 〔3〕程序储存器(ROM):

8051单片机拥有64KB程序储存器寻址空间,程序储存器内外一致编址,用来寄存用户程序、表格、常数。当引脚EA=1时,程序从内部的程序储存器开始履行,当内部程序储存器中的程序履行完成后,在转向外面的程序储存器。当引脚EA=0 时,程序从外面程序储存器开始履行。統絷鉭罗焘髋譖义圣頇计滿驅謫枨。 2

5

简略计算器设计课程设计剖析

〔4〕并行输入输出(I/O)口:

8051共有4组8位I/O口(P0、P1、P2或P3),用于对外面数据的传输。当 P0口作为通用的I/O接口使用时,漏极处于开路状态,所以需接上拉电阻。 〔5〕全双工串行口:

8051内置一个全双工串行通讯口,用于与其余设施间的串行数据传递,该串行 口既能够用作异步通讯收发器,也能够当同步移位器使用。 〔6〕中止系统:

8051具备较完美的中止功能,有两个外中止、两个准时/计数器中止和一个串行中止,可知足不一样的控制要求,并拥有2级的优先级别选择。 〔7〕MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采纳40Pin封装的双列直接

DIP构造,以下图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中止口线与P3口线复用。此刻我们对这些引脚的功能加以说明:如

单片机引脚

瘫苏種綾閼謅藪兩东藎盘预烟餌蘆。1. VCC电源引脚:GND::电源正〔一般接

2.电源接地端+5V电源〕 RST复位引脚: :复位引脚。当该引脚保持两个机器周期以上的高电平常,单片机即可恢

复初始状态。級釃說廂轸异狽诃锤飆飑话桢债餅。 3

6

简略计算器设计课程设计剖析

3.P0.0-P0.7:P0端口引脚:

P1.0-P1.7:P0口,P2.0-P2.7:P0口,88位双向线。 P3.0-P3.7:P0口,8位双向线。位双向线。 4.XTAL1时钟电路:口,8位双向线。 两头。和XTAL2 :外接晶振引脚。晶振信号直接加在 XTAL1和XTAL2 5.ALE/控制引脚: EA/Vpp 、序储存器中的程序,当片内程序储存器寄存的指令读完后再读外面储存器指令;当〔 31、引脚〕:程序储存器的内外面选通线。当EA/Vpp构成MCS控制总线。 EA=1时,选通内部程 EA=0 ALE:接见外面程序储存控制信号。/ 时,不论片内有无程序储存器,一律读取外面程序储存器程序。〔30引脚〕:地点锁存信号。

齦鴨蹒長飒缠鑽廁鸾灃杀蕢薟镧订。单片机最小系统

单片机最小系统就是支持主芯片正常工作的最小局部,

作的最根本的配置,包含主控芯片、复位电路和晶振电路。如图

单片机最小系统錢炽垆灝嘆鱼楨绻墜銥諑勝筹侬渔。

4

7

是单片机工

简略计算器设计课程设计剖析

七段共阳极数码管 图 七段共阳数码管

图为七段共阳数码管的引脚图,从左到右数码管的段码分别为 a,b,c,d,e,f,g

和小数点dp,低电平常点亮,最右侧为位选端。

第3章硬件设计

嫗饬腸计開櫥禪覷諷粪傧聾膩詘舻。 简略数字计算器系统硬件设计主要包含: 下边分别进行设计。

键盘电路的设计

键盘电路,显示电路以及其余协助电路。

键盘可分为两类:编码键盘和非编码键盘。编码键盘是许多按键〔 20个以上〕 和专用驱动芯片的组合,当按下某个按键时,它能够办理按键颤动、连击等问题,直 接输出按键的编码,无需系统软件干涉。通用计算机使用的标准键盘就是编码键盘。 当系统功能比较复杂,按键数目好多时,采纳编码键盘能够简化软件设计。但大部分智能仪器和电子产品的按键数目都不太多〔20个之内〕,为了降低本钱和简化电路通 常采纳非编码键盘。非编码键盘的接口电路有设计者依据需要自行决定,按键信息经过接口软件来获得。本课题需要的是16个按键,应选择用非编码键盘。拧釓荣鉤喾坞擷飨陈贷铱闶巩曄伧。

5

8

简略计算器设计课程设计剖析

计算器输入数字和其余功能按键要用到好多按键, 假如采纳独立按键的方式,在 这类状况下,编程会很简单,可是会占用大批的 I/O口资源,所以在好多状况下都不 采纳这类方式,而是采纳矩阵键盘的方案。矩阵键盘采纳四条 I/O线作为行线,四条 I/O线作为列线构成键盘,内行线和列线的每个交错点上设置一个按键。这样键盘上 按键的个数就为4×4个。这类队列式键盘构造能有效地提升单片机系统中 I/O口的 利用率。

矩阵键盘的工作原理:计算器的键盘布局如图五所示:一般有 16个键构成,在 单片机中正好能够用一个 P1口实现16个按键功能,这类形式在单片机系统中也最 常用。

详细电路连结如图 所示:

图3.14*4 键盘接口电路

显示电路的设计

彎锷磯煬奧檜諾数臍谗掙奐矚骤队。 当系统需要显示少许数据时,采纳LED数码管进行显示是一种经济适用的方法。 数码管显示有静态显示和动向显示两种方法。 为了减少端口的使用,应选择动向显示。 电路以以下图所示:

三位数码管显示电路

6

9

简略计算器设计课程设计剖析

第4章软件设计

系统设计

〔1〕系统模块图

镍誅撷摯弯貰缂從脏贰褴撳铆坚掙。 在十进制加法计算器的软件规划要求下, 简略计算器的程序主要包含以下功能模 块:〔1〕主模块,为系统的初始化。〔2〕显示与读键模块,分为判键程序段、运算 操作子程序、显示子程序等局部;

单片机

输入模块

运算模块

7

10

简略计算器设计课程设计剖析

显示模块

图 系统模块图

此系统包含输入、运算和显示模块,由单片机控制。此中经过输入键盘模块将数

字0~9和运算符号“+〞、“-〞、“*〞、“/〞输入单片机进行运算;运算模块分别依据输入的运算符进行加减乘除运算;显示模块将运算后的数值经过动向扫描使之在数码管上输出。 〔2〕系统总流程图

主程序主假如用来进行初始化的,调用其余子程序,清空各个标记位,清空缓存区,读取键码,判断功能,在LED上作出回应,主程序流程图以以下图。 1.数字送显示缓冲程序设计

简略计算器所显示的数值最大位三位。 要显示数值,先判断数值大小和位数,如 果是超出三位或大于255,将不显示数字。可从头输入数字,再次计算。 2.运算程序的设计

第一初始化参数,送LED三位显示“0,〞其余位不显示。而后扫描键盘看能否有键

输入,假定有,读取键码。判断键码是数字键、清零键仍是功能键,是数值键那么送 LED显 示并保留数值,是清零键那么做清零办理,是功能键那么又判断是“=还〞是运算键,假定是“=〞 那么计算最后结果并送LED显示,假定是运算键那么保留相对运算程序的首地点。

債钒剄厂鉤坞荞縮蛺钮膩递貢鐃婁。 开始

从初始化参数 LED显示

据计算结果

功能键否

按键输入?

依据上一次功能键和输入的数

读取按键

剖析键值

8

保留结果和功能键

结果送显示缓存 11

简略计算器设计课程设计剖析

数字键 请零键

数值显示中

图 主程序流程图

等候数值输入

显示与按键设计

〔1〕LED显示程序设计

LED显示器由七段发光二极管构成,摆列成 8字形状,所以也称为七段LED显

示器。为了显示数字或符号,要为LED显示器供给代码,即字形代码。七段发光二极管,再加上一个小数点位,合计8段,所以供给的字形代码的长度正好是一个字节。简略计算器用到的数字0~9的共

阳极字形代码以下表:

塵鈉击镰鸢縟裥视積餍横绑坞籠环。

表1 共阳极数码管段码比较表

显示字型

g 0 0 1 1 1 1 1 0 1

f 1 0 0 0 1 1 1 0 1

e 1 0 1 0 0 0 1 0 1

d 1 0 1 1 0 1 1 0 1

c 1 1 0 1 1 1 1 1 1

b 1 1 1 1 1 0 0 1 1

a 1 0 1 1 0 1 1 1 1

段码

0 1 2 3 4 5 6 7 8

0c0h 0f9h 0a4h 0b0h 99h 92h 82h 0f8h 80h

9

12

简略计算器设计课程设计剖析

9 1 1 0 1 1 1 1 90h

〔2〕读键子程序设计 为了实现键盘的数据输入功能和命令办理功能, 每个键都有其办理子程序,为此 每个键都对应一个码——键码。为了获得被按键的键码,现使用行扫描法辨别按键。 其程序框图如图。 矩阵按键扫描程序是一种节俭 I/O口的方法,按键数目越多节俭I/O口就越可观, 思路:先判断某一列〔行〕能否有按键按下,再判断该行〔列〕是那一只键按下。 本键盘扫描程序的长处在于:不用特意的按键延时程序,提升了 CPU效率,也 不用中止来扫描键盘,节俭了硬件资源。此外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或许无键按下都能够在很短的时间达成一次扫描。 读键程序使用的是反转法读键, 不论键盘矩阵的规模大小,均进行两次读键。第 一次所有列线均输出低电平,从所有读入键盘信息〔行信息〕;第二次所有行线均输出低电平,从所

有行线读入键盘信息〔列信息〕。将两次读键信息进行组合就能够获得按键的特点编码,而后经过查表获得按键的次序编码。将各特点编码按希望的次序排成一张表,而后用目前读得的特点码来查表。当表中有该特点码时,它的地点就是对应的次序编码;当表中没有该特点码时,说明这是一个没有定义的键码,与没有按键〔0FFH〕同样对待。

怆產員洶恋鹽墙馈媪騍龇魴谍痪絲。 开始

初始化地点参数

输出列扫描信号 列扫描信号移位 读入行信号

该列有输入

10

13

简略计算器设计课程设计剖析

4

依据队列计算键值 查表得键码

5 列扫描完?

开始

图计算键值子程序流程图

第5章调试与仿真 下边用KEIL uVision3与proteus仿真软件介绍十进制加法计算器的仿真与调 试。

单片机软件开发系统

〔1〕系统的整体构造

返回

等候按键得键码 C51工具包的整体构造中,此中 uVision是C51forWindows的集成开发

环境

(IDE),能够达成编写、编译、连结、调试、仿真等整个开发流程。开发人员可用IDE自己或其余编写器编写C或汇编源文件。而后分别由C51编译器编译生成目标文

(.OBJ)。目标文件可由LIB51创办生成库文件,也能够与库文件一同经L51连

结定位

生成绝对目标文件(.ABS)。ABS文件由OH51变换成标准的Hex文件,以供调试器

dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目

标板进行

调试,也能够直接写入程序存贮器如

EPROM中。

〔2〕采纳KEIL开发的89c51单片机应用程序步骤:

1.在uVision集成开发环境中创办新工程〔Project〕,扩展文件名为.UV2,并

为该工程选定适合的单片机CPU器件〔本设计采纳ATMEL企业下的

AT89C51〕

2.用uVision的文本编写器编写源文件,能够是汇编文件〔.ASM〕,也能够使C

语言文件〔扩展名.C〕,并将该文件增添到工程中去。一个工程文件能够包含多镌貞阈骠沥鳖

蓥卤鲎矶辎愾廣栊獭。 11

14

简略计算器设计课程设计剖析

个文件,除了源程序言件外,还能够是库文件、头文件或文本说明文件。 3.经过uVision3的有关选择项,配置编译环境、连结定位器以及 Debug调 试器的功能。

4.对工程中的源文件进行编译连结,生成绝对目标代码和可选的 HEX文件, 假如出现编译连结错误那么返回到第 2步,改正源文件中的错误后重构整个工程。 5.对没有语法错误的程序进行仿真调试,调试成功后将 HEX文件写入到单片 机应用系统的ROM中。

塋摯臘怄欢筹矾揚祷桧缒縫琼懟顫。

的操作

〔1〕硬件电路图的接法操作 1.搁置选择〔删除〕元器件 2.挪动元器件 3.缩放视图 4.连结导线 5.仿真,调试

〔2〕简略计算器设计原理图

嗫单穷藓鳖語噸轄笋綱輿诺钳過飞。 图简略计算器原理电路图

12

15

简略计算器设计课程设计剖析

为三步:

1.在ISIS平台长进行单片机系统电路设计、选择元器件、接插件、连结电路和电气检测等,简称

Proteus电路设计。

2.在Keil平台长进行单片机系统程序设计、编写、汇编编译、代码级调试,最 后生成目标代码文件〔*.hex〕。简称Proteus源程序设计和生成目标代码文件。 3.在ISIS平台大将目标代码文件加载到单片机系统中,并实现单片机系统的实 仿真。

在Proteus中将硬件电路所有接好此后,将Keil中生成的.hex文件导入到单片机中,点击开始仿真按钮,电路开始仿真。能够察看到:数码管显示“000〞;分别挨次按下按键“5〞、“+〞、“6〞和“=〞,能够看到数码管显示“11〞;也能够分别调试其余功能键,结果发现调试结果与预期的理论

值相符合,即本次课设已成功。

时交互、共同仿真。它在相当程度上反应了实质单片机系统的运转状况。

简称Proteus

Proteus强盛的单片机系统设计与仿真功能, 使它可成为单片机系统应用开发和 改进手段之一。所有过程都是在计算机上经过 Proteus来达成的。其过程一般也可分

〔3〕单片机系统PROTEUS设计与仿真过程

仿真结果以下:

13

图5.2 4+5的仿真结果镞黄轩啮劳觀戋鬢瀏蜕纜缳鸚颟赌。 16

简略计算器设计课程设计剖析

图的仿真结果

图5.421*10的仿真结果

14

17

简略计算器设计课程设计剖析

图的仿真结果

计算器清零

15

18

简略计算器设计课程设计剖析

第6章心得领会

刚开始接到这个计算器的课程设计任务时, 因为从前做过近似的题目,于是在脑 海中初步建立了编写程序的一些控制程序。 可是因为缺少编写大批程序的经验,

不可以

如行云流水般的将所有的各局部代码写出, 于是去网上查找有关资料,认识计算器的

输入控制原理、运算办理以及显示的原理。认识以后自己试试编写程序 ,经过三四天

的辛苦工作,终于初步把所需要的程序编好了, 于是就进行仿真,在仿真时期也发

了很多错误,根本上都是平常简单犯的错误,比方忘掉了子程序标号、死循环程序、

标点符号的漏写等。经过频频的编译过错,仿真编译通事后,于是开始在 Proteus中

连硬件电路,所有接完电路以后将 .Hex文件导入进行仿真,发现软件与硬件不可以够

对应协调工作,于是分别对软件和硬件进行检查, 经过频频的仿真调试,并且在同学

的帮助和自己对每个子程序进行仿真察看下, 终于在课设快结束时成功的调试出结果 了。这就是我这两周课程设计的经过,看似简单,过程却波折艰辛。

经过此次课程设计,我进一步娴熟了对Proteus软件的操作。在编写程序的过程中,碰到了好多问题,使我发现自己从前学习上存在的缺少,对从前所学过的知识理解

19

简略计算器设计课程设计剖析

得不够深刻,掌握得不够坚固,对单片机汇编语言掌握得不够好。经过与同学商讨和讨教老师,终于把问题都解决了,并加深了对计算器工作的原理的认识。同时也掌握了做课程设计的一般流程,为此后的设计累积了必定的经验。做课程设计时,先查赚脑銑麦绦骂鲱缬鐓斬诗鹜啬栎润。

16

20

简略计算器设计课程设计剖析

阅有关知识,把原理吃透,确立一个大的设计方向,在依据这个方向分模块的把要实现的功能用流程图的形式展现。学会了怎么样去拟订方案,怎么样去实现这个方案,

并掌握了在履行过程中怎么样去战胜心理上的不良情绪。总之,经过此次的设计,进一步认识了单片微型计算机及应用原理,收获很大,对软件编程、排错调试、查阅资料等方面获得较全面的锻炼和提升。

同时经过本次课程设计的学习,掌握了一种系统的研究方法,能够进行一些简单的编程,我还深深的领会到设计课的重要性和目的性所在。为了达成工程,在网络上找到了很多有关的资料,大大扩大自己的知识面,使很多从前想解决却没法解决的困难水到渠成。将书籍上的理论知识和实质有机地联合起来,

理论中得出结论。锻炼了实质剖析问题和解决问题的能力,提升了适应实质的能力,为此后的学习和实践打下了优秀的根基。此次课设还坚固和综合运用所学过的原理知识,进而提升自己的实质着手能力和独立思虑的能力。

参照文件

兩謝顼厢从禅藓餛锗鴰砻篩挠滩鸣。 [1] 周航慈.单片机应用程序设计技术〔订正版〕.北京航空大学第一版社 [2] 江世明、黄同成.单片机原理及应用.中国铁道第一版社 [3] 张志良.单片机原理与控制技术.第2版.机械工业第一版社

[4] 康华光.电子技术根基〔第5版〕.高等教育第一版社第一版,2006 [5] 蒋力培.单片微机系统适用教程(第1版).机械工业第一版社

[6] 姜志海、刘连鑫.单片微型计算机原理及应用.电子工业第一版社,2021導时窺鸲峦怅骚駁懨搅跡恶屆颠爭。

17

21

简略计算器设计课程设计剖析

道谢

为期两周的单片机课程设计终于结束了,经过紧张的工作,达成了我的设计任务简略计算器设计。总的来说,此次课程设计是比较成功的。自然,这此中也经历了很多崎岖,可是在我的坚韧不拔下,在老师的仔细指导下,在同学们的热忱帮助下,最后战胜了各种困难,获得了成功。在此,我特别感谢刘伟春老师对我此次课程设计的指导,在老师的教育下,我不单学到了有关这个课题的有关知识,并且更重要的是学到了一种学习方法。假如说刘老师的指导为我此次课程设计指了然大方向,那么同学就在细节上给了我很大的帮助,主假如帮我改论文格式和程序中的小错误。老师的指导和同学的帮助给了我很大鼓舞,是我此次课程设计得以达成的巨大动力。经过本次课程设计也让我理

解了团结的重要性,在此再一次感谢刘老师的指导和同学的帮助。瓔駕侠區潋铜环鳄聽臨隐潛讷轆缯。 18

22

简略计算器设计课程设计剖析

附录

程序清单 YJ EQU YJ1 EQU GONG

EQU

ORG START: MOV

MOV MOV MOV

MOV MLOOP:CALL WAIT:

CALL JZ CALL INC

CJNE

50H 51H 52H 00H R3,#0 GONG,#0 32H,#00H 33H,#00H 34H,#00H DISP TESTKEY WAIT GETKEY R3

A,#0,NEXT1

;结果寄存 ;中间结果寄存 ;功能键寄存

;初始化显示为空 ;调显示子程序 ;判断有无按键

;读键

;按键个数

;判断能否数字键

19

23

简略计算器设计课程设计剖析

LJMP NEXT1: CJNE

LJMP NEXT2: CJNE

LJMP NEXT3: CJNE

LJMP NEXT4: CJNE

LJMP NEXT5: CJNE

LJMP NEXT6: CJNE

LJMP NEXT7: CJNE

LJMP NEXT8: CJNE

LJMP NEXT9: CJNE

LJMP NEXT10:CJNE

LJMP NEXT11:CJNE

LJMP NEXT12:CJNE

LJMP NEXT13:CJNE

LJMP NEXT14:CJNE

LJMP NEXT15:LJMP E1:

CJNE

E1

A,#1,NEXT2 E1

A,#2,NEXT3 E1

A,#3,NEXT4 E1

A,#4,NEXT5 E1

A,#5,NEXT6 E1

A,#6,NEXT7 E1

A,#7,NEXT8 E1

A,#8,NEXT9 E1

A,#9,NEXT10 E1

A,#10,NEXT11 E2

A,#11,NEXT12 E2

A,#12,NEXT13 E2

A,#13,NEXT14 E2

A,#14,NEXT15 E2 E3 R3,#1,N1

20

24

;; 转数字键办理;

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 判断能否功能键; ; 转功能键办理

; ; ; ; ; ; ; ; ; ; ; ; ;

判断能否去除键 ; 判断第几次按键

简略计算器设计课程设计剖析

N1:

N2:

N3: E11:

E12:

E13:

LJMP CJNE LJMP CJNE LJMP LJMP MOV MOV MOV MOV LJMP MOV MOV MOV MUL ADD MOV MOV MOV MOV LJMP MOV MOV MOV MUL JB ADD JB MOV MOV MOV

E11 R3,#2,N2 E12 R3,#3,N3 E13 E3 R4,A 34H,A 33H,#00H 32H,#00H MLOOP R7,A B,#10 A,R4 AB A,R7 R4,A 32H,#00H 33H,34H 34H,R7 MLOOP R7,A B,#10 A,R4 AB OV,E3 A,R7 CY,E3 R4,A 32H,33H 33H,34H

;为第一个数字

;为第二个数字

;为第三个数字 ;第四个数字转溢出 ;输入值暂存R4 ;输入值送显示缓存 ;等候再次输入 ;个位数暂存R7

;十位数

;输入值存R4 ;输入值送显示缓存 ;输入溢出

;输入溢出

;输入值送显示缓存

21

25

简略计算器设计课程设计剖析

MOV LJMP 34H,R7 MLOOP

E3:

E2:

N21:

N22:

N23:

N24:

N25: N4: FIRST:

MOV MOV MOV MOV MOV MOV MOV LJMP MOV MOV MOV MOV MOV MOV CJNE LJMP CJNE LJMP CJNE LJMP CJNE LJMP CJNE LJMP LJMP LJMP MOV MOV LJMP

R3,#0 R4,#0 YJ,#0 GONG,#0 32H,#00H 33H,#00H 34H,#00H MLOOP 34H,#00H 33H,#00H 32H,#00H R0,GONG GONG,A A,R0 A,#10,N21 JIA A,#11,N22 JIAN

A,#12,N23

CHENG A,#13,N24 CHU A,#0,N25 FIRST DEN E3 YJ,R4 R3,#0 DISP1

;按键次数清零 ;输入值清零 ;计算结果清零 ;功能键设为零 ;显示清空

;与上一次功能键互换

;判断功能键

;\"+\"

;\"-\"

;\"*\"

;\"/\"

;初次按功能键

;\"=\"

;输入值送结果 ;按键次数清零 ;结果办理

22

26

简略计算器设计课程设计剖析

JIA:

MOV ADD JB MOV MOV

LJMP JIAN:

MOV SUBB JB MOV MOV

LJMP CHENG:MOV

MOV

MOV MUL JB MOV

LJMP CHU:

MOV MOV

MOV DIV MOV MOV

LJMP DEN:

MOV

LJMP DISP1:

MOV

MOV

DIV

A,YJ A,R4 CY,N4 YJ,A R3,#0 DISP1 A,YJ A,R4 CY,N4 YJ,A R3,#0 DISP1 A,YJ B,A A,R4 AB OV,N4 YJ,A DISP1 A,R4 B,A A,YJ AB YJ,A R3,#0 DISP1 R3,#0 DISP1 B,#10 A,YJ AB

;上一次结果送累加器 ;上一次结果加输入值 ;溢出 ;存本次结果 ;按键次数清零

;上一次结果减输入值 ;负数溢出

;上一次结果乘输入值 ;溢出

;上一次结果除输入值 ;结果送累加器 ;结果除10

23 27

简略计算器设计课程设计剖析

MOV MOV MOV MOV JZ MOV MOV DIV MOV MOV MOV MOV JZ

MOV DISP11:LJMP DISP: MOV DIR1:

MOV MOV MOVC MOV CJNE SETB CALL CLR DEC

SJMP DIR2:

CJNE SETB CALL

CLR

DEC

YJ1,A A,B 34H,A A,YJ1 DISP11

B,#10 A,YJ1 AB YJ1,A A,B 33H,A A,YJ1 DISP11 32H,A MLOOP R0,#34H

DPTR,#SEGTAB A,@R0 A,@A+DPTR P0,A R0,#34H,DIR2

D1MS

R0 DIR1

R0,#33H,DIR3

D1MS

R0

24

28

暂存\"商\" 取个位数

个位数送显示缓存

结果能否为一位数

十位送显示缓存

;

结果能否为二位数 ; 百位数送显示缓存

简略计算器设计课程设计剖析

SJMP SETB CALL CLR RET MOV MOV DJNZ DJNZ RET

DIR1 D1MS R7,#02H R6,#0F0H R6,$ R7,DMS

DIR3:

D1MS: DMS:

SEGTAB:DB 0C0H, 0F9H, 0A4H, 0B0H DB 99H, DB 80H,

92H, 90H,

82H, 88H,

0F8H 83H 8EH

DB 0C6H, 0A1H, 86H,

TESTKEY:ACALL DISP

MOV MOV CPL ANL RET

KEYTABLE:

DB DB DB DB

GETKEY:MOV

ACALL MOV MOV CJNE LJMP

P1,#0FH A,P1 A A,#0FH

;读入键状态

;高四位不用

0EEH,0EDH,0DDH,0BDH 0EBH,0DBH,0BBH,0E7H 0D7H,0B7H,0DEH,0BEH 07EH,07DH,07BH,077H

R6,#10 DELAY P1,#0FH A,P1 A,0FH,K12 MLOOP

25

;键码定义

;读键子程序

29

简略计算器设计课程设计剖析

K12:

K13:

K14:

K15:

K16:

MOV MOV MOV CJNE MOV MOV CJNE MOV MOV CJNE MOV MOV CJNE LJMP ANL ORL MOV MOV MOV MOV MOV MOVC CJNE MOV MOV CJNE MOV ACALL MOV RET INC

B,A P1,#0EFH A,P1

A,#0EFH,K13 P1,#0DFH A,P1

A,#0DFH,K13 P1,#0BFH A,P1

A,#0BFH,K13 P1,#07FH A,P1

A,#07FH,K13 MLOOP A,#0F0H A,B B,A R1,#16

R2,#0

DPTR,#KEYTABLE A,R2 A,@A+DPTR A,B,K16 P1,#0FH A,P1 A,#0FH,K15 R6,#10 DELAY A,R2 R2

26

30

简略计算器设计课程设计剖析

DJNZ R1,K14

AJMP MLOOP ;10ms延时子程序

DELAY: MOV R7,#10 TS1: MOV R6,#0FFH TS2: NOP NOP DJNZ R6,TS2 DJNZ R7,TS1 RET

END紺欄揿俣跃侧钶蛰嚴类詁進铟细窯。27

31

因篇幅问题不能全部显示,请点此查看更多更全内容