1、微机原理课程设计微机原理与接口技术课程设计 设计题目:8*2小键盘控制LED亮灭设 计 人:专业班级:自动化0703 学 号:2009年12月第一章 绪论1.1设计题目简介 1.1.1设计背景 经过一个学期微机原理与接口技术的学习,我们掌握了很多有关各种芯片和编程的知识,为了更好地将我们的知识学以致用,我们做了下面的课程设计小键盘控制红绿灯。 1.1.2 设计功能 小键盘上0 ,1,2,3,4号键控制红绿灯的亮灭情况: 按0,则黄灯先亮接着红灯亮,接着绿灯亮最后都亮开始循环 按1,则绿灯亮开始闪烁。 按2,则黄灯亮开始闪烁。 按3,则从L1至L12依次循环亮起按4,则L2,L8黄灯亮,L4,L
2、10红灯亮,L6,L12绿灯亮循环第二章 硬件设计 2.1实验装置介绍 本设计用到的实验装置有IBM PC机(586)和CES-86通用微机实验装置。IBM PC机是基于DOS操作系统的PC机,可用于汇编语言的编译,运行,调试;CES-86型通用实验装置的特点是“单板积木式”电路,其表现方式为在表面铜箔板上腐蚀出具有21个独立电路的印刷电路块。它可以和任何一种PC机相连组成系统,相连后即可以再此装置上进行硬件拼接,组成各种实验系统。这21块积木在试验箱上面分布如图: “单积木式”示意图 本设计主要选用其中K:可编程并行通信接口(8255A)电路;I:发光二极管(LED)显示电路;M:十六进制键
3、盘电路来实现具体功能。 2.2硬件电路设计 2.2.1电路图红绿灯闪烁实验台接线图2.2.2芯片介绍8255是40引脚双列直插式芯片,片内有A,B,C3个8位I/O端口,可提供24条可编程输入/输出端口线。其内部结构由与CPU接口电路,内部控制逻辑电路和与外设的输入/输出接口电路三部分组成。引脚信号介绍如下:D7D0:三态,双向数据线,与CPU数据总线链接,用来传输数据。CS:片选信号,低电平有效时,芯片被选中。A1,A0:地址线,用来选择内部端口。RD:读出信号线,低电平有效时,允许数据读出。WR:写入信号线,低电平有效时,允许数据写入。RESET:复位信号线,高电平有效时,将所有内部寄存器
4、清零。PA7PA0:A口输入/输出信号线。PB7PB0:B口输入/输出信号线。PC7PC0:C口输入/输出信号线。VCC:+5V电源。GND:电源地线。8255A芯片有0,1,2三种工作方式。其中A,B,C三个端口都可以工作在方式0;A,B两端口可工作在方式1;仅有A口可工作在方式2。第三章 软件设计3.1主程序 3.1.1主程序及注释 LIGHTS MACRO PB,PC ;宏定义两个变量 MOV DX,CTL MOV AL,80H ;写入控制字 OUT DX,AL MOV DX, DB55 MOV AL,PBOUT DX,ALMOV DX, DC55MOV AL,PCOUT DX,ALCA
5、LL DELAY3 ;调用延时子程序ENDM ;宏定义结束DATA SEGMENT ;数据段 DA55 EQU 318H ;端口A地址DB55 EQU 319H ;端口B地址DC55 EQU 31AH ;端口C地址CTL EQU 31BH ;控制端口地址TABLE DW 0101H,0102H,0104H,0108H,0110H,0120H,0140H,0180H DW 0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280H ;键盘代码CHAR DBCDEFBA9845673210 ;字符表CRT DBPLAY ANY KEY IN THE SMALL
6、KEYBOARD !,0AH,0DH DBIT WILL BE ON THE SCREEN! END WITH E,0AH,0DH,$ ;显示信息MESS DBOVER,0AH,0DH,$DATA ENDSSTACK SEGMENT PARA STACKSTACK ;堆栈段STA DW 50 DUP(?)STACK ENDSCODE SEGMENT ;代码段MAIN PROC FAR ;主程序ASSUME CS: CODE, DS:DATASTART: MOV AX, DATAMOV DS, AX ;数据段寄存器装入数据段首地址 MOV DX, OFFSET CRT ;显示提示信息MOV AH
7、,09HINT 21HLOP: CALL KEY ;键盘扫描CMP DL, E ;是字符E吗?JE LP ;是的,就跳转到LP JNZ LOP ;不是执行LOP CALL SHOW ;调用宏定义LP: MOV AX, 4C00HINT 21H ;返回 DOSRETMAIN ENDP ;主程序结束3.1.2主程序功能: 主程序很短,原因是设立了一个宏定义,这样大大地减少了程序的冗余。通过主程序调用宏定义来实现整个程序,从而使LED按我们程序设计的要求来显示。 3.1.3流程图 3.2子程序 3.2.1子程序及注释 KEY PROC NEAR ;子程序内容LP1: MOV AL, 82H MOV
8、DX, CTL OUT DX,ALWAIT1: MOV AL ,00 MOV DX, DA55 ;输出到A口 OUT DX, AL MOV DX,DB55 IN AL, DX CMP AL, 0FFH JZ WAIT1 PUSH AX ;AX出桟 PUSH AXMOV CX, 1000HLP2: LOOP LP2 ;循环执行LP2MOV DX, CTLMOV AL, 90HOUT DX, ALMOV DX, DB55POP AXOUT DX, ALMOV DX, DA55IN AL, DXPOP BX ;BX出桟MOV AH, BLNOT AXMOV SI,OFFSET TABLEMOV DI
9、,OFFSET CHARMOV CX,16LP3: CMP AX,SIJZ LP4 ;AXSI=0 ,则转到执行LP4DEC CX ;CX-1JZ LP1ADD SI,2INC DIJMP LP3LP4: MOV DL , DIMOV AH, 02 INT 21H PUSH DX MOV AL,82H MOV DX,CTL OUT DX,AL WAIT2: MOV AL,00 MOV DX,DA55 OUT DX,AL MOV DX,DB55 IN AL,DX CMP AL,0FFH J NZ WAIT2 POP DX RET KEY ENDP ;小键盘扫描程序结束 SHOW PROC NEA
10、R TOP: CMP DL,4 ;测试的新数据和4比较 JLE TOP4 ;如果小于等于则跳转到TOP4 JMP FF1 ;否则跳转至FF1 TOP4: JE DONE4 ;如果等于4则执行DONE4 CMP DL ,2 ;DL是否等于2 JLE TOP2 如果小于等于则跳转至TOP2; JMP DONE3 ;否则跳转至DONE3 FF1: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09H INT 21H MOV AX,4C00H INT 21H TOP2: JE DONE2 ;如果等于则执行TOP2 CMP DL,1 ;DL与1比较 JE
11、 SP1 ;等于则执行SP1 JMP DONE0 ;否则跳转至DONE0 DONE4: MOV CX,0005H L4: LIGHTS 0FFH,0FFH LIGHTS 10101111B,10101010B ;黄灯L2.L8亮红灯L4.L10亮,绿灯L6.L12亮 LOOP L4 ;循环5次 CALL KEY ;扫描键盘 JMP TOP DONE3: MOV CX,0005H L3: LIGHTS 0FFH,0FFH LIGHTS 0FFH,01111111B LIGHTS 11101111B, 0FFH LIGHTS 0FFH,11110111B LIGHTS 0FFH,10111111B
12、 LIGHTS 11011111B,0FFH LIGHTS 0FFH,11111011B LIGHTS 0FFH,11011111B LIGHTS 10111111H,0FFH LIGHTS 0FFH.11111101B LIGHTS 0FFH,11101111B LIGHTS 01111111B,0FFH LIGHTS 0FFH,11111110B ;从L1,L12依次循环亮 LOOP L3 ;循环5次 CALL KEY JMP TOP SP1: JMP DONE1 DONE2: MOV CX,0005H L2: LIGHTS 0FFH ,0FFH ;所有灯都灭 LIGHTS 00H,0FF
13、H ;将黄灯开 LOOP L2 CALL KEY JMP TOP DONE1: MOV CX,0005H L1: LIGHTS 0FFH,0FFH LIGHTS 0FFH,0F0H ;将绿灯开 LOOP L1 CALL KEY JMP TOP DONE0 : , MOV CX,0005H L0: LIGHTS 0FFH,0FFH LIGHTS 0FH,0FFH ;将黄灯开 LIGHTS 0FH,0FH ;将黄灯开,且红灯也开 LIGHTS 0FH,00H ;所有灯都开 LOOP L0 CALL KEY JMP TOP DELAY1 PROC NEAR ;延时子程序开始 PUSH CX MOV
14、CX,0FFFFH CCC: LOOP CCC POP CX RET DELAY1 ENDP ;延时程序结束 DELAY3 PROC NEAR ;延时程序开始 PUSH AX PUAH CX MOV CX,00F0H VVV: CALL DELAY1 LOOP VVV POP CX POP AX RET DELAY3 ENDP ;延时程序结束 SHOW ENDP CODE ENDS END START ; 程序结束 KEY PROC NEAR ;子程序内容LP1: MOV AL, 82H MOV DX, CTL OUT DX,ALWAIT1: MOV AL ,00 MOV DX, DA55 ;
15、输出到A口 OUT DX, AL MOV DX,DB55 IN AL, DX CMP AL, 0FFH JZ WAIT1 PUSH AX ;AX出桟 PUSH AXMOV CX, 1000HLP2: LOOP LP2 ;循环执行LP2MOV DX, CTLMOV AL, 90HOUT DX, ALMOV DX, DB55POP AXOUT DX, ALMOV DX, DA55IN AL, DXPOP BX ;BX出桟MOV AH, BLNOT AXMOV SI,OFFSET TABLEMOV DI,OFFSET CHARMOV CX,16LP3: CMP AX,SIJZ LP4 ;AXSI=0
16、 ,则转到执行LP4DEC CX ;CX-1JZ LP1ADD SI,2INC DIJMP LP3LP4: MOV DL , DIMOV AH, 02 INT 21H PUSH DX MOV AL,82H MOV DX,CTL OUT DX,AL WAIT2: MOV AL,00 MOV DX,DA55 OUT DX,AL MOV DX,DB55 IN AL,DX CMP AL,0FFH J NZ WAIT2 POP DX RET KEY ENDP ;小键盘扫描程序结束 SHOW PROC NEAR TOP: CMP DL,4 ;测试的新数据和4比较 JLE TOP4 ;如果小于等于则跳转到T
17、OP4 JMP FF1 ;否则跳转至FF1 TOP4: JE DONE4 ;如果等于4则执行DONE4 CMP DL ,2 ;DL是否等于2 JLE TOP2 如果小于等于则跳转至TOP2; JMP DONE3 ;否则跳转至DONE3 FF1: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09H INT 21H MOV AX,4C00H INT 21H TOP2: JE DONE2 ;如果等于则执行TOP2 CMP DL,1 ;DL与1比较 JE SP1 ;等于则执行SP1 JMP DONE0 ;否则跳转至DONE0 DONE4: MOV C
18、X,0005H L4: LIGHTS 0FFH,0FFH LIGHTS 10101111B,10101010B ;黄灯L2.L8亮红灯L4.L10亮,绿灯L6.L12亮 LOOP L4 ;循环5次 CALL KEY ;扫描键盘 JMP TOP DONE3: MOV CX,0005H L3: LIGHTS 0FFH,0FFH LIGHTS 0FFH,01111111B LIGHTS 11101111B, 0FFH LIGHTS 0FFH,11110111B LIGHTS 0FFH,10111111B LIGHTS 11011111B,0FFH LIGHTS 0FFH,11111011B LIGH
19、TS 0FFH,11011111B LIGHTS 10111111H,0FFH LIGHTS 0FFH.11111101B LIGHTS 0FFH,11101111B LIGHTS 01111111B,0FFH LIGHTS 0FFH,11111110B ;从L1,L12依次循环亮 LOOP L3 ;循环5次 CALL KEY JMP TOP SP1: JMP DONE1 DONE2: MOV CX,0005H L2: LIGHTS 0FFH ,0FFH ;所有灯都灭 LIGHTS 00H,0FFH ;将黄灯开 LOOP L2 CALL KEY JMP TOP DONE1: MOV CX,00
20、05H L1: LIGHTS 0FFH,0FFH LIGHTS 0FFH,0F0H ;将绿灯开 LOOP L1 CALL KEY JMP TOP DONE0 : , MOV CX,0005H L0: LIGHTS 0FFH,0FFH LIGHTS 0FH,0FFH ;将黄灯开 LIGHTS 0FH,0FH ;将黄灯开,且红灯也开 LIGHTS 0FH,00H ;所有灯都开 LOOP L0 CALL KEY JMP TOP DELAY1 PROC NEAR ;延时子程序开始 PUSH CX MOV CX,0FFFFH CCC: LOOP CCC POP CX RET DELAY1 ENDP ;延
21、时程序结束 DELAY3 PROC NEAR ;延时程序开始 PUSH AX PUAH CX MOV CX,00F0H VVV: CALL DELAY1 LOOP VVV POP CX POP AX RET DELAY3 ENDP ;延时程序结束 SHOW ENDP CODE ENDS END START ; 程序结束 3.2.2子程序功能 按0,则黄灯先亮接着红灯亮,接着绿灯亮最后都亮开始循环 按1,则绿灯亮开始闪烁。 按2,则黄灯亮开始闪烁。 按3,则从L1至L12依次循环亮起 按4,则L2,L8黄灯亮,L4,L10红灯亮,L6,L12绿灯亮循环 3.2.3流程图(见下页) 3.3程序清单
22、 LIGHTS MACRO PB,PC ;宏定义两个变量 MOV DX,CTL MOV AL,80H ;写入控制字 OUT DX,AL MOV DX, DB55 MOV AL,PBOUT DX,ALMOV DX, DC55MOV AL,PCOUT DX,ALCALL DELAY3 ;调用延时子程序ENDM ;宏定义结束DATA SEGMENT ;数据段 DA55 EQU 318H ;端口A地址DB55 EQU 319H ;端口B地址DC55 EQU 31AH ;端口C地址CTL EQU 31BH ;控制端口地址TABLE DW 0101H,0102H,0104H,0108H,0110H,012
23、0H,0140H,0180H DW 0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280H ;键盘代码CHAR DBCDEFBA9845673210 ;字符表CRT DBPLAY ANY KEY IN THE SMALL KEYBOARD !,0AH,0DH DBIT WILL BE ON THE SCREEN! END WITH E,0AH,0DH,$ ;显示信息MESS DBOVER,0AH,0DH,$DATA ENDSSTACK SEGMENT PARA STACKSTACK ;堆栈段STA DW 50 DUP(?)STACK ENDSCODE S
24、EGMENT ;代码段MAIN PROC FAR ;主程序ASSUME CS: CODE, DS:DATASTART: MOV AX, DATAMOV DS, AX ;数据段寄存器装入数据段首地址 MOV DX, OFFSET CRT ;显示提示信息MOV AH,09HINT 21HLOP: CALL KEY ;键盘扫描CMP DL, E ;是字符E吗?JE LP ;是的,就跳转到LP JNZ LOP ;不是执行LOP CALL SHOW ;调用宏定义LP: MOV AX, 4C00HINT 21H ;返回 DOSRETMAIN ENDP ;主程序结束第四章 课程设计总结 通过一个学期的微机原
25、理与接口技术课程的学习,我们基本上掌握了很多内容,并将这些知识运用到了我们的课程设计中。在课设的几天里我们不停地上机调试程序,不时地再翻阅很多资料,以前总觉的自己WORD,WPS学的还行,但是通过这一次的课设也知道了自己的很多不足之处。在实践地过程中遇到了很多以前没有见过的问题,就是这些一点一滴的过程才有了我们今天的成果。在这几天里我们学到的不仅是知识以及实践能力的提高,还有的是团队合作精神。参考文献1.马春燕,段承宪.微机原理与接口技术.北京:电子工业出版社,20062.马春燕,段承宪.微机原理与接口技术实验与学习辅导.北京:电子工业出版社, 20063.张荣标等,微机计算机原理与接口技术,北京:机械工业出版社,20054.毛小平,卢小勇.微型计算机原理与接口技术.北京:清华大学出版社,北方交通大学出版社,2002 目录第一章 绪论 21.1设计题目简介 21.1.1设计背景 21.1.2 设计功能 2第二章 硬件设计 32.1实验装置介绍 32.2硬件电路设计 42.2.1电路图 42.2.2芯片介绍 5第三章 软件设计 73.1主程序 73.1.1主程序及注释 73.1.2主程序功能: 83.1.3流程图 83.2子程序 93.2.1子程序及注释 93.2.2子程序功能 153.2.3流程图(见下页) 153.3程序清单 15第四章 课程设计总结 19参考文献 19
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1