简易计算器完整课程设计

简易计算器完整课程设计
简易计算器完整课程设计

一、设计要求

1.设计4*4的键盘,其中10个数字键0~9,第十三个键为”+“,第十五个键为”=“

2 ,实现1位数的简单加运算

二、硬件系统设计

1、LED接口电路

简易计算器需要2位8段码LED显示电路。用LED显示器,用8255A的A口作为段码(字形代码)数据口,PB0和PB1作为位控制端口。然后接至各数码显示器的共阴极端。

2、键盘接口电路

简易计算器需要4*4的行列式键盘。8255A的B口作为输出端,C口作为输出端。采用的是方式0。

3、计算器逻辑电路图

将LED接口电路和键盘接口电路结合到一起就是简易计算器的逻辑电路图逻辑电路结构如下:

Cpu 8255 键盘

三、软件设计

1、LED 显示程序设计

LED 显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED 显示器,器排列形状如下图所示:

为了显示数字或符号,要为LED 显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阴极字形代码如下表:

0~9七段数码管共阴级字形代码

显示字型

g

f

e

d

c

b

a

段码

Pb0-Pb7

Pa0-Pa4

Pc0-Pc4

D0-D7 wr

rd

A0-A1

cs

Xd0-Xd7

Iow# Ior#

Xa1Xa2 Ioy3 A0-Dp

x0-x3

m1-m4

001111113fh

1000011006h

210110115bh

310011114fh

4110011066h

511011016dh

611111017dh

7000011107h

811111117fh

911011116fh 2位LED显示的程序框图如下:

2、读键输入程序设计

为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图如下:

3、主程序设计

(1)数值送显示缓冲程序设计

简易计算器所显示的数值最大位为一位。

(2)运算主程序设计

首先初始化参数,送LED低位显示“0”,高位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、还是功能键(“+”“=”),是数值键则送LED显示并保存数值,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。运算主程序框图如下所示:

4、简易计算器源程序

con8255 equ 06c6h ;8255的控制端口的物理号c8255 equ 06c4h ;C端口的端口号

b8255 equ 06c2h ; B端口的端口号

a8255 equ 06c0h ; A端口的端口号

data segment

list DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H ;对应数字的显示码

keycode DB 0EEH, 0DEH, 0BEH, 7EH

DB 0EDH, 0DDH, 0BDH, 7DH

DB 0EBH, 0DBH, 0BBH, 7BH

DB 0E7H, 0D7H, 0B7H, 77H

;对应键的特征值(键盘识别码)

num1 dw 0 ;偏移量

x DB 0FFH ;存放参与运算的第一个数

y DB 0FFH ;存放运算符

z DB 0FFH ;存放参与运算的第二个数

re DB 0FFH ;存放运算结果

data ends

sstack segment stack

ssda db 100 dup(?)

sstack ends

code segment

assume cs:code, ds:data

start: mov ax, data

mov ds, ax

call init8255 ;初始化8255 ispk:

call clear ;B端口清零

call ispkey ;判断是否有建按下and al, 0fh

cmp al, 0fh

je ispk

call findkeyboard

call dispnum

cmp num1, 14

je js1

call cunshu

相关主题
相关文档
最新文档