




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除郑州航空工业管理学院微机原理课程设计说明书 2007 级 电气工程及其自动化 专业 1206972 班级题 目 简单计算机的设计 指导教师 职 称 学 号 1206972 姓 名 二一0 年 六 月 十八 日简易计算器的设计摘要: 1、课题:设计一个可以进行2位数的四则运算的计算器。2、要求:(1)键输入数和运算符号; (2)LED显示运算过程和结果(十进制数); (3)表示出当前的运算类型; (4)具有清零和复位功能; (5)具有连续运算功能。关键词: 8279A芯片、74LS138译码器、74LS240芯片、小键盘、LED发光二极管。一、简单计算器工作的基本原理:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序进行2位数四则运算。运算完成后将运算的结果储存并显示到LED显示器上。通过键盘上的C键实现清零和复位功能。在一次运算之后可以直接进行下一次运算无需复位。二、设计方案 1、硬件部分本次设计所选用的芯片为:8279A芯片、LED发光二极管、小键盘。由于8279A的输出电流与LED不匹配的问题,需要驱动电流,本实验中选择74LS240。(1)、8279A芯片在本设计中用8279A芯片控制键盘输入和LED显示。8279A芯片是一种通用的可编程序的键盘/显示接口器件,可与任何8位机接口,能完成键盘输入和LED显示控制两种功能。采用8279作为键盘/显示器接口,则可以实现对键盘、显示器自动扫描,8279主要是管理键盘输入和显示器输出的。8279可编程键盘显示器接口芯片具有动态显示驱动电路简单、不占用CPU 的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点,是实时性较高的测控系统的首选器件之一。(2)、74LS138译码器在本设计中74LS138译码器用来扫描计数器采用编码工作方式。74LS138译码器的功能:74LS138是3/8译码器,即对3个输入信号进行译码,得到8个输出状态。G1、G2A、G2B为数据允许输出端,G2A、G2B低电平有效,G1高电平有效。A、B、C为译码信号输出端,Y0Y7为译码输出端,低电平有效。(3)、74LS240译码器本设计中74LS240译码器主要是为增加LED的驱动电流。74LS240译码器的功能:74LS240 TTL 八反相三态缓冲器/线驱动器各个引出端: 1A、2A为输入端; 、为三态允许端(低电平有效);1Y8Y为输出端。(4)、小键盘本设计中小键盘用于输入二进制数字。(5)、LED发光二极管在本设计中采用7段数字LED发光二级管,做为终端显示。显示数值的输入及结果输出的显示。在本设计中采用共阴极接法。 2、软件部分输入:小键盘上的16个按键中0到9十个数字键作为数字输入,A、B、C、D分别作为加、减、乘、除,F作为等于号。通过对8279初始化,实现对每个按键赋予不同的功能。显示:8279A芯片内部有一个显示RAM和一个FIFO RAM,可以暂存从小键盘中读出的数据,同时可以将内存中的数据暂存到显示RAM中,简化了程序复杂程度。每次将各个位要显示的数据处理好后到换码表中找到对应值,初始化8279A后将值送到数据口,即实现显示的目的。清零:在程序中设置了按键数目的限制(定为8),当8个数码块全有字符显示后再按键,清除显示。三、硬件设计硬件电路图的设计:图中8279A的地址由和A0决定,故数据口地址为7FFEH,命令口地址为7FFFH。图中显示部分段选码由8279的OUTA3OUTA0、OUTB3OUTB0通过驱动器74LS240提供,位选码由SL2SL0 经3-8译码器通过驱动器74LS240提供。四、软件设计在软件设计中,显示方式采用了8个字符显示,从左输入方式,编码扫描键盘,双键锁定。由于该系统对实时性及速度要求并不十分高,所以时钟频率采用6M Hz已足够了,故程序时钟命令字取为2AH,用以保证100kHz的内部工作频率。由于采用10ms定时扫描查询方式,所以在下次开始扫描时,先应清空8279A,清除显示RAM大约需要160s的时间,在此期间,FIFO状态字的最高位DU=1,表示显示无效,CPU不能显示RAM写入数据,所以清除命令状态字取D1H。CPU对8279A的控制是先读回8279A的状态字,查看PIFORAM中有无字符,若有将根据字符个数读出所有字符,并进行相应处理;若无,则直接返回。CPU对8279A的监视采用查询方式,对8279A分配的数据口地址为8000H,状态口地址为8001H,CPU每隔10ms定时中断查询一次,所有显示采用查询段码表的方式实现,简化了程序设计过程,提高了程序质量。程序流程图如下:开始调用地址转化调用8279初始化DI取数据首地址是否有按键按下N按键数加1显示结果AL=6 ?AL与KEYCONT换CALL KEY_NUMAL中是否为加AL是否为减AL是否为乘号AL是否为除AL中大于10ALKEYOUNT,INC ALAL5?重新扫描按键转加法转减法转乘法转除法按键数置0,清除显示清零NNNNYYNNYYNNN程序清单:STACK SEGMENT STCAK DB 64 DUP(?)STACK ENDS DATA SEGMENT ORG 3000H VAR1 DB 00H,01H,02H,03H,04H VAR2 DB 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH VAR3 DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H VAR4 DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AL,88H OUT 63H,AL ;82255A初始化 MOV BX,0000H ;BX清零STT: MOV AL,00H ;键盘测试 OUT 61H.ALNEXT: IN AL,62H AND AL,0C0H CMP AL,0C0H JNZ KEYABC CALL DISP ;调用显示程序 JMP STTKEYABC:CALL TIME ;延时 IN AL,62H AND AL,0C0H CMP AL,0C0H JNZ KEY JMP STTKEY: MOV AL,0FEH ;键盘扫描识别 OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_0 CALL KEY8 JMP STTKKEY_0: TEST AL,40H JNZ KEY_9 CALL KEY0 JMP STTKKEY_9: MOV AL,0FDH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_1 CALL KEY9 JMP STTKKEY_1: TEST AL,40H JNZ KEY_A CALL KEY1 JMP STTKKEY_A: MOV AL,0FBH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_2 CALL KEYA JMP STTKKEY_2: TEST AL,40H JNZ KEY_B CALL KEY2 JMP STTKKEY_B: MOV AL,0F7H OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_3 CALL KEYB JMP STTKKEY_3: TEST AL,40H JNZ KEY_C CALL KEY3 JMP STTKKEY_C: MOV AL,0EFH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_4 CALL KEYC JMP STTKKEY_4: TEST AL,40H JNZ KEY_D CALL KEY4 JMP STTKKEY_D: MOV AL,0DFH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_5 CALL KEYD JMP STTKKEY_5: TEST AL,40H JNZ KEY_D CALL KEY5 JMP STTKKEY_E: MOV AL,0BFH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_6 CALL KEYE JMP STTKKEY_6: TEST AL,40H JNZ KEY_F CALL KEY6 JMP STTKKEY_F: MOV AL,07FH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_7 CALL KEYF JMP STTKKEY_7: TEST AL,40H JNZ KEY_71 CALL KEY7 JMP STTKKEY_71:JMP STTKKEY9: CMP BH,00H ;按键9处理子程序 JZ KEY9_1 ;未按过符号键,不清零 CALL CLEAR ;已按过符号键,清零KEY9_1:CALL LP1 ;低4位字节前移 MOV AL,6FH ;最低字节输入一个数据 MOV SI+4,AL MOV AL,09H MOV DI+4,AL CALL DISP ;显示 RET;返回KEY8: CMP BH,00H ;按键8处理子程序 JZ KEY8_1 CALL CLEARKEY8_1:CALL LP1 MOV AL,7FH MOV SI+4,AL MOV AL,08H MOV DI+4,AL CALL DISP RETKEY7: CMP BH,00H ;按键7处理子程序 JZ KEY7_1 CALL CLEARKEY7_1:CALL LP1 MOV AL,07H MOV SI+4,AL MOV AL,07H MOV DI+4,AL CALL DISP RETKEY6: CMP BH,00H ;按键6处理子程序 JZ KEY6_1 CALL CLEARKEY6_1:CALL LP1 MOV AL,7DH MOV SI+4,AL MOV AL,06H MOV DI+4,AL CALL DISP RETKEY5: CMP BH,00H ;按键5处理子程序 JZ KEY5_1 CALL CLEARKEY5_1:CALL LP1 MOV AL,6DH MOV SI+4,AL MOV AL,05H MOV DI+4,AL CALL DISP RETKEY4: CMP BH,00H ;按键4处理子程序 JZ KEY4_1 CALL CLEARKEY4_1:CALL LP1 MOV AL,66H MOV SI+4,AL MOV AL,04H MOV DI+4,AL CALL DISP RETKEY3: CMP BH,00H ;按键3处理子程序 JZ KEY3_1 CALL CLEARKEY3_1:CALL LP1 MOV AL,4FH MOV SI+4,AL MOV AL,03H MOV DI+4,AL CALL DISP RETKEY2: CMP BH,00H ;按键2处理子程序 JZ KEY2_1 CALL CLEARKEY2_1:CALL LP1 MOV AL,5BH MOV SI+4,AL MOV AL,02H MOV DI+4,AL CALL DISP RETKEY1: CMP BH,00H ;按键1处理子程序 JZ KEY1_1 CALL CLEARKEY1_1:CALL LP1 MOV AL,06H MOV SI+4,AL MOV AL,01H MOV DI+4,AL CALL DISP RETKEY0: CMP BH,00H ;按键0处理子程序 JZ KEY0_1 CALL CLEARKEY0_1:CALL LP1 MOV AL,3FH MOV SI+4,AL MOV AL,00H MOV DI+4,AL CALL DISP RETKEYA: CMP BH,00H ;按键+号处理子程序 JNZ KEYA_1 CALL LP3 ;保存输入的数据KEYA_1:MOV BX,0101H;设置符号标志 RET;返回KEYB: CMP BH,00H ;按键-号处理子程序 JNZ KEYB_1 CALL LP3 ;保存输入的数据KEYB_1:MOV BX,0102H ;设置符号标志 RET;返回KEYC: CMP BH,00H ;按键*号处理子程序 JNZ KEYC_1 CALL LP3 ;保存输入的数据KEYC_1:MOV BX,0103H ;设置符号标志 RET;返回KEYD: CMP BH,00H ;按键/号处理子程序 JNZ KEYD_1 CALL LP3 ;保存输入的数据KEYD_1:MOV BX,0104H ;设置符号标志 RET ;返回KEYE: MOV BH,01H ;按键=号处理子程序 CMP BL,01H ;是+号? JZ K1 ;进行加法运算 CMP BL,02H ;是-号? JZ K2 ;进行减法运算 CMP BL,03H ;时*号? JZ K3 ;进行乘法运算 CMP BL,04H ;是/号? JZ K4 ;进行除法运算STTE: RETK1: CALL ADD1 JMP STTEK2: CALL SUB1 JMP STTEK3: CALL MUL1 JMP STTEK4: CALL DIV1 JMP STTEKEYF: CALL CLEAR ;按键C(清零)处理子序 RETCLEAR: MOV SI,OFFSET VAR2;数据清零子程序 MOV DI,OFFSET VAR3 MOV CX,000AHCLEAR1:MOV AL,3FH MOV SI,AL MOV AL,00H MOV DI,AL INC SI INC DI LOOP CLEAR1 MOV BH,00H RETADD1: MOV SI,OFFSET VAR3 ;加法子程序 MOV DI,OFFSET VAR4 CLC MOV CX,0005HADD_1: MOV AL,DI ADC AL,SI AAA MOV DI,AL INC SI INC DI LOOP ADD_1 CALL CHANGE CALL DISP RETSUB1: MOV SI,OFFSET VAR3 ;减法子程序 MOV DI,OFFSET VAR4 CLC MOV CX,0005HSUB_1: MOV AL,DI MOV CL,SI AAS MOV DI,AL INC SI INC DI LOOP SUB_1 CALL CHANGE CALL DISP RETMUL1: MOV SI,OFFSET VAR3 ;乘法子程序 MOV DI,OFFSET VAR4MOV AL,DI MOV CL,SI MUL CL AAM MOV DI+5,AX MOV AL,DI+1 MUL CL AAM ADD AL,DI+6 AAA MOV DI+6,AX MOV AL,DI MOV CL,SI+1 MUL CL AAM MOV SI+5,AX MOV AL,DI+1 MUL CL AAM ADD AL,SI+6 AAA MOV SI+6,AX MOV AL,DI+5 MOV DI,AL MOV AL,DI+6 ADD AL,SI+5 AAA MOV DI+1,AL MOV AL,DI+7 ADC AL,SI+6 AAA MOV DI+2,AL MOV AL.00H ADC AL,SI+7 AAA MOV DI+3,AL CALL CHANGE CALL DISP RETDIV1: MOV SI,OFFSET VAR3 ;除法子程序 MOV DI,OFFSET VAR4 MOV AH,00H MOV AL,DI+1 MOV CK,SI DIV CL MOV DI+1,AL MOV AL,DI AAD DIV CL MOV DI,AL CALL CHANGE CALL DISP RETLP1: MOV CX,0004H ;数据移位保存子程序(4位) MOV SI,OFFSET VAR2 MOV DI,OFFSET VAR3LP2: MOV AL,SI+3 MOV SI+4,AL MOV AL,DI+3 MOV DI+4,AL DEC SI DEC DI LOOP LP2 RETLP3: MOV CX,0005H ;保存上一次数据子程序 MOV SI,OFFSET VAR3 MOV DI,OFFSET VAR4LP4: MOV AL,SI MOV DI,AL DEC SI DEC DI LOOP LP4 RETCHANGE:MOV SI,OFFSET VAR2 MOV DI,OFFSET VAR3 MOV BX,OFFSET TABLE MOV CX,0005HCOMP0: MOV AL,DI XLAT MOV SI,AL INC SI INC DI LOOP COMP0 RETDISP: MOV SI,OFFSET VAR1 MOV DI,OFFSET VAR2 MOV DL,DI+4 CMP 3FH JNZ DIR4 MOV DL,DI+3 CMP DL,3FH JNZ DIR3 MOV DL,DI+2 CMP DL,3EH JNZ DIR2 MOV DL,DI+1 CMP DL,3FH JNZ DIR1 JMP DIR0DIR4: MOV CX,0005H JMP DIRDIR3: MOV CX,0004H JMP DIRDIR2: MOV CX,0003H JMP DIR DIR1: MOV CX,0002H JMP DIRDIR0: MOV CX,0001HDIR: MOV AL,SI OUT 62H,AL MOV AL,DI OUT 60H,AL CALL TIME INC SI INC DI LOOP DIR RETTIME: PUSH AX PUSH CX MOV CX,0040HTIME1: MOV AX,0300HTIME2: DEC AX JNZ TIME2 LOOP TIME1 POP CX POP AX RETSTTK: CALL DISP ;放键测试程序 MOV AL,00H OUT 61H,AL IN AL,62H AND AL,0C0H CMP AL,0C0H JNZ STTK JMP STTCODE ENDS五、系统调试1、硬件调试本设计采用八位七段LED显示器、十六键小键盘、74LS138译码器、74LS240译码器及8279A芯片。LED显示器采用的是共阴极接法,8279A通过74LS138译码器扩展28键盘、8位显示器,最后通过七段LED显示出相应的数字。将八位七段LED测试完后,都能正常显示,则硬件调试成功。2、软件调试本实验通过小键盘的按键输入与键号相同的十进制数值,利用LED七段显示器循环显示与所按下键相对应的十进制数,编译链接无错误后开始单步调试,找出错误的地方,确保无误后全速运行得出结果。3、联机调试 将实验箱总电源开关打开,打开PC机上的集成软件。编译程序、编译通过后,单步调试并观察结果以及各寄存器中值得变化,然后单步连续执行观察按下键与显示数值。出现问题时对程序进行修改,直至出现正确结果。4、调试中出现的问题(1)、全速运行时LED显示器显示全为暗红色8字型?原因:由于指令运行的速度很快,导致新旧数据有重影(前一次显示数据时为亮的二极管没有显示结束,导致新显示的数据看不清楚)。(2)、 程序在输入完两个数值后,按ABCD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025上海市闵行区浦江第三中学公开招聘考试模拟试题及答案解析
- 2025年西安市经开第八中学教师招聘考试参考题库及答案解析
- 2025四川达州职业技术学院招用助学助管员9人(第二批)考试参考题库及答案解析
- 2025年崇仁县城区学校初中部公开选调教师【19人】考试模拟试题及答案解析
- 2025河北医科大学第一医院科聘医生招聘3人考试模拟试题及答案解析
- 2025年合肥市关井小学教师招聘考试模拟试题及答案解析
- 2025年合肥市兴海苑小学招聘教师考试模拟试题及答案解析
- 2025昆明市盘龙区东华幼儿园招聘聘用制教师(2人)考试参考题库及答案解析
- 2025年黄山祁门县顺达机动车检测有限公司公开招聘工作人员(二次)考试模拟试题及答案解析
- 2025云南地矿工程勘察集团有限公司招聘10人备考考试试题及答案解析
- 2025年芜湖市繁昌区卫健系统公开招聘编外工作人员6名考试参考试题及答案解析
- 广告字安装制作合同协议
- 2025至2030中国方竹笋市场经营方向与竞争格局分析报告
- 2025年人教版三年级数学上册《混合运算》教案
- 2025医用眼科器械消毒处理标准流程
- 胸部穿刺教学课件
- 白酒经销合同协议书模板
- 2025年公务员遴选备考冲刺
- 2024年河源市市级机关公开遴选考试真题
- 食材配送培训计划
- 《网络工程导论》全套教学课件
评论
0/150
提交评论