人人范文网 范文大全

微机原理简易计算器课程设计

发布时间:2020-03-03 02:58:38 来源:范文大全 收藏本文 下载本文 手机版

简易计算机课程设计

一、

设计目的

本次课程设计的实验目的是通过该实验掌握较复杂程序的设计。能够独立完成用程序对8255控制键盘和LED显示的控制,完成计算器加减法的应用。独立编写程序,明白和掌握程序的原理和实现方式。为以后的设计提供经验。学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。

微机原理课程设计的意义是为了使学生加深对所学的微机原理知识的理解,培养学生的专业素质,提高其利用微机原理知识处理问题的能力,为今后专业课程的学习、毕业设计和工作打下良好的基础。使学生能比较扎实地掌握微机原理的基础知识和基本理论,掌握控制系统及有关设备的分析、开发等基本技能,受到必要工程训练、初步的科学研究方法训练和实践锻练,增强分析问题和解决问题的能力,了解微机原理和接口技术的新发展。

二、

设计内容

设计一计算器,要求至少能完成2位数的加减运算。独立完成用程序对8255控制键盘和LED显示的控制,完成计算器加减法的应用。

1

三、 设计要求

在课程设计时,1人1题,同批次同学中选择同一题的人数不超过3人。在教师指导下,可以相互讨论,但设计报告由学生独立完成,不得互相抄袭。教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。同学应积极主动的提出问题、解决问题、讨论问题,互相帮助和启发。

学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。指导教师要引导学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。

四、设计原理与硬件电路

设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序完成数据的储存或者是加减的运算。运算完成后将运算的结果储存并显示到LED显示器上。

各部分硬件功能:

可编程并行通信接口芯片8255A 8255A内部结构

2

3 1.并行输入/输出端口A,B,C

8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作为输入或输出。通常将端口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。 2.A组和B组控制部件

端口A和端口C的高4位(PC7~PC4)构成A组;由A组控制部件实现控制功能。 端口B和端口C的低4位(PC3~PC0)构成B组;由B组控制部件实现控制功能。

A组和B组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0~D7)送来的控制字,并根据他们来定义各个端口的操作方式。 3.数据总线缓冲存储器

三态双向8位缓冲器,是8255A与8086CPU之间的数据接口。与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。 4.读/写控制部件

8255A完成读/写控制功能的部件。能接收CPU的控制命令,并根据控制命令向各个功能部件发出操作指令。

CS 片选信号:由CPU输入,有效时表示该8255A被选中。 RD, WR 读、写控制信号:由CPU输入。RD有效表示CPU读8255A,WR有效表示CPU写8255A。RESET 复位信号:由CPU输入。RESET信号有效,清除8255A中所有控制字寄存器内容,并将各个端口置成输入方式。 定义工作方式控制字:

工作方式0:8255A中各端口的基本输入/输出方式。

4

键盘输入模块

键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮的话必须要需要一个I/O口对它进行检测,而键盘往往这需要键盘按钮数一半的I/O口数对它进行检测,也许对一个比较简单的系统I/O口数一般不是问题,但对于一个大型、复杂的系统来说I/O资源就显得非常珍贵了,尽量减少I/O使用是非常利于降低成本,另外一方面键盘比用独立按键要美观,这也是键盘能够长期得到人们青睐的原因,可是硬件上的节省必然导致软件上编程的复杂,那就来看看键盘到底使软件编程有多复杂? 下图是一个3*3键盘的结构图,因为3*4键盘有7个管脚,于是将键盘接8255A的PC口,至于为什么选择PC是有原因的,进行键盘扫描一般要求有一部分的I/O口的工作方式是输入,另一部分I/O是输出,具体到3*3键盘则要求3个I/O口输入,另外3个输出,这一点PC口刚好符合,而PA、PB口要么全部输入或输出,所以只能是PC口接键盘。

5

硬件电路如下图所示:

A[0..19]AD[0..15]AD0AD1AD2AD3AD4AD5AD6AD7347813141718111U1D0D1D2D3D4D5D6D7CLKMR74273AD[16..19]25342726322928Q0Q1Q2Q3Q4Q5Q6Q7256912151619A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7OR_8A8A9A10A11A12A13A14A15OR_4U6U7232221201819ABCDE1E2012345678910111213141512345678910111314151617IO0IO1IO2IO3IO4IO5IO6IO7IO8IO9IO10IO11IO12IO13IO14IO15U521222418313023173319RESETAD[0..15]READYA[16..19]INTA/QS1INTRALE/QS0HOLD/GT1BHEHLDA/GT0DT/R/S1TESTDEN/S2NMIRDMN/MXWR/LOCKCLKM/IO/S08086PROGRAM=T1.EXELOAD_SEG=0x0800U3AD83AD94AD107AD118AD1213AD1314AD1417AD1518111U2D0D1D2D3D4D5D6D7CLKMR74273Q0Q1Q2Q3Q4Q5Q6Q7256912151619A8A9A10A11A12A13A14A15NOTRDWRM/IOU874154AD[16..19]U4AD16AD17AD18AD19347813141718111D0D1D2D3D4D5D6D7CLKMR74273Q0Q1Q2Q3Q4Q5Q6Q7256912151619A16A17A18A19BHED[0..7]U23433323130292827RDWRA1A253698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC78255A43214039383718192021222324251415161713121110R1\"0\"\"4\"\"8\"PULLUPR2\"1\"\"5\"\"9\"PULLUPR3\"2\"\"6\"\"+\"PULLUPR4PULLUP\"3\"\"7\"\"-\"CSR5PULLUPR6PULLUPR7PULLUP

6

五、设计流程图

7

六、程序代码

编程也可以主要分为三部分;键盘扫描、数据处理、数码管显示,另外还有译码电路,8255各口的地址所使用的是200H-207H。8255A采用的是方式0,A组输入,B组输出。

code segment aume cs:code,ds:code start: jmp start1 buff db 1,2,3,4,5,6 tablek dw 3e07h,3e0bh,3d0bh,3b0bh,3e0dh,3d0dh,3b0dh,3e0eh,3d0eh,3b0eh ;0~9键盘值

dw

370eh,370dh,370bh,3707h,3b07h,3d07h,2f07h,2f0bh,2f0dh,2f0eh,1f07h,1f0bh,1f0dh;其他键值

table db 3fh,6,5bh,4fh,66h,6dh,7dh,7,7fh,6fh,46h,40h,48h,00;0~9的字型码 x dw 0 y dw 0 f db 0 n db 0 c db 0 addf db 0 subfdb 0 start1: mov ax,cs

mov ds,ax

call clear

again: mov dx,203h

mov al,10001001b

out dx,al;8255A初始化

call led ;调用子程序

call key

cmp f,1

jne again

cmp bl,9;对比数字键盘

jle d_proce

cmp bl,10

je to_add;转到加法

8

cmp bl,11

je to_sub;转到减法

cmp bl,12

jmp again;返回

clear1: call clear

call clbuf

jmp again

d_proce:cmp n,1 je d_p_y

mov cl,4

shl x,cl

mov bh,0

add x,bx

call bshift

mov buff+5,bl

jmp again d_p_y: mov cl,4

shl y,cl

mov bh,0

add y,bx

call bshift

mov buff+5,bl

jmp again

to_add: call bshift;加法程序

mov buff+5,bl

mov f,0

mov n,1

mov addf,1

jmp again

to_sub: call bshift;减法程序

mov buff+5,bl

mov f,0

mov n,1

mov subf,1

jmp again

to_s: mov bx,y;

sub al,bl

das

mov bl,al

key

nk: mov al,ah sbb al,bh das mov bh,al mov x,0 mov y,0 mov subf,0 call store jmp again proc;键盘的扫描程序 mov dx,203h mov al,10001001b

out dx,al;初始化8255,写控制字 mov f,0 mov dx,201h mov al,0 out dx,al;初始化8255 mov dx,202h in al,dx;初始化8255 and al,0fh cmp al,0fh je k_exit mov cx,3000 loop $

;10ms in al,dx and al,0fh push ax mov dx,203h mov al,10000010b ;b_in,c_out out dx,al pop ax mov bl,al mov dx,202h out dx,al mov dx,201h in al,dx and al,3fh mov bh,al lea si,tablek mov cx,23 mov ah,0 cmp bx,[si]

10

found: je found inc ah add si,2 loop nk

mov al,0;不断扫描,等待输入

mov dx,202h

out dx,al

mov dx,201h

in al,dx

and al,3fh

cmp al,3fh

jne found

mov cx,3000

loop $

mov f,1

mov bl,ah

;键值 k_exit: ret key endp store proc;储存程序

mov word ptr buff,1414h

lea si,buff

mov ch,4

s_re1: mov cl,4;储存的方式

rol bx,cl;循环左移4位

mov al,bl

and al,0fh

mov [si+2],al

inc si

dec ch

jnz s_re1

call clear

ret store endp

code ends end start

;不显示,存储

11

七、设计总结体会

本次课程设计师自由选择设计课题的,我选择了简易加减法计算器的题目,看起来不是很难,但是真正做起来才发现其困难之处。

本次的课程设计是一个相对而言比较难的设计,因为这次设计不仅仅是课本上知识的整合,而且还有很多是课外的扩展。这次课程设计可以说是一个挑战。我们做的题目是简易计算器的设计。才开始思路很清晰。或许是因为我们司空见惯了这种小机器,可是等做起来发现真的好难。首先8255A的初始化和8086的接线也是十分简单,但是等到编成的时候发现有很多不懂得地方,觉得很容易的算法在编程中很难实现。于是我开始查看课本和有关的资料,知道了一些编程常用的方法。受益匪浅。而后我用心编写这程序。经过自己的努力和同学的帮助终于完成了相应的要求。

本次课程设计,不仅使我加深了对接口程序设计的认识,对接口各部件的工作原理也有了进一步的了解,也增强了分析故障的能力,更重要的是培养了我们面对问题、解决问题的能力。从理论知识上我对8086和8255的作用、功能以及初始化更加熟悉,并且有了客观上的理解。对键盘的使用和数码管显示问题也完全弄懂了。这次课程设计还是比较成功的。

当然我还有很多不足之处,比如知识掌握的不够全面,研究的深度不够,有问题畏畏缩缩不敢问,程序编写不会查漏补缺。课后没有及时解决课上的问题留到第二天上课程设计在想办法,这说明我的惰性也很强。这些都是我需要去改进的地方。我会在以后的学习中多加注意。

最后感谢老师的辛苦指导,使我的设计能过成功实现,使我完成了这次课程设计。另外感谢网络给予我便利,让我找到有些相关资料帮我解决了一些问题。同时也感谢与我一起学习、探讨,一起研究、查找资料的唐云虹同学。

12

八、参考文献

CNDS教育资源网站 河南理工大学门户网站 百度知道 百度空间

http://hi.baidu.com/

http://bbs.pfan.cn/

13

AVA简易计算器课程设计

微机原理课程设计

微机原理课程设计

微机原理课程设计

微机原理课程设计

微机原理课程设计

微机原理课程设计

微机原理课程设计

微机原理课程设计题目

微机原理课程设计题目

微机原理简易计算器课程设计
《微机原理简易计算器课程设计.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档