8279实现的两位数加减乘除计算器实验报告.docx
- 文档编号:1694046
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:33
- 大小:767.12KB
8279实现的两位数加减乘除计算器实验报告.docx
《8279实现的两位数加减乘除计算器实验报告.docx》由会员分享,可在线阅读,更多相关《8279实现的两位数加减乘除计算器实验报告.docx(33页珍藏版)》请在冰点文库上搜索。
8279实现的两位数加减乘除计算器实验报告
中国矿业大学
计算机科学与技术学院
硬件课程设计报告
专业:
计算机科学与技术
班级:
设计题目:
简单计算器
成员:
指导教师:
职称:
2012年10月12日
简单计算器
1.设计任务与要求………………………….
2.8279可编程设置型键盘/显器介绍………
18279特点………………………………………………………………..
28279引脚说明……………………………………………………………
38279结构…………………………………………………………………..
48279的控制字………………………………………………………………
3.硬件连接及初级设计说明……………
1硬件连接……………………………………………………………………
2计算功能…………………………………………………………………..
3输入功能…………………………………………………………………
4三个模块…………………………………………………………………..
5LED发光显示…………………………………………………………….
4.程序流程图…………………………………
1键盘读数流程图……………………………………………………………..
2程序处理流程图……………………………………………………………..
3显示程序流程图……………………………………………………………..
4计算过程流程图………………………………………………………………
5总程序流程图………………………………………………………………..
5.程序设计…………………………………..
1代码…………………………………………………………………………
6.收获与会…………………………………..
7.参考文献……………………………………
硬件课程设计总体报告
选题:
电子计算器
1.设计任务与要求
1.1设计概况
1设计人员:
2设计目标:
通过汇编语言编程,再利用硬件课程实验箱实现计算器功能。
包括带符号的两位数的加减乘除运算。
3主要工具:
硬件课程设计实验箱(8279),HK88TE软件等。
4设计思路:
了解设计软件,学习8279的各个方面的知识,了解硬件课程设计试验箱,编写代码,联机,实现计算器,调试,总结。
5学习交流
1.2设计需求分析
1计算器基本功能为:
1具有加、减、乘、整除的基本计算功能;
2完成两位数运算
3能够显示按下的数字及计算结果,运算数和结果应小于255;
4应用模块化程序设计的思想,计算及排错功能的实现由计算程序模块实现,显示按下的数字和结果由键盘录入程序模块和显示程序模块实现,各个模块由主程序联系在一起。
5实现简单报错功能,包括数据溢出报错、不符合计算逻辑报错、输入报错,除法报错;
6能够完成负数运算。
2特殊说明
2.2.1该计算器只针对两位整数设计,并且不能显示算式,不支持连续输入,对于除法运算,只取整除商和余数,不显示小数。
2.2.2.使用人员需了解一定的汇编知识。
1.3设计任务与要求
利用芯片8279控制键盘和LED,对每一次的键盘输入检查其对应的字符并作出相应操作,其结果体现在LED。
比如:
用户输入连续数字时,按用户输入的顺序依次显示在LED上;当用户输入加法操作时,LED不变化;当用户再输入第二个数时,再次依次体现在LED上;按“等于号”时其运算结果显示在LED上。
其操作过程与体验与现在普遍使用的计算器相同。
2.8279可编程设置型键盘/显器介绍
1.11.8279特点
(1)可同时进行键盘扫描及文字显示;
(2)键盘扫描模式(ScannedKeyboardMode);
(3)传感器扫描模式(ScannedSensorMode);
(4)激发输入模式(StrobeInputEntryMode);
(5)8乘8键盘FIFO(先进先出);
(6)具有接点消除抖动,2键锁定及N键依此读出模式;
(7)双排8位数或双排16位数的显示器;
(8)右边进入或左边进入。
16位字节显示存储器。
1.22.8279引脚说明
<1>DB0~DB7:
双向数据总线。
在CPU与8279间做数据与命令传送。
<2>CLK:
8279的系统时钟,100KHz为最佳选择。
<3>RESET:
复位输入线。
输入HI时可复位8279。
<4>CS:
芯片选择信号线。
当这个输入引脚为低电平时,可将命令写入8279或读取8279的数据。
<5>A0:
缓冲器地址选择线。
A0=0时,读写一般数据;A0=1时,读取状态标志位或写入命令。
<6>RD:
读取控制线。
RD=0时,8279输送数据到外部总线。
<7>WR:
写入控制线。
WR=0时,8279从外部总线接收数据。
<8>IRQ:
中断请求。
平常IRQ为LO,在键盘模式下,每次读取FIFO/SENSORRAM的数据时,IRQ变为HI,读取后转为LO;在传感器模式下,只要传感器一有变化,就会使IRQ变为HI,读取后转为LO。
<9>SL0~SL3:
扫描按键开关或传感器矩阵及显示器,可以是编码模式(16对1)或解码模式(4对1)。
<10>RL0~RL7:
键盘/传感器的返回线。
无按键被按时,返回线为HI;有按键被按时,该按键的返回线为LO。
在激发输入模式时,为8位的数据输入。
<11>SHIFT:
在键盘扫描模式时,引脚的输入状态会与其它按键的状态一同储存(在BIT6),内部有上拉电阻,未按时为HI,按时为LO。
<12>CNTL/STB:
在键盘扫描模式时,引脚的输入状态会与SHIFT以及其它按键的状态同一储存,内部有上拉电阻,未按时为HI,按时为LO。
在激发输入模式时,作为返回线8位数据的使能引脚。
<13>OUTA0~OUTA3:
动态扫描显示的输出口(高4位)。
<14>OUTB0~OUTB3:
动态扫描显示的输出口(低4位)。
<15>BD:
消隐输出线。
1.33.8279结构
I/O控制和数据缓冲器
双向的三态数据缓冲器将内部总线和外部总线DB0~7相连,用于传送CPU和8279之间的命令、数据和状态。
控制逻辑
控制与定时寄存器用以寄存键盘及显示器的工作方式,锁存操作命令,通过译码产生相应的控制信号,使8279的各个部件完成一定的控制功能。
定时控制含有一些计数器,其中有一个可编程的5位计数器,对外部输入时钟信号进行分频,产生100kHz的内部定时信号。
外部时钟输入信号周期不小于500ns。
扫描计数器
扫描计数器有两种输出方式。
一种为外部译码方式,计数器以二进制方式计数。
4位计数状态从扫描线SL0~SL3输出,经外部译码器译码出16位扫描线;另一种是扫描计数器的低二位译码后从SL0~SL3输出。
注意:
当采用译码输出时,显示只能显示低四位字符。
键输入控制
这个部件完成对键盘的自动扫描,锁存RL0~RL7的键输入信息,搜索闭合键,去除键的抖动,并将键输入数据写入内部先进先出(FIFO)的RAM存储器。
FIFO/传感器RAM和显示RAM
8279具有8个先进先出的键输入缓冲器,并提供16个字节的显示数据缓冲器。
CPU将段数据写入显示缓冲器,8279自动对显示器扫描,将其内部显示缓冲器中的数据在显示器上显示出来。
芯片接口控制逻辑
实现8279和单片机接口的内容归纳为芯片接口控制逻辑,主要包括:
数据缓冲器
I/O控制电路
中断请求产生电路
键盘接口控制逻辑
按功能分为以下几个部分:
扫描电路
扫描回送电路
去抖动及键码生成电路
键盘存储区FIFO RAM
时序和控制逻辑
1.48279的控制字
8279共有8条命令字,其格式与功能如下:
(1)键盘/显示方式设置命令:
命令字格式与功能说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
D
D
K
K
K
D7、D6、D5为000,为方式设置命令特征位。
D4、D3为显示方式设定位,共有以下四种显示方式,见下表:
表6-58279显示方式
D4
D3
显示方式
0
0
8字符显示,左边输入
0
1
16字符显示,左边输入
1
0
8字符显示,右边输入
1
1
16字符显示,右边输入
D2、D1、D0为键盘/显示工作方式设定位,共有以下7种工作方式见下表:
表6-68279键盘/显示工作方式
D2
D1
D0
工作方式
0
0
0
编码扫描键盘,双键锁定输出
0
0
1
译码扫描键盘,双键锁定输出
0
1
0
编码扫描键盘,N键依次读出
0
1
1
译码扫描键盘,N键依次读出
1
0
0
编码扫描传感器矩阵
1
0
1
译码扫描传感器矩阵
1
1
0
选通输入,编码显示扫描
1
1
1
选通输入,译码显示扫描
(2)时钟编程命令:
时钟编程命令字格式及功能说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
0
0
1
P
P
P
P
P
D7、D6、D5为001,是时钟编程命令特征位。
D4、D3、D2、D1、D0用于设定对CLK输入端输入的外部时钟信号进行分频的分频系数N。
若外部时钟频率为2MHz,PPPPP被设置为10100(N=20),即可产生8279内部要求的100KHz基本时钟信号。
(3)读FIFO/传感器RAM命令:
读FIFO/传感器RAM命令字格式及功能说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
0
1
0
AI
×
A
A
A
D7、D6、D5为010,是读FIFO/传感器RAM命令特征位。
D4(AI)为自动递增设定位。
当该位为0时,每次读完传感器RAM的数据后地址不变;当该位为1时,每次读完传感器RAM的数据后地址自动加1,下一个数据便从下一个地址读出,不必重新设置读FIFO/传感器RAM命令。
D2、D1、D0为FIFO/传感器RAM地址。
(4)读显示RAM命令:
读显示RAM命令字格式及功能说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
0
1
1
AI
A
A
A
A
D7、D6、D5为011,是读显示RAM命令特征位。
D4(AI)为自动递增设定位。
该位为1时,每次读数后地址自动加1。
D3、D2、D1、D0为显示RAM的存储单元地址。
(5)写显示RAM命令:
该命令字格式及功能说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
1
0
0
AI
A
A
A
A
D7、D6、D5为100,是写显示RAM命令特征位。
D4(AI)为自动递增设定位。
该位为1时,每次写入数据后地址自动加1。
D3、D2、D1、D0为待写入显示RAM的存储单元地址。
(6)显示禁止写入/消隐命令:
显示禁止写入/消隐命令字格式及功能说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
1
0
1
×
IWA
IWB
BLA
BLB
D7、D6、D5为101,是显示禁止写入/消隐命令特征位。
D3、D2为A、B组显示RAM写入屏蔽位。
当D3=1时,A组的显示RAM禁止写入,从CPU写入显示RAM数据时,不会影响A的显示,这种情况通常用于双4位显示器。
当D2=1时,可屏蔽B组显示器。
D1、D0为A、B组的消隐设置位。
D1(或D0)为1,则对应的A(或B)组显示输出熄灭,该位为0,则显示恢复。
(7)清除命令:
清除命令字格式及功能说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
1
1
0
CD
CD
CD
CF
CA
D7、D6、D5为110,是清除命令的特征位。
D4、D3、D2为清除显示RAM方式设定位,工作方式见表6-7。
表6-7清除方式设定
D4
D3
D2
清除方式
1
0
×
将显示RAM全部清0
1
0
将显示RAM置为20H(A组=0010,B组=0000)
1
1
将显示RAM全部置1
0
不清除(若D0=1,则D2、D3仍然有效)
D1为置空FIFO存储器设定位。
当该位为1时,清空FIFORAM,使IRQ为低电平。
D0为总清除设定位。
该位为1时,清除全部显示器RAM及FIFORAM。
(8)结束中断/出错方式设置命令:
该命令字格式及功能说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
1
1
1
E
×
×
×
×
D7、D6、D5为111,是结束中断/出错方式设置命令的特征位。
D4为1时,N键轮回工作方式可工作得特殊出错方式(多个键同时按下);对传感器工作方式,此命令使IRQ变低,结束中断,并允许对RAM进一步写入。
(五)8279状态字
8279的FIFO状态字主要用于键盘和选通工作方式,以指示数据缓冲器FIFO/传感器RAM中的字符数和是否有错误发生。
状态字格式及意义说明如下:
D7
D6
D5
D4
D3
D2
D1
D0
DU
S/E
0
U
F
N
N
N
D7为显示无效位。
在执行清除显示RAM命令后但尚未完成前,D7=1,表示此时对显示RAM操作无效。
D6为传感器信号结束/错误位。
在传感器工作方式时,S/E=1表示传感器的最后一个信号已进入传感器RAM;在特殊错误方式中,D6=1表示出现了多键同时按下错误。
该位在执行CF=1的清除命令时被复位。
D5为FIFO/传感器RAM溢出标志位。
当FIFO/传感器RAM写满时,若再写入数据,则该位置1。
D4为FIFO/传感器RAM空标志位。
当FIFO/传感器RAM已置空时,如果CPU企图读出数据,则该位置1。
D3为FIFO/传感器RAM满标志位。
D3=1表示FIFO/传感器RAM已满。
D2、D1、D0表示FIFO/传感器RAM中字符的个数。
在本试验箱中,8279和键盘、LED的连线如下图:
我们发现,原理上8279可以同时控制8个LED和8列键盘,但本试验箱只有6个LED和6列键盘,这是通过少用两根线来实现的。
上图74LS138的2号、3号输出线悬空,其余六根线接到了LED和键盘,在写程序时必须要有特殊的处理。
虽然我们没有接2、3号LED,但是8279并不知道这件事,还是会向相应的RAM里送数据,在写程序时,应该人为跳过这两位。
同样的,对应的2、3列的键盘也要特殊处理。
不幸的是,我们的试验箱的六个LED和原理图相比是反向连接的:
原理图上位于最左位的LED在实验箱上位于最右边,次左位的位于次右位,也就是说是互为对称的,这带来了极大的不方便,因为不能利用8279出色的控制LED的功能。
举例如下:
假设8279选择左端输入方式,此时显示RAM的第一个单元存有‘1’的七段码,理论上LED最左端会显示1,其余位熄灭,而在本试验箱最右端会显示1,其余熄灭,现在有键按下,比如说是‘2’,如果将其七段码存入显示RAM的第二位,理论上LED最左端会依次显示1、2,其余熄灭;而在本试验箱上从左往右看,前4个LED熄灭,第五个是2,最后一个是1。
这样,显示的顺序不能真正代表输入的顺序。
要想使显示的顺序真正代表输入顺序,每输入一个字符后都要重新改变显示RAM的每一位,这实际上就是直接操纵LED,也就丧失了8279作为键盘接口的优越性。
3.硬件连接及初级设计说明
3.1硬件连接
这个电子计算器只用到试验箱提供的8279芯片。
硬件连线很简单。
将8279的地址连到210h即可。
过程:
从键盘输入,在led灯显示
2.初级设计说明
3.2.1.计算功能
计算器实现的运算功能如下:
以模块化结构设计为基本思想,将程序分为初始化、读入数字、加减乘除运算、输出结果4个模块。
程序将键盘字符进行分析,将数字依次存入开辟的内存空间并记录次数,根据次数来调整数字相应的大小(例如,输入一个数字则直接保存,在输入一个数字则要把保存的数字乘以10再加上刚刚输入的数字,以此类推)。
遇到操作符后将其先保存到操作判断寄存器中,然后再执行相应的计算或操作。
3.2.2输入功能
本实验仪提供了一个6×4的小键盘,向列扫描码地址(0e101H)逐列输出低电平,然后从行码地址(0e103H)读回,如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高.这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
在判断有键按下后,要有一定的延时,防止键盘抖动。
列扫描码还可以分时用作LED的位选通信号。
3.2.3.实验程序可分成三个模块:
1、键输入模块:
扫描键盘、读取一次键盘并将键值存入键值缓冲单元;
2、显示模块:
将显示单元的内容在显示器上动态显示;
3、主程序:
调用键输入模块和显示模块。
3.2.4.LED发光显示
本实验仪提供了8段码数码管LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,采用动态方式显示。
8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。
6位位码由8155的PA0口输出,经uA2003反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。
写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为0e101H。
本实验涉及到了8155I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。
七段数码管的字型代码表如下表:
3.3键盘布局
7
8
9
+
4
5
6
—
1
2
3
*
0
AC
=
/
3.4显示结果
4.程序流程图
1.控制原理图
2.输入模块流程图
流程图用到的控制字
控制字00H:
键盘/显示方式设置命令,8字符显示,左边输入,编码扫描键盘,双键锁定输出
控制字0D1H:
清除命令,将显示RAM全部清0
控制字40H:
读写FIFO/传感器RAM命令
控制字0C2H:
清除命令,清空FIFORAM
3.显示函数流程图
流程图用到的控制字
控制字0D1H:
清除命令,将显示RAM全部清0
控制字40H:
读写FIFO/传感器RAM命令
4.总体程序流程图
5.程序设计
(最终代码)
Z8279EQU212H
D8279EQU210H
LEDMODEQU00000000B;左边输入,八位显示,外部译码八位显示
DATASEGMENT
DATA1DB0,0,0,0,0;第一个数据(作为被减数)
DATA2DB0,0,0,0,0;第二个数据(作为减数)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
PUSHCS
POPDS
PUSHCS
POPES
MOVDX,Z8279
MOVAL,LEDMOD
OUTDX,AL
;---------------------------------------------------------
MOVDX,Z8279;清FIFORAM寄存器
MOVAL,0D1H
OUTDX,AL
KAISHI:
MOVSI,OFFSETDATA1
MOVBX,10
Q1:
MOVBYTEPTR[SI+BX-1],'0';数据区清零
DECBX
JNZQ1
CALLSHURU;读取第一个字符;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV[SI],AL;存入第一个字符
MOVBX,1
CALLDISPL
CALLSHURU;输入第二个字符;;;;;;;;;;;;;;;;;;;;;;;
CMPAL,'0'
JBT1
MOVBL,BYTEPTR[SI]
MOVBYTEPTR[SI],AL
MOVBYTEPTR[SI+1],BL
MOVBX,2
CALLDISPL
CALLSHURU
T1:
PUSHAX;存入运算符
MOVDX,Z8279
MOVAL,0D1H
OUTDX,AL
WAIIT6:
INAL,DX
MOVBL,AL
ANDAL,80H
CMPAL,80H
JEWAIIT6
CALLSHURU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVSI,OFFSETDATA2
MOVBYTEPTR[SI],AL;输入第三个字符
MOVBX,1
CALLDISPL
CALLSHURU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CMPAL,'='
JZT99;计算跳转
MOVBL,BYTEPTR[SI];输入第四个字符
MOVBYTEPTR[SI],AL
MOVBYTEPTR[SI+1],BL
MOVBX,2
CALLDISPL
CALLSHURU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
T99:
JMPJISUAN
;--------------------------------------------------------------
SHURUPROC;输入函数
MOVDX,Z8279
MOVAL,0C2H
OUTDX,AL;置空FIFO寄存器
WAIIT:
NOP
INAL,DX
MOVBL,AL
ANDAL,80H
CMPAL,80H
JEWAIIT;FIFO正在清除期间则跳转等待
MOVAL,BL
ANDAL,0FH
CMPAL,00H
JEWAIIT;无键按下则等待
MOVAL,40H;写读FIFORAM命令字
OUTDX,AL
MOVDX,D8279;读入FIFORAM内容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8279 实现 两位数 加减乘除 计算器 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)