微机原理课程设计[用8255A实现4位十进制计算器]_第1页
微机原理课程设计[用8255A实现4位十进制计算器]_第2页
微机原理课程设计[用8255A实现4位十进制计算器]_第3页
微机原理课程设计[用8255A实现4位十进制计算器]_第4页
微机原理课程设计[用8255A实现4位十进制计算器]_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、word格式文档课程设计报告(2012- 2013 年度第1学期)名 称:微型计算机原理及应用题 目:用8255A实现四位十进制数简单计算器院 系:控制与计算机工程学院班 级:自动化1003班学 号:学01190302学生姓名:范 昌指导教师:王震宇设计周数:一周成 绩:同组人:贾旭郭欢刘玉婷日期:2013年1月5日一、课程设计的目的与要求课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题 的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、 敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教

2、学环节。通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机 开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写 设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识 到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应 用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具 的使用方法。我组根据微机原理课程所学相关知识及实验教程相关内容,在基于proteus平台,使用汇编语言,以8086为核心的情

3、况下,配合可编程并行接口器件8255A, LED数码管等器件实现可进行简单四位数加减乘除法功能的十进制计算器。在课程设计实践中,我们不仅锻炼了实际动手能力,培养了团队精神和严肃认 真的工作态度,更增强了自己在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。二、课程设计进度及任务分工课设进度:1.选择课程设计题目,查阅相关资料。(全体组员)2.需求分析及总体设计。(全体组员)3.软硬件设计。(范昌负责主程序的框架与整体调试、LED数码显示部分及硬件构架,贾旭负责键盘管理部分,郭欢、刘玉婷负责算法及相关程序)4. 仿真调试。(范昌、贾旭)5. 总结及撰写设计报告。(郭欢、刘玉婷)6

4、. 个人总结(全体组员)三、设计正文1 .需求分析操控核心微处理器 8086芯片可编程并行接口芯片 8255A可编程定时/计数器8253A对输入扫描的矩阵键盘显示模块LED数码管辅助器件如74LS138译码器、74LS373等2 .总体设计确定键盘是否有输入(使用程序不断进行扫描)若有输入就调用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程序进行操作继续扫描键盘是否有输入,从而实现4位十进制数以内的加减乘除法或者扩展功能运算运算完成后将运算的结果储存并显示到LED显示器上3 .硬件设计见附录。4 .软件设计见附录。四、课程设计总结或结论(1)个人总结本次课程设计我

5、们做的课题是用8255A实现4位十进制数简易计算器,四人一组,我负责主程序的框架与整体调试、LED数码显示部分及硬件构架。对于主程序的框架,是整个计算器的核心,通过与其他组员的商量我们最终确定了我们的主要算法:通过一个 4*4键盘,输入数据,实 现加减乘除操作,将输入的数据和运算符分别存储,接收到“=”时进行运算,并将结果输出。看起来简单的算法,由于涉及到十进制和十六进制的转换,其中就需要很多中间的转换程序。经 过反复修改与查阅资料,我们的程序最终能够完成部分预期功能。我还负责LED数码管显示部分的程序,四位七段数码管的显示,原理看起来简单,但是实际 操作时却有各种各样的毛病,按照原理写好程序

6、,往往不能达到预期效果,数码管又是不显示, 有时会显示乱码,有时会闪烁,所有这些,都要一步一步调试,加入合适的延时程序是关键,延 时过长、过短都不好。显示乱码是程序方面出了问题,经过一次次调试,终于得到了稳定的显示,我对数码管的应用也更熟练了。PAZ。PA3 O由于我之前有接触过 proteus仿真软件,所以我负责硬件的搭建,熟悉使用proteus软件对我们专业来说是一项基本技能,通过一次次摸索与百度,我对这个软件的使用也越来越熟悉,学 会了怎么连总线,怎么仿真,怎么快速连线,以及常用元件的搜索。其中最让我满足的是键盘的 设计,如果用16个按钮排列当然可以实现我们的要求,但是每次按按钮有很不方

7、便,所以我在 网上查询资料,学会了用 proteus自身的模型制作自己的元件,上图左边是普通矩阵键盘,右图 是我利用proteus自身模型制作的的键盘,感觉很满意。整个硬件仿真的搭建,由于对软件的不 熟悉,本身设计的问题,花了我很长时间,而且重复连接了很多次,最后我们成功仿真出了我们 的计算器。通过本次课程设计,就我本身来说我学会了很多东西,无论是软件上汇编语言程序的编写与调试,还是硬件的搭建技巧与相关软件的应用的能力都得到了很大提高,同时也锻炼了我的自我学习能力与交流合作能力,相关软件的学习使用, 相关芯片与元件的使用与选择能力都在一定程度上有了很大进步。同时,软硬件的结合,也体现了我们自动

8、化专业的特点。最后,有一点遗憾的就是做好了四位的简易计算器,我们想进一步扩展做成八位的计算器, 但是难度有所加大,不是想象中的那么简单,数码管显示部分就花了很大精力去调试。最后由于 时间关系没有完成 8位计算器的制作。(2)团队总结本次课程设计,我们是四人一组,团队合作的要求就比较高。因为选题的关系,需要更多的人合作,所以决定四人组队,各自发挥特长。在设计过程中,我们配合得很好,初期的查阅资料共享,极大地体现了我们人数上的优势。对于整个设计的交流更让我们在大方向上走上了正确的道路,少走了很多弯路。我们的课题看起 来简单,其实不然,仔细分析,涉及的知识面很广,很考验我们的基本功和自学能力。软件方

9、面 的算法由于是大家一起讨论后决定的,一般都是可行的,也有很多难点,比如说十进制与十六进 制的转换,数据的输出与存储等,但是在我们的通力合作下一一解决了我们面临的很多难题。硬件方面用的是proteus软件仿真,硬件电路的设计也是一个难点,但是通过查阅资料与相互交流,我们的电路最终是可行的,虽然之前失败了好几次。软件和硬件的结合再一次考验了我们的合作精神,软件是建立在硬件上的,硬件体现软件的功能,主要负责硬件和组要负责软件的同学建立 了很好的默契,相互学习,圆满的完成了任务。本次课程设计我们对自己的成果相对比较满意,在设计的过程中,大家相互学习,相互帮助,都收获很多。但是我们也有很多不足的地方,

10、比如四位的计算器位数太少,不能进行小数运算等, 这些都是对我们能力的极大挑战,为了解决这些问题我们也进行了积极探索,设计了一个八位的简单计算器,但是由于时间有限,没能完成设计。U2耳ESETADfD 用REAPfME 0iWFRALEnSQMCHDTtMML&嘀;用GT阐南0T阳应NM配ImyMlCLK.J-cij?一i- ,"TTrTxm rTTml-il* 1J214C(W31J2将黑黑雷W n i 3 n i n rc u i 3 u i u F F,PCOJ7?11PCD O < n Q Cl Q-1 _ - 5 - - 9 一 m八位简易计算器设计 :P*1

11、Q五、参考文献1清华大学TPC-2003A实验指导书,2006版2新编16/32位微型计算机原理及应用,李继夕11主编,清华大学出版社,2008版,第四版3陈继红.微机原理及应用M.北京:高等教育出版社,2011年,276-283页4周明德.微型计算机系统原理及应用M.北京:清华大学出版社, 2007年专业整理附录软件设计1.总程序流程图2 .扫描程序流程图延日1 12ms3 .程序代码;8255A 端口地址:A 口: 40H,B 口: 44H, CH: 42H,控制端口: 46H DATA SEGMENTXDB? , ?,? , ?;存放数据的位X1DW ?;存放A个数据值X2DW?;存放第

12、二个数据值YDW?;存放运算结果SDB?;存放运算符号值EDB?;to'等号键标记CCDB?;存放运算数据位数H DB0;存放按键行号LDB0;存放按键列号DISCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;段码表DATA ENDSCODE SEGMENTASSUME CS:CODEDS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,90H;设置为A 口输入,B 口输出,C 口输出OUT 46H,ALMOV DI,OFFSET X+3 ;DI 指向 X的高位K

13、KK:CALL KEY;扫描按键JMP KKK;以下为按键扫描子程序,程序返回后,在变量 H和L中存放当前按键的行列号KEY PROCCHECK: CALL DISP;等待按键按下的同时进行显示MOV AL,0F0H ;所有行输出彳氐电平OUT 44H,ALIN AL,40HCMP AL,0FFH ;读列值JZ CHECK若都为高电平则无键按下,等待MOV CX,50LOOP $;延时消抖IN AL,DX ;重读列值CMP AL,0FFH无键按下一直等待有键按下,先把行列号变量清 0JZ CHECKMOV H,0;MOV L,0MOV BL,01HMOV BH,0FEH ;扫描法读键值:从第一

14、行开始测试,即PC0输出低电平NEXT:MOV AL,BHOUT 44H,ALNEXTH: IN AL,40H TEST AL,BL JZ WAIT0读列值,判断是第几列有键按下 从第一列开始判断ROL BL,1CMP BL,10H当前行状态下没有列有键按下,则转为对下一行的测试JZNEXTLINCH;每判断一列,列号加 1JMP NEXTH ;再对下一列进行判断NEXTL: MOV H,0MOV BL,01H ROL BH,1 ; CMP BH,0EFH JZEXITINCLJMP NEXT WAIT0:INAL,40HCMP AL,0FFH JNZ WAIT0 MOV CX,50 LOOP

15、 $ INAL,40HCMP AL,0FFH JNZWAIT0CALL KEYVALUE EXIT:RETKEY ENDP;以下为计算键值子程序,通过行列号计算键值 KEYVALUE PROCMOV DL,L MOV DH,H SHL DL,1 SHL DL,1 ADD DL,DH CMP DL,9 JNG NUM_CALL CMP DL,14 JL CONT_CALL CMP DL,14 JZOUTP_CALLCMP DL,15 JZCLR_CALLNUM_CALL: CALL NUMBER JMP EXIT1 CONT_CALL: MOV S,DL MOV E,0 CALL COUNT J

16、MP EXIT1 OUTP_CALL: CALL OUTP JMP EXIT1 CLR_CALL: CALL CLEAR EXIT1:RET对下一行测试,让下一个 PC口输出低电平若有键按下,则等该按键松开后再计算键值;延时消抖;调计算键值子程序(键值 =行号*4+列号)键值存放在 DL寄存器中;列号乘4;按下的是数字键;按下的是运算键;按下的是等于键;按下的是清除键;调数字键处理子程序;存放运算键的键值调运算键处理子程序,计算第一个加数;调等号键处理子程序;调清除键处理子程序KEYVALUE ENDPX变量全部清0;以下为清除键处理子程序,按下清除键后,CLEAR PROCMOV X3,0M

17、OV X2,0MOV X1,0MOV X0,0CALL BITPRETCLEAR ENDP;以下为等号键处理子程序,该子程序负责将第二个运算数据的数值计算出来存入X2变量;并根据运算符号,调用相应的运算子程序OUTP PROCPUSH AXPUSH DXPUSH BXINC ECALL COUNT ; 调运算键处理子程序,计算第二个运算数据CMP S,10JZADD_CALL;运算符为加号,则调用加法子程序CMP S,11JZSUB_CALL;运算符为减号,则调用减法子程序CMP S,12JZMUL_CALL;运算符为乘号,则调用乘法子程序CMP S,13CALL DIVP;运算符为除号,则调

18、用除法子程序JMP STORE1ADD_CALL: CALL ADDPJMP STORE1SUB_CALL: CALLSUBPJMP STORE1MUL_CALL: CALLMULPSTORE1:MOV AX,Y;以下程序将各运算子程序返回的运算结果,按位分解,送入 X变量MOV DX,0MOV BX,1000DIV BXMOV X0, ALMOV AX,DXMOV BL,100DIV BLMOV X1,ALMOV AL,AHMOV AH,0MOV BL,10DIV BLMOV X2,ALMOV X3,AHPOP BXPOP DXPOP AXRETOUTP ENDP;以下为运算键处理子程序,该

19、程序将第一个运算数据的数值计算出来并存入X1变量;或者将第二个运算数据的数值计算出来并存入X2变量;将运算符的值存入 S变量 COUNT PROCPUSH AX PUSH BX PUSH DX MOV DX,0 CALL BITPCMP CC,4 JZ C4CMP CC,3 JZC3CMP CC,2 JZC2JMP C1C4: MOV AX,0 MOV AL,X MOV BX,1000 MUL BX MOV DX,AXC3: MOV AL,X1 MOV BL,100 MUL BL ADD DX,AX C2: MOV AL,X2MOV BL,10 MUL BL;测试X中的数据是多少位;输入的数据

20、是4位数?;输入的数据是3位数?;输入的数据是2位数?;输入的数据是1位数?;按下的是等号,则将第二个运算数据的值存入X2变量;按下的是运算符号,则将第一个运算数据的值存X1变量;清空X变量ADD DX,AXC1: MOV AL,X3MOV AH,0ADD DX,AXCMP E,1JNZ X1_SMOV X2,DXJMP EXIT3X1_S:MOV X1,DXMOV X3,0MOV X2,0MOV X1,0MOV X0,0EXIT3: POP DXPOP BXPOP AXRETCOUNT ENDP;以下为数字键处理子程序X变量中,并由CC记录数据的位数目前数据为。位,即没有数据,则转到 SSS

21、;该程序,将输入的数据按位存放在NUMBER PROCCMP E,1JNZ CONTINUEMOV E,0CALL CLEARCONTINUE:CMP CC,0 ;JZ SSSPUSH AXPUSH DXMOV AL,X3MOV AH,X2MOV DL,X1MOV DH,X0MOV CX,8LL:SHL AX, 1RCL DX,1LOOP LLMOV X3,ALMOV X2,AHMOV X1,DLMOV X0,DHPOP DXPOP AX将当前键入的数据存放到 X的最低位数据位数加1判断数据位数如果数据超过4位,重新从最低位开始存放调显示子程序,显示输入的数据SSS:MOV DI,DL ;IN

22、C CC ;CMP CC,4;JNG EXIT2MOV CC,0;MOV X2,0MOV X1,0MOV X0,0EXIT2: CALL DISP ;RETNUMBER ENDP;加法子程序ADDP PROC PUSH AX MOV AX,X1 ADD AX,X2 MOV Y,AX POP AX RET ADDP ENDP ;减法子程序 SUBP PROCPUSH AX MOV AX,X1 SUB AX,X2 MOV Y,AX POP AX RET SUBP ENDP;乘法子程序 MULP PROCPUSH AX PUSH DX MOV AX,X1 MOV DX,X2 MUL DX MOV Y

23、,AX POP DX POP AX RET MULP ENDP;除法子程序 DIVP PROCPUSH AX PUSH BX PUSH DX MOV DX,0 MOV AX,X1 MOV BX,X2 DIV BX MOV Y,AX POP DX POP BX POP AX RET DIVP ENDP;显示子程序,将X中的数值按位显示出来DISP PROCPUSH BXPUSH AXMOV BH,0LEASI,DISCODECALL BITPCMP CC,4JZQIANCMP CC,3JZBAICMPCC,2JZSHICMP CC,1JMPGJMPNONE;测试X位数QIAN:MOV AH,11

24、100000B;MOV AL,AHOUT 44H,ALMOV BL,X0MOV AL,SI+BXOUT 42H,ALCALL DELYMOV AL,0OUT 42H,AL从第4位开始显示BAI:MOV AH,11010000B;MOV AL,AHOUT 44H,ALMOV BL,X1MOV AL,SI+BXOUT 42H,ALCALL DELYMOV AL,0OUT 42H,AL从第3位开始显示SHI:MOV AH,10110000BMOV AL,AHOUT 44H,ALMOV BL,X2MOV AL,SI+BXOUT 42H,ALCALL DELYMOV AL,0OUT 42H,AL;从第2

25、位开始显示G:MOV AH,01110000B;从第1位开始显示MOV AL,AH中没有数据,不显示;如果X0不为0,则数据为4位数;如果X1不为0,则数据为3位数;如果X2不为0,则数据为2位数;如果X3不为0,则数据为1位数;否则,没有数据OUT 44H,AL MOV BL,X3 MOV AL,SI+BX OUT 42H,AL CALL DELY JMP EXIT4NONE: MOV AL,0 ;X OUT 42H,ALEXIT4: POP AX POP BX RETDISP ENDP;分析数据位数子程序BITP PROCCMP X0,0JNZFOURBITCMP X1,0 JNZTHRE

26、EBITCMP X2,0 JNZTOWBITCMP X3,0 JNZONEBITJMP ZER0BIT FOURBIT:MOV CC,4JMP EXIT5 THREEBIT: MOV CC,3JMPEXIT5TOWBIT:MOV CC,2JMPEXIT5ONEBIT:MOV CC,1JMP EXIT5 ZER0BIT:MOV CC,0EXIT5: RET BITP ENDP;延时子程序 DELY PROCPUSH CXMOV CX,100LOOP $POP CX RET DELY ENDP CODE ENDSEND START、硬件设计(1) 处理器8086当引脚接高电平时,CPU工作于最小模

27、式。此时,引脚信号 2431的含义及其功能如 下:(1)INTA/ (interrupt acknowledge ):可屏蔽中断响应信号,输出,低电平有效。CPU通过信号对外设提出的可屏蔽中断请求做出响应。为低电平时,表示CPU已经响应外设的中断请求,即将执行中断服务程序。(2) ALE (address lock enable ):地址锁存允许信号,输出,高电平有效。CPU禾1J用ALE信号可以把AD15AD0地址/数据、A19/S6 A16/S3地址/状态线上的地址信息锁存在地址锁存器中。(3) DEN/ (data enable ):数据允许控制信号,输出,三态,低电平有效。信号用作总线

28、收发器的选通控制信号。当为低电平时,表明CPUS行数据的读/写操作。(4) DT/ (data transmit or receive ):数据发送/接收信号,输出,三态。 DT/信号用来 控制数据传送的方向。DT/为高电平时,CP必送数据到存储器或I/O端口; DT/为低电平时, CPU妾收来自存储器或I/O端口的数据。(5) IO/M/ (memory I/O select ):存储器、I/O端口选择控制信号。信号指明当前 CPU是选择访问存储器还是访问I/O端口。为高电平时访问存储器,表示当前要进行CPU与存储器之间的数据传送。为低电平时,访问 I/O端口,表示当前要进行CPU与I/O端

29、口之间的数据传送。(6) WR/ (write ):写信号,输出,低电平有效。信号有效时,表明 CPU正在执行写总线周期,同时由信号决定是对存储器还是对I/O端口执行写操作。(7) HLDA(hold acknowledge ):总线保持响应信号,输出,高电平有效。HLDA是与HOLE®合使用的联络信号。在 HLDAW效期间,HLD阕脚输出一个高电平有效的响应信号,同时总线 将处于浮空状态,CPU±出对总线的控制权,将其交付给申请使用总线的8237A控制器使用,总线使用完后,会使 HOLDW号变为低电平,CPU又重新获得对总线的控制权。(8) HOLD( bus hold

30、request ):总线保持请求信号,输入,高电平有效。在DMA数据传送方式中,由总线控制器8237A发出一个高电平有效的总线请求信号, 通过HOL国脚输入到CPU 请求CPU1出总线控制权。2.可编程并行接口芯片 8255ARESET复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O 口均被置成输入方式。PA0PA7:端口 A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。PB0PB7:端口 B输入输出线,一个8位的I/O 锁存器,一个8位的输入输出缓冲器。PC0- PC7:端口 C输入输出线,一个8位的数据输出锁存器/缓冲器,

31、一个8位的数据输入缓冲器。端口 C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个 4位的锁存器,I-2,.一龙27击ERD WR fidA1 RESETOS1J5;d4:3B 百-, ,一州A1A2阳即A5AEA7BO印B2田B3B5B6B7C0C1C?口CJC5C6C7 pppppppp ppppppp p ppp PPPPP分别与端口 A和端口 B配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。RD:读信号线,当这个输入引脚为低电平时,允许 8255通过数据总线向CPU发送数据或状

32、态信息,即CPU从8255读取信息或数据。WR写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写 8255。D0D7:三态双向数据总线,8255与CPU数据传送的通道,当 CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255的读写控制:8255的读/写控制逻辑电路接受 CPU发来的控制口号 RD WR RESET和地址信号 A1A0=然后根据命令端口,控制信号的要求,将端口的数据读出选信CPU或者将CPU11来的数据写入端口,各端口的工作状态。通过用输出指令对8255A的控制字寄存器编程,写入设定工作方式的控制字,可以让 3个数据口

33、以不同的方式工作,端口 A可工作于3种方式的任一种,端口 B只能工作于方式 0和方式1,端口 C除了用于输入输出端口外,还能配合A 口和B 口工作,为这两个端口的输入输出操作提供联系信号。3.可编程定时/计数器8253A8253A的引脚可以分为两部分:与CPU的接口引脚和与外设的接口引脚。(1)与CPU的接口引脚D0D7:三态双向数据线,和 CPU据总线相连,用于传输CPU与8253之间的数据信息、控制信息和状态信息。CS:片选信息,输入、低电平有效。A1、A0:用来对8253A片内三个计数通道和控制字寄存器进行寻址。RD读信号,输入,低电平有效。U5_8DOD1D2D3 04D5D6 07RD WRCLKOGATED OUTO971161

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论