1、微型计算机系统程序设计实验报告Part1.程序设计目求Part2.程序设计要求Part3.系统整体设计思路Part4.程序框图设计Part5.硬件电路设计Part6.课程设计体会Part7.程序设计的参考文献Part8.程序设计代码附录(总共三题)Part1:程序设计的目的:1.巩固和掌握对“微机原理”课程内容的认识和理解,提高应用水平.2.掌握汇编语言程序的编制方法.3.熟悉键盘控制和七段码管及74LS138芯片的使用.Part2:程序设计要求:本课程设计内容包括两个方面A.硬件设计:显示器用6个八段数码段显示.键盘采用4*4矩阵形式.由8255控制B.软件编程(上机编程内容)题目一 显示器
2、工作于查询方式.键盘工作于中断方式 16个按键定位的键值为:0f,按任意键在显示器上现实对应的键值.lED显示器显示数值从右到左逐位显示题目二 定义键盘按键:10个数字键(09); 6个功能键:+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零) 实现五位八进制数加法运算.可连续做加法.直接按=号结束,显示结果 实现五位八进制数乘法运算.可连续做乘法运算Part3:程序设计的整体设计思路:A.物理构想思路: 1)微型计算机由微处理器,存储器,接口电路以及连接在这些部件上的总线组成.微处理器,存储器和所有IO设备之间的信息交换都通过总线进行.总线包括地址总线,数据总线和控制总线
3、,他们始于CPU或终于CPU,现代微机大部分都是这种以总线为中心的结构. 2)微型计算机及外围设备组成微型计算机系统的硬件,外围设备必须通过接口电路才能与系统总线相连,因此构建一个基于8255A的简单微型计算机系统,就是通过编译程序和物理连接让单片机拥有简单的计算器运算功能,因此系统总线上挂上一定规模的存储器和接口电路,然后在把合适的外围设备连接到接口电路上.解决物理连线方面的构想思路.就轮到程序设置的构想思路:B.软件构想思路: 1)首先.是建立一个蕴含所有段码的数据表(在程序中的体现是TABLE),作用是存储段码,为程序的相应调用提供对应的段码.避免在程序中实现调用显示功能的时候造成过多的
4、赘余.因为这次实验套装的LED管是共阳极管.所以只有列出对应的16个(0F)适用于共阳极管的段码,才能满足显示的要求 2)其次.是建立选通信号的输出存储.也就是.在数据部分建立一个表格,里面能够告诉CPU的输出端要输出低电平的时候对应的代码指令:为什么是输出低电平?因为本次选用的LED管是共阳极管.所以要在CPU的输出端与显示器的输入端对应借口接入CPU输出的低电平.从而告诉是哪一个显示器被选中.对应要输出怎么样的段码(信息).方能准确进行数据的显示 3)在DATA设置完以后.就是功能键的自定义设计.这部分将会在物理连线框图里面提出(Part5) 4)进行主程序的编写思路部分,首先是对应4*4
5、的键盘程序.在按下对应的键位以后.为了能在显示器中正确显示出对应的数值.必须进行扫描,首先是判断是否有按键.如果按得是数字键.那么就要在LED显示管上面对应的位数以及对应的数值进行显示.并且判断数字键之前是否已经按了运算的功能键.从而判断是否要进行运算.如果确认在数字键之前按了运算的功能键.则应该进行运算功能,并且将运算结果存储在内存单元里面.等待下一步的指令.并且重复检测.等到有在物理键上面检测到有等号.则将最终的结果释放在LED管子上进行显示 5)在运算结束后要实行放键功能,并且自动将所有的存储器(这里指的是RAM)上面的数据复位.等待实行重新的运算Part4:程序框图的设计:Part5.
6、硬件电路设置:Part6.课程设计体会: 一个星期的微机课程设计,在这个星期之中通过不断找资料解决问题,回顾了上学期所学的内容,给了我们很好一个机会将所学内容综合应用实践,温故而知新,对未来的学习也有很大帮助. 但在课程设计之中也还发现一些不足的地方,我发现我能通过设计找出不足,更好的学习.并且给将来的学习提供一个好的解决榜样.所以通过这次程序设计的学习.我觉得我并不仅仅只学习到如何的运用汇编程序按照要求解答问题.而更是学习到了要怎么去思考.怎么去解决问题的方法.并且希望能够将这个所得应用在日后的学习之中.我觉得这才是本次课程设计的核心内容Part7:参考文献:微型计算机系统原理 -(教材)微
7、型计算机系统程序设计指导书-(实验题目)微型计算机系统程序设计例题A-(实验例题)Part8:实验程序:设计代码part1:显示器工作于查询方式,键盘工作于中断方式 16个按键定义的键值:0-F,安任意键在显示器上现实对应的键值,LED显示器现实数值从右到左逐位现实STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTVA1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;A端口的6根控制线(控制6个LED显示屏)VB2 DB 3FH,3FH,3FH,3FH,3FH,3FHVB3 DB 00H,00H,00H,00H,00
8、H,00HVB4 DB 00H,00H,00H,00H,00H,00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;0F的显示段码DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,0606HMOV AL,88HOUT DX,AL :8255初始化MOV BX,0000H :BX清零STT: :键盘测试MOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN A
9、L,DXAND AL,0F0HCMP AL,0F0HJNZ KEYABCCALL DISP :调用显示程序JMP STTKEYABC: CALL TIME :延时去抖动MOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0H JNZ KEYJMP STTKEY: :键盘扫描识别MOV DX,0600HMOV AL,0FEHOUT DX,ALMOV DX,0604HIN AL,DXKEY_3:TEST AL,10HJNZ KEY_7CALL KEY3JMP STTKKEY_7:TEST AL,20HJNZ KEY_BCALL KEY7JMP STTKKEY_B:TES
10、T AL,40HJNZ KEY_FCALL KEYBJMP STTKKEY_F:TEST AL,80HJNZ KEY_2CALL KEYFJMP STTKKEY_2:MOV DX,0600HMOV AL,0FDHOUT DX,ALMOV DX,0604HIN AL,DXTEST AL,10HJNZ KEY_6CALL KEY2JMP STTKKEY_6:TEST AL,20HJNZ KEY_ACALL KEY6JMP STTKKEY_A:TEST AL,40HJNZ KEY_ECALL KEYAJMP STTKKEY_E:TEST AL,80HJNZ KEY_1CALL KEYEJMP STT
11、KKEY_1:MOV DX,0600HMOV AL,0FBHOUT DX,ALMOV DX,0604HIN AL,DXTEST AL,10HJNZ KEY_5CALL KEY1JMP STTKKEY_5:TEST AL,20HJNZ KEY_9CALL KEY5JNP STTKKEY_9:TEST AL,40HJNZ KEY_DCALL KEY9JMP STTKKEY_D:TEST AL,80HJNZ KEY_0CALL KEYDJMP STTKKEY_0:MOV DX,0600HMOV AL,0F7HOUT DX,ALMOV DX,0604HIN AL,DXTEST AL,10HJNZ KE
12、Y_4CALL KEY0CALL STTKKEY_4:TEST AL,20HJNZ KEY_8CALL KEY4JMP STTKKEY_8:TEST AL,40HJNZ KEY_CCALL KEY8JMP STTKKEY_C:TEST AL,80HJNZ KEY_GCALL KEYCKEY_G:JMP STTKKEY0:CALL LP1MOV AL,3FHMOV SI+5,ALMOV AL,00HMOV DI+5,ALCALL DISPRETKEY1:CALL LP1MOV AL,06HMOV SI+5,ALMOV AL,01HMOV DI+5,ALCALL DISPRETKEY2:CALL
13、LP1MOV AL,5BHMOV SI+5,ALMOV AL,02HMOV DI+5,ALCALL DISPRETKEY3:CALL LP1MOV AL,4FHMOV SI+5,ALMOV AL,03HMOV DI+5,ALCALL DISPRETKEY4:CALL LP1MOV AL,66HMOV SI+5,ALMOV AL,04HMOV DI+5,ALCALL DISPRETKEY5:CALL LP1MOV AL,6DHMOV SI+5,ALMOV AL,05HMOV DI+5,ALCALL DISPRETKEY6:CALL LP1MOV AL,7DHMOV SI+5,ALMOV AL,0
14、6HMOV DI+5,ALCALL DISPRETKEY7:CALL LP1MOV AL,07HMOV SI+5,ALMOV AL,07HMOV DI+5,ALCALL DISPRETKEY8:CALL LP1MOV AL,7FHMOV SI+5,ALMOV AL,08HMOV DI+5,ALCALL DISPRETKEY9:CALL LP1MOV AL,6FHMOV SI+5,ALMOV AL,09HMOV DI+5,ALCALL DISPRETKEYA:CALL LP1MOV AL,77HMOV SI+5,ALMOV AL,0AHMOV DI+5,ALCALL DISPRETKEYB:CA
15、LL LP1MOV AL,7CHMOV SI+5,ALMOV AL,0BHMOV DI+5,ALCALL DISPRETKEYC:CALL LP1MOV AL,39HMOV SI+5,ALMOV AL,0CHMOV DI+5,ALCALL DISPRETKEYD:CALL LP1MOV AL,5EHMOV SI+5,ALMOV AL,0DHMOV DI+5,ALCALL DISPRETKEYE:CALL LP1MOV AL,79HMOV SI+5,ALMOV AL,0EHMOV DI+5,ALCALL DISPRETKEYF:CALL LP1MOV AL,71HMOV SI+5,ALMOV A
16、L,0FHMOV DI+5,ALCALL DISPRET;上面是键盘键位的设置以及对应子程序的编写LP1: (数据段以为保存子程序,前移6位)MOV SI,0FFSET VA2MOV DI,OFFSET VA3MOV CX,0005HLP2:MOV AL,SI+4MOV SI+5,ALMOV AL,DI+4MOV DI+5,ALDEC SIDEC DILOOP LP2RETDISP: (6位显示程序)MOV SI,OFFSET VA1MOV DI,OFFSET VA2MOV DL,DI+5CMP DL,3FHJNZ DIR5MOV DL,DI+4CMP DL,3FHJNZ DIR4MOV DL
17、,DI+3CMP DL,3FHJNZ DIR3MOV DL,DI+2CMP DL,3FHJNZ DIR2MOV DL,DI+1CMP DL,3FHJNZ DIR1JMP DIR0DIR5:MOV CX,0006HJMP DIRDIR4:MOV CX,0005HJMP DIRDIR3:MOV CX,0004HJMP DIRDIR2:MOV CX,0003HJMP DIRDIR1:MOV CX,0002HJMP DIRDIR0:MOV CX,0001HDIR:MOV DX,0600HMOV AL,SIOUT DX,ALMOV DX,0602HMOV AL,DIOUT DX,ALCALL TIMEI
18、NC SIINC DILOOP DIRRETTIME: (延时程序)PUSH AXPUSH CXMOV CX,0005HTIME1:MOV AX,00F0HTIME2:DEC AXJNZ TIME2LOOP TIME1POP CXPOP AXRETSTTK: (按键测试程序)CALL DISPMOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ STTKJMP STTCODE ENDSEND STARTPart2:显示器工作于查询方式,键盘工作于中断方式 定义键盘按键:10个数字键(09); 6
19、个功能键:+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零) 实现五位八进制数加法运算.可连续做加法.直接按=号结束,显示结果STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSDATA SEGMENT VA1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH VA2 DB 3FH,3FH,3FH,3FH,3FH,3FH VA3 DB 00H,00H,00H,00H,00H,00H VA4 DB 00H,00H,00H,00H,00H,00H SUM DB 00H,00H,00H,00H,00H,00H TABLE DB 3F
20、H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,0606H MOV AL,88H OUT DX,AL MOV BX,0000HSTT: MOV AL,00H MOV DX,0600H OUT DX,AL MOV DX,0604H IN AL,DX AND AL,0F0H CMP AL,0F0H JNZ KEYABC CALL DISP JMP STTKEYABC:
21、CALL DELAY MOV DX,0604H IN AL,DX AND AL,0F0H CMP AL,0F0H JNZ KEY JMP STT KEY: MOV DX,0600H MOV AL,0FEH OUT DX,AL MOV DX,0604H IN AL,DX KEY_0: TEST AL,10H JNZ KEY_1 CALL KEY0 JMP STTK KEY_1: TEST AL,20H JNZ KEY_4 CALL KEY1 JMP STTK KEY_4: TEST AL,40H JNZ KEY_7 CALL KEY4 JMP STTK KEY_7: TEST AL,80H JN
22、Z KEY2C CALL KEY7 JMP STTKKEY2C: MOV DX,0600H MOV AL,0FDH OUT DX,AL MOV DX,0604H IN AL,DX KEY_CLEAR:TEST AL,10H JNZ KEY_2 CALL KEYCLEAR JMP STTKKEY_2: TEST AL,20H JNZ KEY_5 CALL KEY2 JMP STTKKEY_5: TEST AL,40H JNZ KEY_8 CALL KEY5 JMP STTK KEY_8: TEST AL,80H JNZ KEY3C CALL KEY8 JMP STTK KEY3C: MOV DX
23、,0600H MOV AL,0FBH OUT DX,AL MOV DX,0604H IN AL,DXKEY_QUAL: TEST AL,10H JNZ KEY_3 CALL KEYEQUAL JMP STTK KEY_3: TEST AL,20H JNZ KEY_6 CALL KEY3 JMP STTK KEY_6: TEST AL,40H JNZ KEY_9 CALL KEY6 JMP STTK KEY_9: TEST AL,80H JNZ KEY4C CALL KEY9 JMP STTK KEY4C: MOV DX,0600H MOV AL,0F7H OUT DX,AL MOV DX,06
24、04H IN AL,DX KEY_PLUS: TEST AL,10H JNZ KEY_MINUS CALL KEYPLUS JMP STTK KEY_MINUS: TEST AL,20H JNZ KEY_MUL JMP STTKKEY_MUL: TEST AL,40H JNZ KEY_DIV JMP STTKKEY_DIV: TEST AL,80H KEY_G: JMP STTK;结束按键扫描,下面是按键处理函数(与第一个程序不同的地方是功能键的设置问题)KEY0: CMP BH,00H JZ KEY0_1 CALL CLEARKEY0_1: CALL LP1 MOV AL,3FH MOV S
25、I+4,AL MOV AL,00H MOV DI+4,AL CALL DISP RETKEY1: CMP BH,00H JZ KEY1_1 CALL CLEARKEY1_1: CALL LP1 MOV AL,06H MOV SI+4,AL MOV AL,01H MOV DI+4,AL CALL DISP RET KEY2: CMP BH,00H JZ KEY2_1 CALL CLEARKEY2_1: CALL LP1 MOV AL,5BH MOV SI+4,AL MOV AL,02H MOV DI+4,AL CALL DISP RET KEY3: CMP BH,00H JZ KEY3_1 CA
26、LL CLEARKEY3_1: CALL LP1 MOV AL,4FH MOV SI+4,AL MOV AL,03H MOV DI+4,AL CALL DISP RET KEY4: CMP BH,00H JZ KEY4_1 CALL CLEARKEY4_1:CALL LP1 MOV AL,66H MOV SI+4,AL MOV AL,04H MOV DI+4,AL CALL DISP RET KEY5: CMP BH,00H JZ KEY5_1 CALL CLEARKEY5_1: CALL LP1 MOV AL,6DH MOV SI+4,AL MOV AL,05H MOV DI+4,AL CA
27、LL DISP RET KEY6: CMP BH,00H JZ KEY6_1 CALL CLEARKEY6_1: CALL LP1 MOV AL,7DH MOV SI+4,AL MOV AL,06H MOV DI+4,AL CALL DISP RET KEY7: CMP BH,00H JZ KEY7_1 CALL CLEARKEY7_1: CALL LP1 MOV AL,07H MOV SI+4,AL MOV AL,07H MOV DI+4,AL CALL DISP RET KEY8: CMP BH,00H JZ KEY8_1 CALL CLEARKEY8_1: CALL LP1 MOV AL,7FH MOV SI+4,AL MOV AL,08H MOV DI+4,AL CALL DISP RET KEY9: CMP BH,00H JZ KEY9_1 CALL CLEARKEY9_1: CALL LP1 MOV AL,6FH MOV SI+4,AL MOV AL,09H MOV DI+4,AL CALL DISP RET KE