微型计算机原理及应用许立锌版答案,微型计算机应用系统的课程设计报告

《微型计算机应用系统的课程设计报告》由会员分享,可在线阅读,更多相关《微型计算机应用系统的课程设计报告(22页珍藏版)》请在人人文库网上搜索。

1、课课 程程 设设 计计 课程名称微机原理课程设计与实践微机原理课程设计与实践 题目名称 微型计算机应用系统的设计 2012 年 3 月 15 日 1 实验的任务书实验的任务书 计算器(1) (一)(一) 目的目的 (1) 巩固和加深对 微机原理及应用 课程内容的认识和理解, 提高应用水平。 (2) 掌握汇编语言程序的编程方法。 (3) 熟悉键盘控制和七段数码管的使用。 (二)(二) 设计要求及设计程序设计要求及设计程序 课程设计内容上机编程 一在显示器上显示任意四位十六进制数 59FC 将表格里的数在七段 LED 上同时显示出来,要求做成循环程序, 并使用 XLAT 来译码。 1.11.1 第。

2、一个程序的流程图第一个程序的流程图 1.21.2 源程序源程序 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT TAB1 DB 05H,09H,0FH,0CH;设置四位查询位 2 TAB2 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;设置0F的十六位数码管段 码 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,80H;8。

3、255A初始化 OUT 63H,AL L1: MOV DL,0F7H MOV SI,OFFSET TAB1 MOV CX,0004H L2: MOV AL,DL;位码送给AL OUT 61H,AL MOV AL,SI MOV BX,OFFSET TAB2;查表取出数码管的段码 XLAT TAB2 OUT 60H,AL;查表的段码送A口显示 INC SI ROL DL,01H;下个要显示的数码管位码 CALL TIME LOOP L2 JMP L1 TIME: PUSH AX;延时程序 PUSH CX MOV CX,0002H TIME1: MOV AX,0300H TIME2: DEC AX 。

4、JNZ TIME2 LOOP TIME1 POP CX POP AX RET CODE ENDS END START 二、二、2.12.1 将 8 个键按实验室要求定义键值,按任意键在显示器上显示对应键值, 要求显示值能左移。 71BE AF69 2.22.2 流程图流程图 3 开始 8255 初始化 N 有无压键显示扫描 Y 保存数据 Y 有无放键 N 显示扫描 2.3 源程序: STACK SEGMENT STACK DW 64 DUP (?) STACK ENDS DATA SEGMENT VAR1 DB 0BFH,0DFH,0EFH,0F7H VAR2 DB 3FH,3FH,3FH,3。

5、FH,3FH VAR3 DB 00H,00H,00H,00H,00H TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,89H OUT 63H,AL STT: MOV AL,00H OUT 61H,AL NEXT: IN AL,62H AND AL,82H CMP AL,82H JNZ KEYABC CALL DISP JMP STT。

6、 ; 4 ;8255A初始化 ;键盘测试 ;调用显示程序 - KEYABC: CALL TIME;延时,去抖动 IN AL,62H AND AL,82H CMP AL,82H JNZ KEY_7 JMP STT KEY_7: MOV AL,0F7H;键盘扫描识别 OUT 61H,AL IN AL,62H TEST AL,02H JNZ KEY_A CALL KEY7 JMP STTK KEY_A: TEST AL,80H JNZ KEY_1 CALL KEYA JMP STTK KEY_1: MOV AL,0EFH OUT 61H,AL IN AL,62H TEST AL,02H JNZ KE。

7、Y_F CALL KEY1 JMP STTK KEY_F: TEST AL,80H JNZ KEY_B CALL KEYF JMP STTK KEY_B: MOV AL,0DFH OUT 61H,AL IN AL,62H TEST AL,02H JNZ KEY_6 CALL KEYB JMP STTK KEY_6: TEST AL,80H JNZ KEY_E CALL KEY6 JMP STTK KEY_E: MOV AL,0BFH OUT 61H,AL IN AL,62H TEST AL,02H 5 JNZ KEY_9 CALL KEYE JMP STTK KEY_9: TEST AL,80。

8、H JNZ KEY_01 CALL KEY9 KEY_01: JMP STTK ; - ;按键7处理子程序 KEY7: CALL LP1;低4位字节前移 MOV AL,07H MOV DI+4,AL LEA BX,TABL;查表取出要显示数字 的数码管段码 XLAT TABL MOV SI+4,AL CALL DISP;显示 RET;返回 ; - KEYA: CALL LP1;按键A处理子程序 MOV AL,0AH MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET ; - KEY1: CALL LP1;按键1处理子程序 MO。

9、V AL,01H MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET ; - KEYF: CALL LP1;按键F处理子程序 MOV AL,0FH MOV DI+4,AL 6 LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET ; - KEYB: CALL LP1;按键B处理子程序 MOV AL,0BH MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET ; - KEY6: CALL LP1;按键6处理子程序 MOV。

10、 AL,06H MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET ; - KEYE: CALL LP1;按键E处理子程序 MOV AL,0EH MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP RET ; - KEY9: CALL LP1;按键9处理子程序 MOV AL,09H MOV DI+4,AL LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP 7 RET ; - LP1: MOV CX,0004H;数据移位保存子程序 。

11、(前移四位) MOV SI,OFFSET VAR2 MOV DI,OFFSET VAR3 LP2: MOV AL,SI+3 MOV SI+4,AL MOV AL,DI+3 MOV DI+4,AL DEC SI DEC DI LOOP LP2 RET ; - DISP: MOV SI,OFFSET VAR1;显示子程序 MOV DI,OFFSET VAR2 MOV CX,0004H DIR: MOV AL,SI OUT 61H,AL MOV AL,DI OUT 60H,AL CALL TIME INC SI INC DI LOOP DIR RET ; - TIME: PUSH AX;延时程序 P。

12、USH CX MOV CX,0002H TIME1: MOV AX,0300H TIME2: DEC AX JNZ TIME2 LOOP TIME1 POP CX POP AX RET ; - STTK: CALL DISP;放键测试程序 8 MOV AL,00H OUT 61H,AL IN AL,62H AND AL,82H CMP AL,82H JNZ STTK JMP STT CODE ENDS END START 三计算器程序三计算器程序 3.1 要求:1在显示器上显示任意四位十六进制数 2.将 8 个键按实验室要求定义键值, 按任意键在显示器上显示对应键值,要 求显示值能够左移。 3。

13、 3 实现:实现: 1.定义键盘按键:5 个为数字键 2、4、5、6、7,3 个功能键:加号+,乘号 ,等号=; 2.可进行三位 8 进制加法运算; 3.可进行两位 10 进制乘法运算。 9 +5V A B C D E F G D P PA7 : : : PA0 : : : 4.7K 7 4 L S 0 7 : : : +5V Y1 PC1 4567 4.7k Y2 PC7 2+= 4.7k X1X2X3X4 PB3 PB4 PB5 PB6 7 4 L S 0 7 3.23.2 各部分工作原理说明各部分工作原理说明 3 32 21.182551.18255 接口芯片与接口芯片与 2 24 4 。

14、键盘的连接键盘的连接 图中有 2 行 4 列,4 根线于 PB 口相连,2 根列线与 PC 口的 PC1,PC7 相连。 按键设置在行、列交点处(数字或字符为其键号) ,行、列线分别连接到按键开 关的两端。当列线通过上拉电阻接+5V 时,就被钳位在高电平状态。键盘中有无 键按下是由行线送入全扫描字、列线读入行线状态来判断的。这就是:给行线所 有 I/O 线均置成低电平,然后读入列线电平状态。如果有键按下,总会有一根列 线电平被拉至低电平,从而使列线输入不全为 1。 键盘中哪一个键按下是由行线逐行置低电平后, 检查列线输入状态予以确定 10 的。其方法是:依次给行线送低电平,然后查所有列线状态,。

15、如果全为1,则所 按下之键不在次行。如果不全为 1,则所按下之键必在次行。而且是在与0 电平 行线相交点上的那个键。 键盘的工作方式采用编程扫描工作方式, 即通过调用键盘子程序来响应键输 入的要求,在键盘扫描子程序中完成下述功能: 1)判断键盘上有无键按下。其方法是先使 PB3PB60,然后读 PC1、PC7 的状态,若全为 1,则键盘中无键按下;若不全为1,则说明键盘中有键 按下。 2)去除按键的抖动影响。对于由机械触点构成的按键,由于机械触点的弹 性作用,触点在闭合及断开瞬间有一个抖动过程,一般为510ms 时间。 为了消除抖动影响可作这样处理:当判断有键按下后,软件延时一段时 间在判断键。

16、盘状态,如果仍有键按下状态,则认为有一个确定的键按下, 否则按键抖动处理。 3)求按下键的键值及键号。键盘上的每个键都对应一个键值。键值的组成: 其中 4 位为扫描该键时的行线输出值(PB3PB6) ,高8 位为该键按下时 的列线输入值(PC0、PC1 为有效位,其余位令其为 1) 。由于键盘中键号 排列无规律,不能通过对键值直接运算得到键号。因此必须先判断按下 键是使 PC7=0 还是 PC1=0, 然后再查为零的列线上键按下时其 8 位键值中 是否有一位为零,若为零则可得到键值。求按下键的键值及键号的目的 是使程序转到相应的地址去完成该键的操作。一般,对数字键就是直接 将该号送到显示缓冲区。

17、进行显示,对功能键则必须先找到该功能键处理 程序入口地址,并转去执行该键的命令。因此当键号求到后,还必须找 到功能处理入口。 4)为保证键闭合依次 CPU 仅进行依次键功能操作。程序中需要等待键释放 以后再将键号送累加器 AH。 3.2.2 LED3.2.2 LED 显示器的工作方式显示器的工作方式 LEDLED 数码管是目前最常用的数字显示器, 图 A A、 B B 为共阴管和共阳管的电路, 图 C 为两种不同出线形式的引出脚功能图。 一个 LEDLED 数码管可用来显示一位 09 十进制数和一个小数点。小型数码管 11 (0.5 寸和 0.36 寸)每段发光二极管的正向压降,随显示光(通常。

18、为红、绿、 黄、橙色)的颜色不同略有差别,通常约为2 22.5V2.5V,每个发光二极管的点亮电 流在 5 510mA10mA。LEDLED 数码管要显示 BCDBCD 码所表示的十进制数字就需要有一个专门 的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。 图图 A A 共阴连接(共阴连接( “1 1”电平驱动)”电平驱动)图图 B B 共阳连接(共阳连接( “0 0”电平驱动)”电平驱动) 图图 C LEDC LED 数码管符号及引脚功能图数码管符号及引脚功能图 LED 显示器有静态和动态两种工作方式 LED 显示器工作在静态显示方式下,共阴极或共阳极连接在一起,然后接地 或+5。

19、V;每位的段选线(A,B,G,H)与一个 8 位并行口相连。这样,只要在每 一位的段选线上保持段选码电平,该位就能保持相应的显示字符。 在多位 LED 显示时,为了化简电路,降低成本,将所有位的断选线并联在一 起, 由一个 8 位的 I/O 口控制, 即控制段选码而共阴极或共阳极点分别由相应的 12 I/O 线控制即控制位选码,这就是动态显示。 4 位 LED 动态显示电路只需一个 8 位 I/O 口及一个 4 位 I/O 口, 其中 8 个 I/O 控制段选码,4 位 I/O 控制位选。进行 4 位字符显示时,采用扫描显示方式,即 在每一瞬间只使某一位显示相应字符,在此瞬间,段选控制 I/O。

20、 口输出相应字符 段选码,位选控制 I/O 口在该显示位送入选通电平(共阴极送低电平,共阳极送 高电平) ,以保证该位显示相应字符。如此轮流,使每位显示该位应显示字符, 并保持延迟一段时间(15ms) ,以造成视觉暂留效果。不断循环送出相应的段 选码、位选码,就可以获得视觉稳定的显示状态。 3.3 流程图 13 开 8255 初始 N 有 无压 Y Y 是 数 字 N 显示扫 有标 Y N 加号? N 乘号? N Y 设加 标 清零显示器, 清标志 Y 设乘 标 保存 数 等号? Y 放键? N 显示扫 Y 清零显示 进行加、乘运算,存 34 源程序 STACK SEGMENT STACK D。

21、W 64 DUP(?) STACK ENDS DATA SEGMENT VAR1 DB 0BFH,0DFH,0EFH,0F7H VAR2 DB 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,00H TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H 14 DB 7FH,67H,77H,7CH,39H,5EH,79H,71H DATA ENDS CODE SEGMENT ASSUME CS。

22、:CODE,DS:DATA, START: MOV AX,DATA MOV DS,AX MOV AL,89H OUT 63H,AL MOV BX,0000H STT:MOV AL,00H OUT 61H,AL NEXT: IN AL,62H AND AL,82H CMP AL,82H JNZ KEYABC CALL DISP JMP STT KEYABC:CALL TIME IN AL,62H AND AL,82H CMP AL,82H JNZ KEY_4 JMP STT KEY_4: MOV AL, 0F7H OUT 61H,AL IN AL,62H TEST AL,02H JNZ KEY_。

23、2 CALL KEY4 JMP STTK KEY_2 : TEST AL,80H JNZ KEY_5 CALL KEY2 JMP STTK KEY_5 : MOV AL, 0EFH OUT 61H,AL IN AL,62H TEST AL,02H JNZ KEY_JIA CALL KEY5 JMP STTK KEY_JIA: TEST AL, 80H JNZ KEY_6 CALL KEYJIA ;8255A 初始化 ;键盘测试 ;通过扫描 C 口低位测试是否按键 ;调用延时,去抖动 ;送入 C 口数据 ;数据前六位清零 ;比较数据后两位 ;转移到检测按下哪个数字键 ;返回检测键盘 ;检测数字 。

24、4 键 ;测试按键 ;转移检测下一个数字键 ;调用数字键处理程序 ;放键返回 ;检测数字键 2 键 ;转移检测下一个数字键 ;调用数字键处理程序 ;放键返回 ;检测数字 5 键 ;测试按键 ;转移检测下一个数字键 ;调用数字键处理程序 ;放键返回 ;检测 功能键+ ;转移检测下一个数字键 ;调用数字键处理程序 15 JMP STTK KEY_6 : MOV AL,0DFH OUT 61H,AL IN AL,62H TEST AL,02H JNZ KEY_CHENG CALL KEY6 JMP STTK KEY_CHENG : TEST AL,80H JNZ KEY_7 CALL KEYCHEN。

25、G JMP STTK KEY_7 : MOV AL,0BFH OUT 61H,AL IN AL,62H TEST AL,02H JNZ KEY_DEN CALL KEY7 JMP STTK KEY_DEN : TEST AL, 80H JNZ KEY_71 CALL KEYDEN KEY_71: JMP STTK KEY4: CMP BH,00H JZ KEY4_1 CALL CLEAR KEY4_1:CALL LP1 MOV AL,04H MOV DI+4,AL PUSH BX LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP POP BX RET KE。

26、Y5: CMP BH,00H JZ KEY5_1 CALL CLEAR KEY5_1:CALL LP1 MOV AL,05H MOV DI+4,AL PUSH BX LEA BX,TABL ;检测数 6 键 ;测试按键 ;转移检测下一个数字键 ;调用数字键处理程序 ;放键返回 ;检测功能键* ;转移检测下一个数字键 ;调用功能键处理程序 ;放键返回 ;检测数字 7 键 ;测试按键 ;转移检测下一个功能键 ;调用数字键处理程序 ;放键返回 ;检功能=键 ;调用功能键处理程序 ;放键返回 16 XLAT MOV SI+4,AL CALL DISP POP BX RET KEY6: CMP BH,0。

27、0H JZ KEY6_1 CALL CLEAR KEY6_1:CALL LP1 MOV AL,06H MOV DI+4,AL PUSH BX LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP POP BX RET KEY7: CMP BH,00H JZ KEY7_1 CALL CLEAR KEY7_1:CALL LP1 MOV AL,07H MOV DI+4,AL PUSH BX LEA BX,TABL MOV SI+4,AL CALL DISP POP BX RET KEY2: CMP BH,00H JZ KEY2_1 CALL CLEAR KEY2_1。

28、:CALL LP1 MOV AL, 02H MOV DI+4,AL PUSH BX LEA BX,TABL XLAT TABL MOV SI+4,AL CALL DISP POP BX RET KEYJIA: CMP BH,00H 17 JNZ KEYJIA_1 CALL LP3 KEYJIA_1:MOV BX,0101H RET KEYSCHENG CMP BH,00H JNZ KEYCHENG_1 CALL LP3 KEYCHENG_1:MOV BX,0102H RET KEYDEN: CMP BL,00H JNZ KEYDEN_1 CALL CLEAR CALL DISP KEYDEN_。

29、1:MOV BH,01H CMP BL,01H JZ K1 CMPBL,02H JZ K2 CALL CLEAR STTE:RET K1:CALL JIA1 JMP STTE K2:CALL CHENG JMP STTE JIA1: MOVSI,OFFSET VAR3 MOVDI,OFFSET VAR4 CLC MOV CX,0004H JIA2: MOV AL, DI ADC AL, SI CMP AL,08H JB B1 AND AL,07H STC JMP B2 B1: CLC B2: MOV DI, AL INC SI INC DI LOOP JIA_2 CALL CHANGE CAL。

30、L DISP MOV BL, 00H RET ;清零 BL 是判断等号所需要 18 CHENG: MOVSI,OFFSET VAR3 MOVDI,OFFSET VAR4 MOVAL,DI MOVCL,SI MULCL AAM MOVDI+5,AX MOVAL,DI+1 MULCL AAM ADDAL,DI+6 AAA MOVDI+6,AX MOVAL,DI MOVCL,SI+1 MULCL AAM MOVSI+5,AX MOVAL,DI+1 MULCL AAM ADDAL,SI+6 AAA MOVSI+6,AX MOVAL,DI+5 MOVDI,AL MOVAL,DI+6 ADDAL,SI+5。

31、 AAA MOVDI+1,AL MOVAL,DI+7 ADCAL,SI+6 AAA MOVDI+2,AL MOVAL,00H ADCAL,SI+7 AAA MOVDI+3,AL CALLCHANGE CALLDISP MOV BL,00H RET 19 LP1:MOV CX,0004H;数据移位保存子程序(前进三位) MOV SI,OFFSET VAR2;SI 指向显示代码缓冲区首址 MOV DI,OFFSET VAR3 LP2:MOV AL,SI+3 MOV SI+4,AL MOV AL,DI+3;显示代码移位 MOV DI+4,AL DEC SI DEC DI LOOP LP2 RET L。

32、P3: MOV CX,0004H MOV SI,OFFSET VAR3 MOV DI,OFFSET VAR4 LP4: MOV AL,SI MOV DI,AL INC SI INC DI LOOP LP4 RET CHANGE:MOV SI,OFFSET VAR2 MOV DI,OFFSET VAR4 MOV BX,OFFSET TABLE MOV CX,0004H COMP0: MOV AL,DI XLAT TABL MOV SI,AL INC SI INC DI LOOP COMP0 RET DISP: MOV SI,OFFSET VAR1 MOV DI,OFFSET VAR2 MOV D。

33、L,DI+3 CMP DL,3FH JNZ DIR3 MOV DL,DI+2 CMP DL,3FH JNZ DIR2 MOV DL,DI+1 CMP DL,3FH ;显示数字移位 ;移位返回 20 JNZ DIR1 JMPDIR0 DIR3:MOV CX,0004H JMP DIR DIR2:MOV CX,0003H JMP DIR DIR1:MOV CX,0002H JMP DIR DIR0:MOV CX,0001H DIR:MOV AL,SI OUT 61H,AL MOV AL,DI OUT 60H,AL CALL TIME INC SI INC DI LOOP DIR RET TIME:。

34、 PUSH AX PUSH CX MOV CX,0002H TIME1:MOV AX,0300H TIME2:DEC AX JNZ TIME2 LOOP TIME1 POP CX POP AX RET CLEAR:MOV SI,OFFSET VAR2 MOVDI,OFFSET VAR3 MOVCX,0005H CLEAR1:MOVAL,3FH MOVSI,AL MOVAL,00H MOVDI,AL INCSI INCDI LOOPCLEAR1 MOVBH,00H RET STTK: CALL DISP MOV AL,00H OUT 61H,AL ;延时子程序 ;放键测试程序 ;B 口清零 21。

35、 IN AL,62H;送入 C 口数据 AND AL,82H;数据保留低两位 CMP AL,82;比较是否放键 JNZ STTK;仍未放键, 返回继续检测放键 JMP STT;已放键,返回 CODE ENDS END START 四心得体会 虽然上机调试的经历是痛苦的,一步一步的完成了以上的程序,感觉自己能力 还需要加强。同时,也想到,或许,学程序初期,都是仿照别人的程序算法吧。 自己以后要尽量多参阅一些程序, 提高自己的水平。但是期间的细节错误给了我 们应有的教训, 使我们在以后的学习及工作中尽量避免,对于汇编语言的编程也 有了进一步的了解。 这次的课程设计还使我意识到要将微机原理及应用这门专业课程学习好,除了 学好书本知识外还要通过实践把书本知识应用到实践中去, 才能对这门课程有更 深的认识,也有利于自己对知识的吸收,巩固和提高。 五、应收集的资料及主要参考文献 1 许立锌等编.微型计算机原理及应用.北京:机械工业出版社,2003 2.许立梓等编微型计算机原理及应用 -习题解答、实验指导及课程设计. 北京:机械工业出版社,2003 22。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值