




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二一一二一二学年第 一 学期信息科学与工程学院自动化系课程设计计划书课程名称: 微机原理及应用课程设计 班 级: 自动化 0901 姓 名: 王 立 学 号: 200904134032 指导教师: 孟志华 二一一 年 十二 月 六 日 一、 课题名称简易计算器设计二、 课题目的利用8088和8255设计一个简易计算器,并将其结果显示在LED数码管上。熟悉系统设计的基本步骤,掌握8088与8255的接口设计,掌握通过8255设计键盘扫描技术,掌握通过8255显示七段共阴极数码管设计。加强对8088数据总线,地址总线及接口寻址的理解,加深对8255的端口控制的理解。三、 需求分析(1) 能够实现99以内的加减乘法运算,并显示在2位LED上。(2) 对于减法运算产生的负数,可在LED上显示“-”号,若负量超过9,则显示“E0”。四、 方案选择方案一: 该方案将LED显示电路直接接在8088的DB上,而键盘则采用8255进行扫描。方案二: 该方案则是将LED显示电路和键盘扫描电路分别接在两个不同的8255上,扫描和显示时,选中不同的8255。方案三: 该方案则只用一片8255驱动LED显示和键盘扫描电路。 方案评估:方案一:LED显示驱动电路实现起来较简单,但是很浪费系统总线资源,舍弃!方案二:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,与建设资源节约型社会初衷冲突!舍弃!方案三:此种方案较为经济,方便,具有模块化的特点(因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255即可实现要求!)综上所述:采用方案三!五、 程序流程图程序总流程图:判断输入流程图:六、 系统原理图键盘映射图:789*456+123-0= 键盘编码图:777B7D7EB7BBBDBED7DBDDDEE7EBEDEE 系统原理图:注: 1、复位电路单独画在旁边,其参数设置符合6MHZ。 2、74HC04反相器由于位置不够,本人自己画了一个小型的74HC04。3、IOW,IOR信号线由于采用了最大系统组态,故由8288的IORC和AIOWC代替。4、8088的CLK由8284A提供,其电路连接方式参照Datasheet5、最大系统组态连接方式参照课本。6、LED与键盘扫描电路的上拉电阻阻值统一采用4.7K,保证数码管有足够亮度。7、所有芯片的电源和GND均未标出。8、7段数码管为共阴极连接方式。9、74LS373和74LS245作为提高总线驱动能力的作用而存在。10、8259A的INT信号和8088的INTR信号相连,由于纸张大小问题,用网络标号“INT8259A”表明他们是相连的。 11、CAD图纸见附件。七、 元件清单元件名称参数值数量8088U118255U218284U318288U418259AU5174LS245U6174LS373U7 U8 U9374LS00U10174LS30U11174HC04U12 U13 U14 U154RES2R1R20 4.7K20RES2R21 2001RES2R22 1K1RES1R11DIODED11CAPC11CAPC2 22uF1SW-PBS0S15167-SEG-DPYDS1 DS22CRYSTALY11八、 程序源代码PAGE60,132TITLECalculator A program to calculate with 8088 and 8255;-DISPLAYMACRO;送至LED显示函数MOVDX,383H;控制字寄存器的端口地址(8255)MOVAL,80H;方式选择字 10000000BOUTDX,ALMOVDX,381H;B端口的地址送DXMOVAL,HIGH_NUM;段码送至B端口显示OUTDX,ALMOVDX,383HMOVAL,80H;方式选择字 10000000BOUTDX,ALMOVDX,382H;C端口地址送DXMOVAL,LOW_NUM;段码送至C端口显示OUTDX,ALJMPAllscan_Key;显示完成,跳至键盘扫描ENDM;-CALCMACRO;计算结果并存至HIGH_NUM,LOW_NUM中DIVTEN;除10取余和商分别显示MOVDX,AX;保存计算结果CBW;将商AL符号扩展至AXMOVBX,AXMOVCL,LEDBXMOVHIGH_NUM,CL;高位段码送至HIGH_NUM(乘结果)MOVAX,DXXCHGAH,AL ;交换AH和AL,将余数放在AL准备符号扩展CBW;将余数AL符号扩展至AXMOVBX,AXMOVCH,LEDBXMOVLOW_NUM,CH;低位段码送至LOW_NUM(乘结果)ENDM;-.MODELSMALL;程序大小为SMALL数据段和代码段均小于64KB.STACK100;堆栈大小100个字.DATA;数据段KEYTABDB0E7H,0D7H,0DBH,0DDH,0B7H,0BBH,0DBH;键盘编码09 * + - = DB77H,7BH,7DH,7EH,0BEH,0DEH,0EEHLED DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;LED显示字模(共阴极)OPERANDDB0;用于存放运算符号TENDB10NUM1DB0;用于存放第一个计算数NUM2DB0;用于存放第二个计算数HIGH_NUMDB0;用于存放结果的高位段码LOW_NUMDB0;用于存放结果的低位段码;-.CODE ;代码段MAINPROCFAR;主程序开始MOVAX,data;将DS指向DATAMOVDS,AXAllscan_Key:MOVDX,383H;控制字寄存器地址的端口地址(8255)MOVAL,80H;方式控制字 10000000BOUTDX,ALMOVDX,380H;端口A的地址送DXXORAL,ALOUTDX,AL;送0,全键盘扫描MOVDX,383HMOVAL,90H;方式控制字 10010000B A输入OUTDX,ALMOVDX,380H;端口AINAL,DXANDAL,0FH;屏蔽掉送回来的AL中的高四位CMPAL,0FHJZAllscan_Key;相等说明没有键按下,重新全键盘扫描MOVBX,0MOVAH,7FH;保存扫描设定初量Scan_key:MOVDX,383HMOVAL,80H;方式控制字,A输出OUTDX,ALMOVDX,380H;端口AMOVAL,AH;逐行扫描OUTDX,ALMOVDX,383HMOVAL,90H;A输入OUTDX,ALMOVDX,380H;端口AINAL,DX;读按键状态ANDAL,0FH;取数据的低四位CMPAL,0FHJNEDecodeRORAH,1;向右循环移位,扫描下一行JMPAllscan_KeyDecode:ANDAH,0F0HORAL,AH;AL,AH或操作组合编码CMPAL,KEYTABBX;比较编码JENextINCBXJMPDecodeNext:CMPBX,13;13的偏移量表示编码值为EE,即=JECalc ;检测到=,计算结果CMPBX,10;10的偏移量表示编码值为7E,即*JNSStroe ;比10大,表示按下*或+或-MOVAL,OPERANDCMPAL,0;OPERAND若为0,表示为按下运算符号JNENumber ;OPERAND非0,说明按下过运算符号MOVAL,NUM1MULTEN ;NUM1*10+BLADDAL,BLMOVNUM1,AL ;将第一个运算数保存在NUM1中JMP Allscan_KeyStroe:MOVOPERAND,BL;按下了运算符号并存入OPERAND中JMPAllscan_KeyNumber:MOVAL,NUM2MULTEN;NUM2*10+BLADDAL,BLMOVNUM2,AL;将第二个运算数保存在NUM2中Calc:CMPBL,10JZ_Mul;乘法CMP BL,11JZ_Add;加法CMPBL,12JZ_Sub;减法_Mul:MOVAL,NUM1MULNUM2CMPAL,100;结果超过99,则显示E0JAEOverflowCALC ;将计算结果存至HIGH_NUM,LOW_NUM中DISPLAY;送至LED显示Overflow:MOVHIGH_NUM,79H;79H为E的段码MOVLOW_NUM,3FH;3FH为0的段码JMPAllscan_Key_Add:MOVAL,NUM1ADDAL,NUM2;NUM1+NUM2JAEOverflow;溢出CALC;将计算结果存至HIGH_NUM,LOW_NUM中DISPLAY;送至LED显示_Sub:MOVAL,NUM1SBBAL,NUM2JCNegtive;有借位,说明结果为负数CALC ;将计算结果存至HIGH_NUM,LOW_NUM中DISPLAY;送至LED显示Negtive:CMPAL,-9 ;负量超过9了吗?JSOverflow ;超过了,则溢出,显示E0MOVHIGH_NUM,40H;40H为-的段码NEGAL ;求补CBW ;AL符号扩展至AXMOVBX,AXMOVCL,LEDBXMOVLOW_NUM,CL;低位段码送至LOW_NUMJMPAllscan_Key;-MOVAX,4C00HINT 21HMAINENDPENDMAIN九、 参考文献1 朱定华,微机原理、汇编与接口技术清华大学出版社,2005Page:163(8088引脚图)、171(最大系统组态连接方式)、176(最大系统组态时的I/O读写时序图)、221(4x4键盘扫描)、264(8255引脚图)、266272(方式0输入输出程序例程)。2 张毅刚,新编MCS-51单片机应用设计(第3版)哈尔滨工业大学出版社,2003Page:26(按键电平复位电路) 3 www.A 8088pdf 8255pdf 8088CLK时钟产生电路由8284产生。十、 心得与体会此次的微机原理课程设计从开始的方案设计,方案选择,到原理图的设计,原理图的绘制,再到最后的接口程序编写只用了两天的时间。其中编写手画原理图和编写程序用了一天,上机用Protel画图外加整理报告用了一天。这两天感觉很充实,因为这是我有史以来第一次完全设计一个具有实用性的系统接口电路。在设计的过程当中,以前总是感觉一上来就开始连接电路,但是脑海里的思绪似乎都很乱,没有一条很清晰的线路。于是就静下心来,发现设计一个电路首先需要的是一个方案,于是方案选择的模块就诞生了,并且在思考的过程当中,发现了几种不同的设计方案,当时心里就开心了起来,毕竟都是突然冒出来的点子,比较有成就感,尤其是选择了一个具有模块化的方案三。选择好了方案就开始设计电路的连接:8088与8255的连接,键盘的扫描,LED的接口显示很快就完成了。然后根据画出来的系统连接引脚图,开始了接口的程序设计,我想这应该是重头戏了,我用了一天的时间来做他。之前编写程序的时候也总是不喜欢什么程序流程图之类的东西,感觉拿东西没必要,而且很浪费时间,还不如自己直接写代码来的爽。刚开始感觉没问题,后来就卡了一个输入检测的地方。因为从8255传来的数据可能是第一个运算数,也可能是第二个运算数,还可能是+、-、*之类的运算符号,甚至是“=”号。于是很自然的就开始话条件判断语句开始程序的跳转指令设计。完成之后,乍眼一看才发现原来我写的是流程图。随后根据这个流程图很快就把这个难点给攻破了。经过几经周折,终于把程序编好了,于是就开始上机用Protel画图,让我重拾了当年使用Protel的快感。不过在画到8088的AEN信号时,我卡了壳(之前设计时,以为AEN在8088引脚上,采用的是最小系统组态)。后来一翻书,才发现8088只有在最大系统组态中的8288总线控制器上才有AEN这个信号,于是就忍痛可爱的将辛辛苦苦画的最小系统换成了最大系统,于是就有了8259A。在引出AEN信号之后,工程就差不多完成了,只是在74LS30八输入与非门那里,由于纸张的原因,不得不自己画了一个小型的74HC04反相器才得以解决问题。另外说一句,LED数码管的上拉电阻由于没找到8255的最大灌电流参数,所以选用的4.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代表双联系活动方案
- 以政治说办案活动方案
- 贵州省黔西南布依族苗族自治州2023-2024学年五年级下学期期末考试数学试卷(含答案)
- 仲景大讲堂活动方案
- 企业供货活动方案
- 企业公司宣传片策划方案
- 企业出国视察活动方案
- 企业参与活动方案
- 企业团体献爱心活动方案
- 企业外出活动策划方案
- 人教版五年级上册小数乘除法竖式计算题200道及答案
- 广东省建筑地基处理技术规范
- DL∕T 5003-2017 电力系统调度自动化设计规程
- CJ/T 43-2005 水处理用滤料
- 《财务管理学(第10版)》课件 第9、10章 短期资产管理、短期筹资管理
- 天津市2024年中考英语真题【附真题答案】
- 平凡的世界(阅读任务三 品味小说语言)教学设计-【中职专用】高一语文(高教版2023基础模块上册)
- 2024年辽宁省中考化学试卷(含答案)
- (完整版)工匠精神课件
- 国开(浙江)2024年《领导科学与艺术》形成性考核作业1-4答案
- 零售药店药品验收知识培训试题
评论
0/150
提交评论