欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    721.电子计算器设计报告(包含小组成员报告).doc

    • 资源ID:2606029       资源大小:216KB        全文页数:35页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    721.电子计算器设计报告(包含小组成员报告).doc

    计算机科学与技术学院硬件课程设计报告姓 名: 学 号: 专 业: 信息安全 班 级: 信安06-3 设计题目: 电子计算器 成 员: 指导教师: 职 称: 高级工程师 2008年 6月 徐州摘 要 电子计算器是平时的学习生活的用处比较大的一个物品,属于常见的必需品之一,在本次硬件设计中,利用微机课上学习过的芯片Intel 8255A,和键盘、七段数码显示管结合起来,实现计算器的基本功能,即加、减、乘、除运算。本计算器可以实现简单的计算功能,但由于数码显示管只有4个,因此只能进行4位以内的运算,超过四位显示器将只显示最低四位内容造成结果的不准确。16位键盘依次表示0,1,2,3,4,5,6,7,8,9,+,-,*,%(除法取整),=,CE(清零)。关键词:计算器; Intel 8255A; 16位键盘; 4个七段数码显示管课程设计指导教师评阅书指导教师评语:成 绩: 指导教师签字: 年 月 日目 录1、选题报告22、简单计算器设计思路2 2-1 功能22-2 具体要求33、LED设计与实现33-1 LED显示器及其功能33-2 七段LED显示器数码表4 4、键盘设计4 4-1键盘原理5 4-2流程图55、8255A的设计与实现7 5-1基本原理7 5-2引脚功能7 5-3读写控制8 6、总体设计方案8 6-1计算器原理图9 6-2主程序源代码 10 7、设计体会14 8、参考资料14 9、个人专题设计部分15 7-1 LED设计部分( )15 7-2 键盘设计部分( )207-3 8255A设计部分( )261 选题报告我们选的设计题目是电子计算器,拿到题目后我们询问了老师,得到初步的设计计划:设计所需的芯片:8255A所需设备:LED预期达到的效果:通过对8255A编程初始化,将键盘与LED连接,通过对键盘的操作实现计算功能:初步定为加和减的功能,键入一个数字,从LED显示,再键入功能键,LED保持第一次键入的数字显示,键入第二个数字,LED清除第一词的数字显示,并显示第二次的键入内容,键入“=”键,LED显示运算结果。这是初步设想,设计过程中还需要在老师的指导和自己的摸索中进一步改进和完善。另外还有很多情况需要考虑,比如参与运算的数字位数太多LED显示不了,溢出时怎么处理,都还需要组员们的思考和集体讨论。经过查找资料和思考,我们目前需要解决的问题有以下几点:一, 如何应用8255A,1)8255的功能,作用;2)8255初始化;3)对8255编程操作;二, 如何应用LED,1)LED的性能;2)LED的连接;3)LED的显示三, 8255A与键盘的连接四, 键盘与LED的连接2 简单计算器的设计思路2.1功能本实验完成一简单计算器的功能,通过小键盘输入可以进行简单的“”,“”,“*”,“%”,并将结果在显示器上显示。2.2 具体要求第一部份:小键盘的输入先设置数据段,显示提示信息,再调键盘扫描子程序KEY,并判断字是否为“”,是则进入第二部份运算,不是则继续循环此程序。将C、D、E、F、B键定为“”、“”、“*”、“%”、“”;设定“CE”键清除。第二部份:运算先将键盘输入的字符换成二进制数,然后分别进行各自的计算,结果和10相与,若10,将结果除以10,商(十位)放入min1,余数(个位)放入min2;若10则直接放入min2中。第三部分:LED显示根据min1,min2的值,通过查表得到对应的段码,位码后输出。扫描显示两位后退出循环。扫描键盘,判是否按下“A”键,是则返回DOS;不是则返回显示开始。3 LED显示的功能及实现3.1 LED显示器及其功能七段LED显示器由七个发光段构成,每段均是一个LED二极管。这七个发光段分别称为a,b,c,d,e,f,g,通过控制不同段的点亮和熄灭,以显示所要得到的数字。七段LED的输出功能也是通过8255的并行输出实现。首先,通过8255对LED对七段LED显示器的控制实现8255的参数初始化,再通过输入指令从8255的输入锁存器中取显示数据,传送到数码管进行输出操作。其次,通过指令输出选通信号,延时一段时间后,再对位选通信号移位并指向下一个需要显示的数据。最后,通过取符号指令实现数字的简单运算LED内部结构及连接图3.2 LED显示数字编码表dpgfedcba显示的字符编码01000000040H01111001179H00100100224H00110000330H00011001419H00010010512H00000010602H01111000778H00000000800H00010000910H4 键盘功能的设计与实现 4.1键盘原理当进行扫描时,扫描信号由列引脚输入键盘。以1000、0100、0010和0001的顺序每次扫描不同的列,然后读取列引脚的信号就可以判断是哪个键被按下。 键盘设计如下:1000 01000010 0001 1000 0100 0010 0001 识别键盘上哪个键被压下的过程的扫描步骤: 1.检测是否所有键都都松开了,若没有则反复检测。 2.但所有键都松开了,再检测是否有键压下,若无键一下则反复检测。 3.如有键压下,要消除键抖动,确认有键压下。 4.对压下的键进行编码,将该键的行列信号转换成16进制码,由此确定哪个键被压下了。如出现多键重按的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。 5.该键释放后,再回到2。4.2 流程图 开始 8255A初始化 PA口输出全0 读PB口信号是否有键按下在0001列 N Y 延时消除抖动 N在0010列 Y 逐行扫描PA口,输入0行,扫描码0001 N在0100列 Y行扫描码左移1位,保存读PB口的值 N在1000 行计数器加1 编码四行扫描结束本行有键按下N 结束 输出该键位 5 8255A的设计与实现5.1 8255A的基本工作原理:8255 是Intel公司生产的可编程输入输出接口芯片,它是具有3个8位的并行I/O端口,具有三种工作方式,被广泛地使用于单片机的并行I/O端口。            工作方式0:基本输入输出方式            工作方式1:选通输入输出方式 工作方式2:双向传送方式5.2 8255引脚功能说明:RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。 D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送5.3 8255的读写控制:8255的读/写控制逻辑电路接受CPU 发来的控制口号RD、WR、RESET和地址信号A1A0。然后根据命令端口,控制信号的要求,将端口的数据读出选信CPU或者将CPU 送来的数据写入端口,各端口的工作状态。如表所示。通过用输出指令对8255A的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作,端口A可工作于3种方式的任一种,端口B只能工作于方式0和方式1,端口C除了用于输入输出端口外,还能配合A口和B口工作,为这两个端口的输入输出操作提供联系信号。6 计算器原理及其实现6.1 计算器原理图关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关关、?关D7D0RDWRRESET A7M/IO A6A5 A4 A3 A0A2A1G1G2AG2BY4CBAD7D0 RD PA0WR PA1 RESET PA2 PA38255A CS PC7 PC6 PC5PC4PC3PC2A1 PC1 A0 PC1图6.1计算器原理图6.2 主程序源代码:PORT_A EQU 300HPORT_B EQU 302HPORT_CTL EQU 306H /;设置端口地址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,0EH DATA 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,10000010B OUT DX,AL MOV DX,PORTC MOV AL,00h MOV SI,AL CALL DISPYLOOP1: CALL SCAN CMP AH,00h JNZ LOOP1 MOV SI,AL CMP AL,0Ah JL OUTPUT CMP AL,0Ah JE RESETOUTPUT: PUSH AX CALL DISPY JMP LOOP1SIGNAL:;CALLDISPLAY ANDAX,00FFHPUSHAXMOVAH,0MOVDH,0;初始化AH <- 0,DH <- 0MOVAL,BUFFER_LED;第一个数,个位(4)MOVDL,AL MOV AL,BUFFER_LED+1 ;第二个数,十位(3*10=30)MOVCL,10MULCLADDDX,AX;累加DX(30+4=34);CALLDISPLAY MOV AL,BUFFER_LED+2 ;第三个数,百位(2*100=200) MOV CL,100 MUL CL ADD DX,AX ;累加DX(200+34=234) PUSH DX MOV AH,0 MOV AL,BUFFER_LED+3 ;第四个数,千位(1*1000=1000)MOVCX,1000MULCXPOPDX;DX<-STACKADDDX,AX;累加DX(1000+234=1234);CALL DISPLAPUSHDX MOVBL,1;下一次显示清零(1234+'0000') MOV BUFFER_LED+4,BL MOVCX,200HDELAY2:LOOPDELAY2JMPSCAN_START1;读键盘RESET: MOV AL,00h MOV SI,AL CALL DISPY JMP LOOP1 CMP AL,0Ch JE SUMSUM: POP AX MOV BX,SS ADD AX,BX MOV SI,AL CALL DISPY RET MAIN ENDP SCAN 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,PORTA OUT DX,AL MOV DX,PORTB IN AL,DX AND AL,0FH CMP AL,0FH JNE ENCODE ROL CL,01 MOV AL,CL JMP NEXTROWENCODE: MOV BX,000FH IN AL,DXNEXTTRY: CMP AL,TABLE1BX JE DONE DEC BX JNS NEXTTRY MOV AH,01 JMP EXITPUSH DX MOV AH,0 ;DX->STACK MOV AL,BUFFER_LED+3 ;第四个数,千位(1*1000=1000)MOVCX,1000MULCXPOPDX;DX<-STACKADDDX,AX;累加DX(1000+234=1234)POPAX;将之前第一个数符号出栈->AXPOPBX;弹出符号出栈->BXCMPBL,10;是否为加?JEADD_PCMPBL,11;是否为减?JESUB_P;CALLDISPLAYCMPBL,12;是否为乘?JEMUL_PCMPBL,13;是否为除?JEDIV_P CALL ERROR ;BX不是符号,出错DONE: MOV AL,BL MOV AH,00EXIT: HLT RETSCAN ENDPDISPY PROC MOV BX,OFFSET TABLE2 LEA AX,BX+SI XLAT MOV DX,PORTC OUT DX,AL RET DISPY ENDP CODE ENDS END START 七、 实验体会 这次实验做的很辛苦,浏览了不少网页,请教了不少同学,才得出这样一个程序,编译和运行也是错误百出,调试了很久,又请教汇编学的好的同学,但最终还是完成了设计任务,实现了预期的效果。在这个过程中,的确学到了不少知识,理论的,实践的,也清醒地认识到自己的不足,以及团队精神的重要,在实验过程中,队里的人很配合,分配的任务也都能很好的完成,降低了工作的难度。总而言之,这次实验使我们受益匪浅,也认识到了自己的基础知识的严重欠缺,需要加倍努力。8 参考文献1 微型计算机原理与接口技术(第三版) 周荷琴 吴秀清 编著 2 微型计算机原理与接口技术(第二版) 周荷琴 吴秀清 编著 专题设计部分(1)姓名: 学号: 班级:信息安全06-3班主要负责:七段数码管的功能与实现1 七段LED显示器及其功能七段LED显示器由七个发光段构成,每段均是一个LED二极管。这七个发光段分别称为a,b,c,d,e,f,g,通过控制不同段的点亮和熄灭,以显示所要得到的数字。七段LED的输出功能也是通过8255的并行输出实现。首先,通过8255对LED对七段LED显示器的控制实现8255的参数初始化,再通过输入指令从8255的输入锁存器中取显示数据,传送到数码管进行输出操作。其次,通过指令输出选通信号,延时一段时间后,再对位选通信号移位并指向下一个需要显示的数据。最后,通过取符号指令实现数字的简单运算。一、首先需要检测此LED显示器是共阳极还是共阴极,将低电平接到显示管上和同时再接一个片选,如果亮就表示是共阴极,否则是共阳极。二、这里用的是共阴极的LED显示器,共阴就是七段的显示字码公用一个电源的阴极,原理图如下所示:2 LED内部结构af g be cd七段共阳数码管3 LED显示数字编码表dpgfedcba显示的字符编码01000000040H01111001179H00100100224H00110000330H00011001419H00010010512H00000010602H01111000778H00000000800H00010000910H4 LED数码管显示程序框图5 软件检测程序如下:PORT_A EQU 300HCOUNT EQU O5HDATA SEGMENTTABLE DB 40H,79H,24H,30H,19H,12H,02H,78HTABLE DB 00H,18H,08H,03H,46H,21H,06H,0EHDATA ENDSCODE SEGMENTDISPY:MOV BX,OFFSET TABLE LEA AX,COUNTBX XLAT MOV DX,PORT_A OUT DX,ALCODE ENDS END DISPY这是简单的实现输出数字5的程序,具体的见总体报告部分。6个人总结 这次实验做的漫长而艰苦,好几个星期下来做这么一个东西出来,虽然这样,还是很辛苦,因为汇编学的不好,编程就吃了很多苦,浏览了不少网页,请教了不少同学,才得出这样一个程序,编译和运行也是错误百出,调试了很久,又请教汇编学的好的同学,才编译通过箱子上运行的时候也是很多困难,因为设备的不配合,最终的实现也没完成,但在这个过程中,的确学到了不少知识,理论的,实践的,也清醒地认识到自己的不足,以及团队精神的重要,在实验过程中,队里的人很配合,分配的任务也都能很好的完成,降低了工作的难度。总而言之,这次实验使我们受益匪浅,也认识到了自己的基础知识的严重缺乏,需要加倍努力。通过这次实验,从软件设计、硬件设计到后面的动手调试,中间还经历了查找资料等过程,我明白了只有实践才能真正掌握我们学到的知识。此外在这中间与其他比我学得熟练的同学进行交流,也学到了很多,更深刻地体会到合作的重要性。7 参考文献1 微型计算机原理与接口技术(第三版) 周荷琴 吴秀清 编著 2 微型计算机原理与接口技术(第二版) 周荷琴 吴秀清 编著 专题设计部分(2)姓名: 学号: 班级: 主要负责:8255A的功能与实现1 8255A具有的3种基本的工作方式:方式0 基本输入输出方式方式1 选通输入输出方式方式2 双向总线I/O方式2 8255A的基本工作原理:8255 是Intel公司生产的可编程输入输出接口芯片,它是具有3个8位的并行I/O端口,具有三种工作方式,被广泛地使用于单片机的并行I/O端口。            工作方式0:基本输入输出方式            工作方式1:选通输入输出方式 工作方式2:双向传送方式3 8255引脚功能说明: RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。 RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。 WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。 D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送4 8255的读写控制:8255的读/写控制逻辑电路接受CPU 发来的控制口号RD、WR、RESET和地址信号A1A0。然后根据命令端口,控制信号的要求,将端口的数据读出选信CPU或者将CPU 送来的数据写入端口,各端口的工作状态。如表所示。CSRDWRA1A0功 能0100 0写计数器00100 1写计数器10101 0写计数器20101 1写控制字寄存器0010 0读计数器00010 1读计数器10011 0读计数器20011 1无操作1XXX X禁止使用011X X无操作通过用输出指令对8255A的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作,端口A可工作于3种方式的任一种,端口B只能工作于方式0和方式1,端口C除了用于输入输出端口外,还能配合A口和B口工作,为这两个端口的输入输出操作提供联系信号。4.1 主程序的设计:主程序主要是用来进行初始化的,调用自检程序,清空各个标志位,清空缓存区,给定定时器0工作方式。在等待定时器0中断时主程序在以下程序段内循环。PORT_AEQU0FF9HPORT_BEQU0FFBHPROT_CEQU0FFFHDATASEGMENTTABLEDB77H,7BH,7DH7EH,0B7H,0BBH,0BDH,0BEHDB0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEHDATAENDSSTACKSEGMENTSTACKDW50DUP(0)TOP_STACLABELWORDSTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,STACKMOVSS,AXLEA SP,TOP_STACKMOV AX,DATAMOVDS,AXMOVDX,PORT_CTLMOVAL,10001011BOUTDX,ALMOVDX,PORT_AMOVAL,00HOUTDX,ALMOVDX,PORT_BWAIT_OPEN:INAL,DXAND AL,0FHCMP AL,0FHJNE WAIT_OPENWAIT_PRES:IN AL,DXAND AL,0FHCMP AL,0FHJE WAIT_PRESMOV CX,16EAHDELAY:LOOPDELAYIN AL,DXAND AL,0FHCMP AL,0FHJEWAIT_PRESMOV AL,0FEHMOV CL,ALNEXT_ROW: MOV DX,PROT_AOUT DX,ALMOV DX,PORT_BIN AL,DXAND AL,0FHCMP AL,0FHJNE ENCODEROL CL,01MOV AL,CLJMP NEXT_ROWENCODE:MOV BX,000FHIN AL,DXNEXT_TRY: CMP AL,TABLEBXJE DONEDEC BXJNS NEXT_TRYMOV AL,01JMP EXITDONE: MOV AL,BLMOV AL,00EXIT: HLTCODE: ENDSEND4.2、中断模块的程序设计:进入定时器0的中断程序后,首先重新付初值,然后调用读键程序,如果有键按下,则判断按键是否与上次按键相同,如果相同则判断按键相应位是否为一,如果不为一,说明这不是持续按键导致的按键相应,并且进行相应的程序。如果不是则退出中断程序。3、显示模块的程序设计:由于使用的是静态显示,故先要对SCON进行相关设置,让串口工作在方式0下,使用指令MOV SCON,#00H就可以了。首先从高位开始进行归零显示,并将最后一个归零的位,标志为负号位,然后判断负数标志位是否为一,是则将标志为负号位的送出显示负号(笔形码0FEH),否则直接送出显示5 实验体会通过这次实验,我对8255有了更进一步的了解,对他的三个端口的输入输出关系和输入,输出的锁存也有了更深刻的认识。经过这次实验,我也了解到了团队的重要

    注意事项

    本文(721.电子计算器设计报告(包含小组成员报告).doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开