




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一前言 1二总体设计2三硬件设计 23.1微处理器8086芯片 23.2可编程并行接口芯片 8255A 33.3LED数码管 43.44 X 4矩阵按键 43.5硬件原理图 6四软件设计74.1程序流程图 74.2源代码 9 I五仿真 18六课程设计体会 18-I七参考文献 19吏 一刖言1.1课程设计的目的和任务课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识, 解决实际工程设计和应 用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生 理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教:第丸卜学环节。、|
2、 r-_ i通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬 件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能 力,实现由学习知识到应用知识的初步过渡。 通过本次课程设计使学生熟练掌握微机系统与接口扩 展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤, 熟悉微机系统的硬软件开发工具的使用方法。通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的
3、情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表 达设计思想和结果的能力。1.2课程设计指导及要求在课程设计时,23名同学组成1个设计小组,分别完成项目的功能设计、电路编辑及调试、 编码及调试和课程设计报告编写工作。同批次同学中选择同一题的不超过 3组。在教师指导下,可 以相互讨论。每设计小组提交1份设计报告,设计报告由设计小组同学独立完成,不得互相抄袭。 教师的主导作用主要在于指明设计思路, 启发学生独立设计的思路,解答疑难问题和按设计进度进 行阶段审查。学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。同学应积极主动的提出问题
4、、解决问题、讨论问题,互相帮助和启 发。学生在设计中可以引用所需的参考资料, 避免重复工作,加快设计进程,但必须和题目的要求 相符合,保证设计的正确。指导教师要引导学生学会掌握和使用各种已有的技术资料, 不能盲目地、 机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。 学生要在老师的指导下制定F.I I . j 1 I I好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中j. i z3 可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设 计的效率,保证按时完成设计工作并交出合格的设计报告。二总体设计设计思路:首
5、先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就调用子程序进行判断,是数值则进行存储并同时进行显示, 是运算符号等就调用相应的子程序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现4位十进制数以内的加减乘除法运算。运 算完成后将运算的结果储存并显示到 LED显示器上。三硬件设计3.1微处理器8086芯片当引脚接高电平时,CPU工作于最小模式。此时,引脚信号2431的含义及其功能如下:(1) 10/M/ (memoryl/Oselect ):存储器、I/O端口选择控制信号。信号指明当前 CPU是选择 访问存储器还是访问I/O端口。为高电平时访问存储器,表示当前要进
6、行CPU与存储器之间的数 据传送。为低电平时,访问 I/O端口,表示当前要进行 CPU与 I/O端口之间的数据传送。(2) WR/(write ):写信号,输出,低电平有效。信号有效时,表明CPU正在执行写总线周期 同时由信号决定是对存储器还是对I/O端口执行写操作。/ 3) INTA/ / interruptacknowledge ):可屏蔽中断响应信号,输出,低电平有效。CPU通过信号对外设提出的可屏蔽中断请求做出响应。为低电平时,表示CPU已经响应外设的中断请求,即将执行中断服务程序。(4) ALE(addresslockenable ):地址锁存允许信号,输出,高电平有效。CPU利用A
7、LE信号 可以把AD1A AD0地址/数据、A19/S6A16/S3地址/状态线上的地址信息锁存在地址锁存器中。(5) DT/ (datatransmitorreceive):数据发送/接收信号,输出,三态。DT/信号用来控制数据传送的方向。DT/为高电平时,CPU发送数据到存储器或I/O端口; DT/为低电平时,CPU接收 来自存储器或I/O端口的数据。(6) DEN/ (dataenable ):数据允许控制信号,输出,三态,低电平有效。信号用作总线收发器的选通控制信号。当为低电平时,表明CPU进行数据的读/写操作。(7) HOLD( busholdrequest ):总线保持请求信号,输
8、入,高电平有效。在DMA数据传送方式中,由总线控制器 8237A发出一个高电平有效的总线请求信号,通过HOLD引脚输入到CPU请求CPU让出总线控制权。(8) HLDA( holdack nowledge ):总线保持响应信号,输出,高电平有效。HLDA是与HOLD配 合使用的联络信号。在 HLDA有效期间,HLDA引脚输出一个高电平有效的响应信号,同时总线将处于浮空状态,CPU让出对总线的控制权,将其交付给申请使用总线的8237A控制器使用,总线使用完后,会使 HOLD信号变为低电平,CPU又重新获得对总线的控制权。3.2可编程并行接口芯片8255A微机系统的信息交换有两种方式:并行通信接口
9、方式和串行通信接口方式。 接口电路在CPU和I/O设备之间起着信号的变换和传输的作用。8255A可为86系列CPU与外部设备之间提供并行输入/输出 的通道。由于它是可编程的,可以通过软件来设置芯片的工作方式, 因此,用8255A连接外部设备时, 通常不用再附加外部电路,使用教方便。并行接口是在多根数据线上,以数据字节 /字与I/O设备交. , . .1换信息。321dO39JEIE1920212Z23241415161713121110巫 8255AWRAOAtRESETo 1 2 3 4 6 7 c 1 2 3 4- C- 6- 7 BBBB-RBBB accQCQac pppppppp P
10、PPPPPPP并且使状态线寄存器”中, 设在收到这个 据到达接口中 或者向CPU发 中读取数据。中的标志,且在输入过程中,输入设备把数据送给接口,接口中的数据被读取后,接口会自动清除状态寄存器“输入准备好”有效。接口把数据存放在“输入缓冲 同时使“输入回答”线有效,作为对外设的响应。外 回答信号后,就撤消数据和“输入准备好”信号。数 后,接口会在“状态寄存器”中设置输入准备好标志, 一个中断请求。CPU可用查询方式或中断方式从接口撤消对CPU的中断请求在输出过程中,每当输出寄存器可以接收数据,接口就会将状态寄存器中“输出准备好”状 态置1或向CPU发一个中断请求,CPU可用查询或中断方式向接口
11、输出数据。当CPU俞出的数据到达接口后,接口会清除“输出准备好”状态,把数据送往外设,并向外设发一个“数据输出准备好”信 号。外设受到驱动后,便接收数据,并向接口电路发一个“输出回答”信号,接口收到该回答信号后, 又将状态寄存器中“输出准备好”置位,以便CPU俞出下一个数据。定义工作方式控制字:3.3LED数码管LED为发光二极管构成的显示器件,亦称数码管。由7个字符段和一个小数点段组成,每段对应- I I一个发光二极管,当发光二极管点亮时,相应的字符段点亮。LED有共阴极和共阳极两种供应状态。共阴极显示时,将LED显示的COM接地,将八个字符段端a、b、c、d、e、f、g、dp依次与一个8位
12、/I 1 I j *.I/O 口的最低到最高位连接,当I/O给LED的哪个字符段送入一个高电平时,该段就被点亮,从而可 从这7个字符段中被点亮的构成相应的字符显示出来。同理,COM阳极即将COM端接Vcc,其显示原| */ : / / 理与CON阴极的基本相同,但I/O 口送入低电平是相应的段才被点亮。.I I3.44 X 4矩阵按键键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮的话必须要需要一 个I/O 口对它进行检测,而键盘往往这需要键盘按钮数一半的I/O 口数对它进行检测,也许对一个比较简单的系统I/O 口数一般不是问题,但对于一个大型、复杂的系统来说I/O资源就显
13、得非常珍贵了, 尽量减少I/O使用是非常利于降低成本,另外一方面键盘比用独立按键要美观,这也是键盘能够长期 得到人们青睐的原因,可是硬件上的节省必然导致软件上编程的复杂,那就来看看键盘到底使软件编 程有多复杂?因为4X4矩阵键盘有8个管脚,于是将键盘接8255A的PC口,至于为什么选择PC是有原因的, 进行键盘扫描一般要求有一部分的I/O 口的工作方式是输入,另一部分I/O是输出,具体到4X4键 盘则要求4个I/O 口输入,另外4个输出,这一点PC口刚好符合,而PA PB口要么全部输入或输出, 所以只能是PC口接键盘。3.5硬件原理图四软件设计4.1程序流程图(1)键盘扫描程序流程图:开始N键
14、闭合?YN键释放?YN键闭合?Y初始化保存键值延时12ms键扫描h(2)总程序流程图:r结束4.2源代码DATASEGMENTX DB ;存放数据的每一位X1 DW ?;存放第一个数据值X2 DW?;存放第二个数据值Y DW?;存放运算结果SDB?;存放运算符号值EDB?;按下等号键标记CC DB?;存放运算数据位数HDB0;存放按键行号LDB0;存放按键列号DISCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;段码表DATAENDSCODESEGMENTASSUMEDS:CODE,DS:DATAS
15、TART: MOVXQATAMOVDS,AXMOVkL,9OH;设置为A 口输入,B 口输出,C 口输出OUT46H,ALMOV)l,OFFSETX+3 ;DI 指向 X 的高位KKK:CALL KEY;扫描按键JMPKKK;以下为按键扫描子程序,程序返回后,在变量 H和L中存放当前按键的行列号KEYPROCCHECK: CALL DISP ;等待按键按下的同时进行显示MOAL,0F0H;所有行输出低电平OUT44H,ALINAL,40HCMPAL,0FFH;读列值JZCHECK;若都为高电平则无键按下,等待MOVCX,50LOOP $;延时消抖INAL,DX;重读列值CMPAL,0FFHJZ
16、CHECK无键按下一直等待MOVH,0;有键按下,先把行列号变量清 0MOL,0MOBL,01HMOBH,0FE H扫描法读键值:从第一行开始测试,即PC0输出低电平NEXT:MOAL,BHOUT44H,ALNEXTH: IN AL,40H ;读列值,判断是第几列有键按下TEST AL,BL;从第一列开始判断JZ WAIT0ROLBL,1CMFBL,10H;当前行状态下没有列有键按下,则转为对下一行的测试JZ NEXTLINC H;每判断一列,列号加1JMPNEXTH ;再对下一列进行判断NEXTL: MOVH,0MOVBL,01HR0LBH,1;对下一行测试,让下一个 PC 口输出低电平CM
17、FBH,OEFHJZ EXITINC LJMPNEXTWAITO:INAL,40H;若有键按下,则等该按键松开后再计算键值CMPAL,OFFHJNZ WAIT0MOVCX,50;延时消抖LOOP $IN AL,40HCMPAL,0FFHJNZ WAIT0;调计算键值子程序CALL KEYVALUEEXIT:RETKEYENDP;以下为计算键值子程序,通过行列号计算键值(键值=行号*4+列号)键值存放在DL寄存器中KEYVALUEPROCMODL,L MODH,HSHLDL,1;列号乘4;按下的是数字键SHLDL,1 ADDDL,DHCMPDL,9JNGNUM_CALLCMFDL,14JLCON
18、T_CALL;按下的是运算键CMPDL,14JZOUTP_CALL;按下的是等于键CMPDL,15JZ CLR_CALL;按下的是清除键NUM_CALL:CALL NUMBER ;调数字键处理子程序JMPEXIT1CONT_CALIMIOS,DL ;存放运算键的键值MO巴0CALL COUNT调运算键处理子程序,计算第一个加数JMPEXIT1OUTP_CALLCALL OUTP ;调等号键处理子程序JMPEXIT1CLR_CALL: CALL CLEAR ;调清除键处理子程序EXIT1:RETKEYVALUEENDP;以下为清除键处理子程序,按下清除键后,X变量全部清0CLEARPROCMOX
19、3,0MOX2,0MOVX1,0MOVX0,0CALL BITPRETCLEARENDPX2变量;以下为等号键处理子程序,该子程序负责将第二个运算数据的数值计算出来存入 ;并根据运算符号,调用相应的运算子程序OUTPPROCPUSH AXPUSH DXPUSH BXINC ECALL COUNT调运算键处理子程序,计算第二个运算数据CMPS,10JZADD_CALL运算符为加号,则调用加法子程序CMPS,11JZSUB_CALl运算符为减号,贝碉用减法子程序CMPS,12JZMUL_CALL运算符为乘号,则调用乘法子程序CMPS,13CALL DIVP;运算符为除号,则调用除法子程序JMPST
20、ORE1ADD_CALL: CALL ADDPJMPSTORE1SUB_CALL: CALL SUBPJMPSTORE1MUL_CALL: CALL MULPSTORE1:MOVX,Y;以下程序将各运算子程序返回的运算结果,按位分解,送入X变量MODX,0 MOBX,1000DIV BXMOVX0,ALMOAX,DX MOBL,100DIV BLMOX1,ALMOAL,AHMOAH,0 MOBL,10DIV BLM0VX2,ALM0VX3,AHPOPBXPOPDXPOFAXRETOUTPENDP;以下为运算键处理子程序,该程序将第一个运算数据的数值计算出来并存入X1变量;或者将第二个运算数据的
21、数值计算出来并存入X2变量;将运算符的值存入S变量COUNTPROCPUSHAXPUSHBXPUSHDXMODX,0CALL BITP;测试X中的数据是多少位CMFCC,4;输入的数据是4位数?JZC4CMPCC,3;输入的数据是3位数?JZC3CMPCC,2;输入的数据是2位数?-IJZ C2JMPC1 ;输入的数据是1位数?C4: MOVAX,0MOVAL,X0MOBX,1OOOMULBXMODX,AXC3: MOVAL,X1MOBL,1OOMULBLADDDX,AXC2: MOAL,X2MOBL,1OMULBLADDDX,AXC1: MOAL,X3MOAH,OADDDX,AXCM圧,1J
22、NZ X1_SMOVX2,DX;按下的是等号,则将第二个运算数据的值存入X2变量JMPEXIT3X1_S: MOVX1,DX ;按下的是运算符号,则将第一个运算数据的值存X1变量MOVX3,O;清空X变量MOVX2,OMOVX1,0MOVX0,0EXIT3:POP DXPOFBXPOPAXRETCOUNTENDP;以下为数字键处理子程序;该程序,将输入的数据按位存放在 X变量中,并由CC记录数据的位数NUMBERPROCCM圧,1JNZ CONTINUEMOVE,。CALL CLEARCONTINUE:CMPCC,0;目前数据为0位,即没有数据,则转到 SSSJZ SSSPUSH AXPUSH
23、 DXMOVL,X3MOVH,X2MOVDL,X1MOVDH,X0MOVDX,8LL:SHLAX,1RCLDX,1LOOP LLMOVX3,ALMOVX2,AHMOVX1,DLMOVX0,DHPOPDXPOPAXSSS:MOVDI,DL;将当前键入的数据存放到 X的最低位INCCC;数据位数加1CMP3C,4;判断数据位数JNGEXIT2MOVCC,0;如果数据超过4位,重新从最低位开始存放MOVX2,0MOVX1,0MOVX0,0EXIT2:CALLDISP;调显示子程序,显示输入的数据RETNUMBERENDP;加法子程序ADDPPROCPUSH AXM0AX,X1ADDAX,X2MOVY
24、,AXPOPAXRETADDPENDP;减法子程序SUBPPROCPUSH AXM0AX,X1SUBAX,X2MOVY,AXPOPAXRETSUBPENDP;乘法子程序MULPPROCPUSH AXPUSH DXMOAX,X1MODX,X2MULDXMOVY,AXPOFDXPOPAXRETMULPENDP;除法子程序DIVPPROCPUSH AXPUSH BXPUSH DXMOV)X,OMOAX,X1MOBX,X2DIV BXMOVY,AXPOPDXPOPBXPOPAXRETDIVPENDP;显示子程序,将X中的数值按位显示出来DISPPROCPUSH BXPUSH AXMO出H,0LEASI
25、QISCODECALL BITP;测试X位数CMPX,4JZ QIANCMPX,3JZ BAICMPX,2JZ SHICMPX,1JMPGJMPNONEQIAN: MOV从第4位开始显示MOVA_,AHOUT44H,ALMOVBL,X0MOVAL,SI+BXOUT42H,ALCALLDELYMOVA_,0OUT42H,ALBAI:MOV从第3位开始显示MOVAL,AHOUT44H,ALMOVJL,X1MOVAL,SI+BXOUT42H,ALCALLDELYMOVA_,0OUT42H,ALSHI:MOV从第2位开始显示MOVA_,AHOUT44H,ALMOVJL,X2MOVA_,SI+BXOUT
26、42H,ALCALLDELYMOVA_,0OUT42H,ALG:MOVkH,01110000B;从第1位开始显示MOVA_,AHOUT44H,ALMOVBL,X3MOVA_,SI+BXOUT42H,ALCALLDELYJMPEXIT4NONE:MOV AL,O;X中没有数据,不显示OUT42H,ALEXIT4:POP AXPOFBXRETDISPENDP;分析数据位数子程序BITPPROCCMFX0,0;如果X0不为0,则数据为4位数JNZFOURBITCMFX1,0;如果X1不为0,则数据为3位数JNZTHREEBITCMFX2,0;如果X2不为0,则数据为2位数JNZTOWBITCMPK3
27、,0;如果X3不为0,则数据为1位数JNZONEBITJMRZER0BIT;否则,没有数据FOURBIT: MOVCC,4JMPEXIT5THREEBIT:MOVCC,3JMPEXIT5TOWBIT:MOVCC,2JMPEXIT5ONEBIT:MOVCC,1JMPEXIT5ZER0BIT:MOVCC,0EXIT5: RETP- 1BITPENDP;延时子程序DELYPROCPUSHCXMOVCX,100LOOP$POPCXRETDELYENDPCODEENDSENDSTART五仿真第一步,进行数码管显示的仿真。编写一段直接赋值送到数码管显示的程序,进行数码管显示 的仿真第二步,进行键盘扫描的仿
28、真。编写代码,将扫描到的键值送到数码管显示。第三步,在数码管显示和键盘扫描程序都正确的基础上,逐步增加代码,增加功能,逐步实现 按键值的存储与显示、清零、加法、减法、乘法、除法等功能的仿真。六课程设计体会上学期刚学过微机原理,学得不是很深入,仅限于课本知识的掌握,而此次课程设计将会是一个很好的机会,来考察自己对课本知识的掌握以及应用情况。 本次课程设计是四人一组,并且自由 选择设计课题,我们小组选择了简易计算器的课题,在做的过程中也遇到很多困难。在硬件设计模块,参考了课本上的相关例题以及查阅相关资料,发现关于此次课程设计的所有课题的硬件原理图都有很大的共同之处,都是利用 8086芯片经过地址锁存器,再通过译码器,最% V | I后利用8255A或者更多芯片(如8253等)进行设计在软件设计模块,数码管显示和键盘扫描程序参考了书上的相关例题,也查阅了很多资料,发 *1 XI /I I j *.现原理都差不多,并且对此次课程设计有了较为清晰的思路。 前一周基本上都在写程序,期间一直 没有进行仿真。在写好所有的程序时,才开始汇编,发现有很多语法错误,这是必然的,毕竟10|1 j多页的程序,肯定会
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经济数据分析与决策试题及答案
- 材料疲劳裂纹扩展数据统计分析重点基础知识点
- 材料疲劳损伤累积分析数据可视化重点基础知识点
- 船舶火灾呼叫外界救火应急预案(3篇)
- 航空器舱内火灾应急预案(3篇)
- 课程学习建议与经验2025年计算机二级VB考试试题及答案
- 学院火灾处置应急预案(3篇)
- 经济增长的驱动力与政策应对策略试题及答案
- 信息处理技术考试新面貌探讨试题及答案
- 软件设计师行业现状与试题及答案案例研究
- 育龄人群不孕不育防治临床实践指南(2024)解读
- AgFunder -2025 年全球农业食品科技投资报告 Global AgriFoodTech Investment Report 2025
- (二调)武汉市2025届高中毕业生二月调研考试 语文试卷(含官方答案解析)
- 线路安规培训
- 大风天气下的物流运输安全措施
- 老旧小区加装电梯使用公约协议
- 新生儿护理安全用药
- 2025年湖北省新华书店集团有限公司招聘笔试参考题库含答案解析
- 医疗护理医学培训 临时起搏器的使用及参数调整课件
- 《中国妇女妊娠期体重监测与评价》(T-CNSS 009-2021)
- 情境教学法在初中函数教学中的实践研究
评论
0/150
提交评论