课程设计《微机原理与接口技术》2012~2013学年第一学期目录学院(部)电子电气工程学院学号021210134姓名崔平授课教师戎自强目录一、课程设计的目的 (1)二、设计的题目及要求 (1)2.1、题目(一) (1)2.2、题目(二) (1)三、设计的内容及程序 (1)3.1对于题目(一)的分析与设计 (2)3.1.1设计的程序流程图 (2)3.1.2设计的程序 (3)3.1.3调试结果和程序结果分析 (4)3.2对设计题(二)的分析与设计 (4)3.2.1实验电路及连线 (4)3.2.2设计程序流程图 (5)3.2.3设计的程序 (6)3.2.4结果分析 (9)3.2.5程序拓展内容 (9)四、扩展内容 (13)4.1、关于行人闯红灯的扩展 (13)4.2、关于黄灯问题的扩展 (15)五、心得体会 (18)六、参考文献 (19)微机课程设计报告一、课程设计的目的课程设计有利于基础知识的理解和逻辑思维的锻炼。
本课程设计是微机原理与接口技术课程的配套内容。
微型计算机在很多场合作为一个控制系统的控制部件或作为一个设备的智能化部件融入系统中。
学习和掌握计算机汇编语言和常用接口电路的应用和设计技术。
充分认识理论知识对应技术的指导作用,进一步加强理论知识与实践相结合,加深对专业知识和理论知识的认识和理解。
对于自动化专业的学会了解和认识微机的硬件结构和输入输出接口技术是十分必要的。
本课程设计要求同学们自己按要求设计一段程序并完成简单的红绿灯程序制作以及相应的拓展。
二、设计的题目及要求2.1、题目(一)2.1.1设计目的熟练掌握8088汇编语言程序各种结构的设计及编程方法,熟练掌握DOS中断功能调用的方法。
2.1.2内容编制一个完整的程序,计算100个正整数(字数据)之和,如果不超过机器数的范围(65535),则计算其平均值并存于(RUSULT)中,否则显示“overflow”。
2.2、题目(二)2.2.1设计目的掌握8088CPU及存储器硬件接口电路的设计连接,掌握相关硬件驱动软件设计及信息处理软件的设计调试方法。
2.2.2内容利用8088CPU以及8255设计十字路口交通灯控制系统。
基本要求是完成双向红灯黄灯的配合控制。
并对当前的红绿灯系统的不足加以思考,并给出相应的解决方法。
三、设计的内容及程序3.1、对于题目(一)的分析与设计编制一个完整的程序,计算100个正整数(字数据)之和,如果不超过机器数的范围(65535),则计算其平均值并存于(RUSULT )中,否则显示“overflow ”。
3.1.1设计的流程图如下:YNNY开始定义100个正整数以及存放结果的变量100个正整数相加是否超出机器数范围 100个数是否加完 通过DOS 输出100个数的和结束通过DOS 输出overflow3.1.2设计的程序如下:DSEG SEGMENTMEM DW n1,n2,n3~~~n100ERR DB 'overflow!',0DH,0AH,'$' RESULT DW ?DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG BEGIN:MOV AX,DSEGMOV DS,AXXOR AX,AXMOV SI,AXMOV CX,100SUM:ADD AX,MEM[SI]JC OVFADD SI,2LOOP SUMMOV BX,100MOV DX,0DIV BXMOV RESULT,AXJMP SHORT EXITOVF:LEA DX,ERRMOV AH,9INT 21HEXIT:MOV AH,4CHINT 21HCSEG ENDSEND BEGIN3.1.3调试结果和程序结果分析在程序运行完毕以后如果没有溢出,AX 以及RESULT 中存放的是运算的结果,BX 中存放的是100,CX 中存放的是0;如果溢出则显示“overflow!”字样。
比如说存放的数字为100个“2”则最终的结果中(AX )=2000,若存放的为100个“100”则显示“overflow!”。
3.2、对设计题(二)的分析与设计利用8088CPU 以及8255设计十字路口交通灯控制系统。
基本要求是完成双向红灯黄灯的配合控制。
并对当前的红绿灯系统的不足加以思考,并给出相应的解决方法。
3.2.1实验电路及连线实验箱上,用于交通灯设计的模块有如下右图的接口式样,通过高低电平的测试,我们得知DG 是指灯亮绿色,DR 是指灯亮红色,如果两者同时驱动,则亮黄灯。
四个灯及其接口排列如右图所示 被控制的灯的位置(相对于示意图)8255输出接口接入灯的接口灯的颜色变化附加变化左方灯PC0DG1绿灯同时亮起,变为黄灯PC4 DR1 红灯 上边灯PC1DG2绿灯PC5 DR2 红灯 下边灯PC2DG3绿灯PC6 DR3 红灯 右方灯PC3DG4绿灯PC7DR4红灯DG1DG2DG3DG4DR1DR2DR3DR4实验箱交通灯排列示意3.2.2设计的流程图如下结束开始段定义及端口初始化第一状态:端口输出96H第二状态: 端口输出90H 第三状态: 端口输出69H 第四状态: 端口输出60H LED 灯八位倒数记时软件延时LED 灯八位倒数记时软件延时2.3设计的程序如下DATA SEGMENTDATA ENDSSTACK SEGMENT STACKSTA DW 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AL,82HMOV DX,203HOUT DX,ALB: MOV DX,201HIN AL,DXMOV BL,01HTEST AL,BLJNZ BMOV DX,202HMOV AL,0FHOUT DX,ALCALL DELAY2A: MOV AL,096HOUT DX,ALCALL DELAY2MOV AL,09FHOUT DX,ALCALL DELAYMOV AL,096HOUT DX,ALCALL DELAYOUT DX,AL CALL DELAY MOV AL,096H OUT DX,AL CALL DELAY MOV AL,09FH OUT DX,AL CALL DELAY MOV AL,096H OUT DX,AL CALL DELAY MOV AL,09FH OUT DX,AL CALL DELAY MOV AL,096H OUT DX,AL CALL DELAY MOV AL,06H OUT DX,AL CALL DELAY2 MOV AL,069H OUT DX,AL CALL DELAY MOV AL,06FH OUT DX,AL CALL DELAY MOV AL,069H OUT DX,AL CALL DELAY2OUT DX,ALCALL DELAYMOV AL,069HOUT DX,ALCALL DELAYMOV AL,06FHOUT DX,ALCALL DELAYMOV AL,069HOUT DX,ALCALL DELAYMOV AL,06FHOUT DX,ALCALL DELAYMOV AL,069HOUT DX,ALCALL DELAYMOV AL,09HOUT DX,ALCALL DELAY2JMP ADELAY PROC NEARMOV BX,1AAH CNT1: MOV CX,0DFH CNT2: LOOP CNT2DEC BXJNZ CNT1RETDELAY ENDPDELAY 2 PROC NEARMOV BX,1AAHCNT1: MOV CX,0DF0HCNT2: LOOP CNT2DEC BXJNZ CNT1RETDELAY ENDPCODE ENDSEND START3.2.4结果分析程序开始后,从8255输出信号096H,二进制表示为10010110B,对应8个输入灯接口。
其中DG1是1,DR1是0,所以左方向灯为绿色,以此类推,右方向灯为绿色,上、下两个灯为红色。
接着8255输出信号09FH,对应二进制为10011111B,DG1和GR1都是1,则左方向灯为熄灭,同理右方向灯也熄灭。
这样反复输入096H和09FH几次,造成左、右方向灯闪烁。
然后输入06H,二进制表示为00000110B,左、右方向灯变为黄灯。
接着输入069H,二进制表示为01101001B,这样,左、右方向灯变为红灯,上、下方向灯变为绿灯,完成红绿灯转换。
8255输出信号06FH,二进制表示为01101111B,这样上、下方向灯熄灭,反复几次,造成闪烁效果。
最后输入09H,二进制表示为00001001B,上、下方向灯变为黄灯。
只要最后进行跳转,重新开始输入信号即可。
3.2.5程序拓展内容在原有基础上,我们利用实验箱上的八个小灯,加入了倒计时系统。
程序如下:DATA SEGMENTDATA ENDSSTACK SEGMENT STACKSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AL,82HMOV DX,203HOUT DX,ALB: MOV DX,201HIN AL,DXMOV BL,01HTEST AL,BLJNZ BMOV DX,202HA: MOV AL,96HOUT DX,ALCALL DELAYMOV AL,06HOUT DX,ALCALL DELAYMOV AL,96HOUT DX,ALCALL DELAYMOV AL,06HOUT DX,ALCALL DELAYMOV AL,96HOUT DX,ALCALL DELAYMOV AL,06HOUT DX,ALCALL DELAY2MOV AL,69HOUT DX,ALCALL DELAYMOV AL,09HOUT DX,ALCALL DELAYMOV AL,69HOUT DX,ALCALL DELAYMOV AL,09HOUT DX,ALCALL DELAYMOV AL,69HOUT DX,ALCALL DELAYMOV AL,09HOUT DX,ALCALL DELAY2JMP ADELAY PROC NEARMOV BX,1CAH CNT1: MOV CX,0DFH CNT2: LOOP CNT2DEC BXJNZ CNT1RETDELAY ENDPDELAY2 PROC NEAROUT DX,ALMOV DX,200HMOV AL,000HOUT DX,ALCALL DELAYMOV AL,080HOUT DX,ALCALL DELAYMOV AL,0C0HOUT DX,ALCALL DELAYMOV AL,0E0HOUT DX,ALCALL DELAYMOV AL,0F0HOUT DX,ALCALL DELAYMOV AL,0F8HOUT DX,ALCALL DELAYMOV AL,0FCHOUT DX,ALCALL DELAYMOV AL,0FEHOUT DX,ALCALL DELAYMOV AL,0FFHOUT DX,ALCALL DELAYMOV DX,202HRETDELAY2 ENDPDELAY 3 PROC NEARMOV BX,1CAHCNT1: MOV CX,0DFHCNT2: LOOP CNT2DEC BXJNZ CNT1RETDELAY3 ENDPCODE ENDSEND START前半部分程序,和原来的不变,后面添加了倒计时程序。