
1151.简单计算器硬件课程设计报告.doc
21页2 -计算机科学与技术学院2006级硬件课程设计报告计算机科学与技术学院硬件课程设计报告姓 名: 学 号: 专 业: 计算机科学与技术 班 级: 计算机06-5 设计题目: 电子计算器 成 员: 指导教师: 职 称: 2007年6月30日 课程设计指导教师评阅书指导教师评语:成 绩: 指导教师签字: 年 月 日摘 要本课程设计采用8086CPU、8255A、4*4小键盘和LED显示器,实现十以内数的加法,且具有清零功能和简单的报错功能关键词:8255A;4*4小键盘;十以内数加法;目 录一、 设计任务与要求……………………………………………………………… 4二、 总体方案与说明……………………………………………………………… 41、 硬件部分……………………………………………………………… 52、 软件部分……………………………………………………………… 6三、 电路原理图…………………………………………………………………… 8四、 软件主要模块流程图………………………………………………………… 9五、 问题分析与解决方案…………………………………………………………13六、 实验体会………………………………………………………………………14参考资料………………………………………………………………………………14一、 设计任务与要求我们组选择的课程设计题目是电子计算器。
在经过长时间的考虑之后,分析了任务的难易,我们决定只考虑最简易的情况,即只实现个位数的加法运算为此,我们需要用到以下硬件:8086 CPU8255A4*4小键盘LED显示器二、 总体方案与说明本系统功能为实现个位数的加法运算,即在键盘上按下一个数字键,在LED上显示其对应的数值,按下+,再按下一个数字键,在LED上显示其数值,按下=,则调用软件的运算模块,进行运算,并回显结果,输出到LED显示器上此电子计算器是基于8255A的并行输入输出的工作模式,实现简单的十进制运算功能8255A工作于方式1,两个数据端口的输入输出数据都能锁存,并能通过一些联络信号的控制完成计算器的输入输出操作1、 硬件部分硬件电路应分为两个模块,一为键盘接口电路,二为LED显示模块4*4小键盘:键盘应包含数字键0-9,运算符+、=及C(清零)键通过对键盘的扫描实现对计算器的输入操作,利用8255的输入数据锁存功能实现对键盘的扫描16个键排成4*4的矩阵,接到8255A的一对端口上,其中端口A做输出,端口B做输入矩阵的4条行线接到输出端口A的PA3-PA0,用程序能改变着4条行线上的电平4条列线连到输入端口B的PB3-PB0,4条行线还同时接到输入端口B的PB7-PB4上。
这样,用输入指令读取B口状态时,可同时读取键盘的行列信号在无键压下时,由于接到+5V上的上拉电阻的作用,列线被置成高电平压下某一键后,该键所在的行线和列线接通这时,如果向被压下键所在的行线上输出一个低电平信号,则对应的列线也呈现低电平当从B口读取列线信号时,便能检测到该列线上的低电平读取B口的状态时,还能读到行线上的低电平信号这样,根据读入的行和列状态中低电平的位置,便能确定哪个键被压下了上述键盘扫描包含以下几步:(1) 检测是否所有键都松开了,若没有则反复检测2) 当所有键都松开了,再检测是否有键压下,若无键压下则反复检测3) 若有键压下,要消除键抖动,确认有键压下4) 对压下的键进行编码,将该键的行列信号转换成16进制码,由此确定哪个键被压下了如果出现多键重按的情况,只有在其他键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键5) 该键释放后,再回到(2)七段LED显示器:七段LED显示器由七个发光段构成,每段均是一个LED二极管这七个发光段分别称为a,b,c,d,e,f,g,通过控制不同段的点亮和熄灭,以显示所要得到的数字七段LED的输出功能也是通过8255的并行输出实现首先,通过8255对LED对七段LED显示器的控制实现8255的参数初始化,再通过输入指令从8255的输入锁存器中取显示数据,传送到数码管进行输出操作。
其次,通过指令输出选通信号,延时一段时间后,再对位选通信号移位并指向下一个需要显示的数据最后,通过取符号指令实现数字的简单运算2、 软件部分计算器实现的运算功能如下:首先,通过8255对参数的初始化并送到LED显示后,继续检查是否有键码输入,并通过比较指令判断键码是哪个键,若是数字键和清零键,则执行相应的操作(输入数值和状态清零)后将其送入显示缓冲器中若是功能键,则根据上次功能键和输入的数据计算结果,如果功能键为=,送显示缓冲等待数值输入后送到LED显示如果是其他键,则保存上次运算结果和功能键送到显示缓冲,并由LED显示数值利用XLAT指令进行查表,区分按下的是数字还是操作符,如果是数字,则用专用变量纪录该数字,如果是“+”符号,则用变量记录该操作符,如果是“=”,则从上两个变量中读取数据进行计算,如果是复位键,则将所有数据清空另外,当运算数据超出显示范围,或不符合数学计算规律时,报错三、 电路原理图四、 软件主要模块流程图1、 LED数码管显示程序框图2、 读键输入子程序框图3、 键盘扫描主程序框图4、 数值送显示器缓冲子程序框图5、 主程序框图五、 问题分析与解决方案本次硬件设计主要实现计算器加法运算的功能。
硬件电路应分为两个模块,一为键盘接口电路,二为LED显示模块通过程序对键盘的扫描和对LED的初始化后实现加法运算,本次实验主要由8255和计算机来控制计算器的实现8255是可并行输入输出芯片,8255主要由数据端口A、B、C三个端口,A组和B组控制逻辑,数据总路线缓冲器和读写控制逻辑组成8255具有三种基本的工作方式:方式0:基本输入输出方式方式1:选通输入输出方式方式3:双向总线I/O方式本次实验主要是基于8255工作在方式0的方式下实现的加法运算键盘的设计如下:键盘为4×4的小键盘,其中设0~9共10各数字键,其他为命令键,具体命令为加、等于和清零LED显示器的设计如下:显示为7段LED数码管由键盘读入数据和命令,在数码管正确显示结果及格式,同时刷新显示数据六、 实验体会通过此次实验,我们对实验的设计有了初步的了解,知道了怎么样把自己在大学所学的知识运用到实际中来,也知道了电子计算器是的实现主要是在并行的输入输出的方式下实现的此实验也加深了我们对8255的工作原理和实际运用的了解,还对我们经常接触到的键盘的工作原理和LED的初始化有了更加充分的了解了解其工作原理使我们对所做的实验更加容易地顺利完成,只要我们在实验之前把工作原理掌握好,实验就会顺利完成。
参考资料《微型计算机原理与接口技术》……中国科学技术大学出版社 周荷琴 吴秀清编著附录:源程序PORTA EQU 0FF9HPORTB EQU 0FFBHPORTCTL EQU 0FFFHCOUNT EQU [AX]DATA SEGMENTTABLE1 DB 77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH DB 0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEHTABLE2 DB 40H,79H,24H,30H,19H,12H,02H,78H DB 00H,18H,08H,03H,46H,21H,06H,0EHDATA ENDSSTACK SEGMENT STACK DW 50 DUP (0)TOPSTACK LABEL WORDSTACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARSTART:MOV AX,STACK MOV SS,AX LEA SP,TOPSTACK MOV AX,DATA MOV DS,AX MOV DX,PORTCTL MOV AL,10001011B OUT DX,AL MOV DX,PORTA MOV AL,00h OUT DX,ALLOOP1:CALL SCAN CMP AH,00h JNZ LOOP1 CMP AL,0Ah JL OUTPUT CMP AL,0Ah JE RESETOUTPUT:PUSH AX CALL DISPY JMP LOOP1RESET:MOV AL,00h CALL DISPY JMP LOOP1 CMP AL,0Ch JE SUMSUM:POP AX MOV BX,SS ADD AX,BX CALL DISPY RET MAIN ENDPSCAN PROC MOV DX,PORTA MOV AL,00H OUT DX,AL MOV DX,PORTBWAITOPEN:IN AL,DX AND AL,0FH CMP AL,0FH JNZ WAITOPENWAITPRES:IN AL,DX AND AL,0FH CMP AL,0FH JE WAITPRES MOV CX,16EAHDELAY:LOOP DELAY IN AL,DX AND AL,0FH CMP AL,0FH JE WAITPRES MOV AL,0FEH MOV CL,ALNEXTROW:MOV DX,PORTAOUT DX,AL MOV DX,PORTB IN AL,DX AND AL,0FH CMP AL,0FH JNE ENCODE ROL CL,01 MOV AL,CL 。
