微机原理课程设计.docx
- 文档编号:8316120
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:20
- 大小:216.13KB
微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
微机原理课程设计
微机原理与接口技术
课程设计
设计题目:
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,L10红灯亮,L6,L12绿灯亮循环
第二章硬件设计
2.1实验装置介绍
本设计用到的实验装置有IBMPC机(586)和CES-86通用微机实验装置。
IBMPC机是基于DOS操作系统的PC机,可用于汇编语言的编译,运行,调试;CES-86型通用实验装置的特点是“单板积木式”电路,其表现方式为在表面铜箔板上腐蚀出具有21个独立电路的印刷电路块。
它可以和任何一种PC机相连组成系统,相连后即可以再此装置上进行硬件拼接,组成各种实验系统。
这21块积木在试验箱上面分布如图:
“单积木式”示意图
本设计主要选用其中K:
可编程并行通信接口(8255A)电路;I:
发光二极管(LED)显示电路;M:
十六进制键盘电路来实现具体功能。
2.2硬件电路设计
2.2.1电路图
红绿灯闪烁实验台接线图
2.2.2芯片介绍
8255是40引脚双列直插式芯片,片内有A,B,C3个8位I/O端口,可提供24条可编程输入/输出端口线。
其内部结构由与CPU接口电路,内部控制逻辑电路和与外设的输入/输出接口电路三部分组成。
引脚信号介绍如下:
D7~D0:
三态,双向数据线,与CPU数据总线链接,用来传输数据。
CS:
片选信号,低电平有效时,芯片被选中。
A1,A0:
地址线,用来选择内部端口。
RD:
读出信号线,低电平有效时,允许数据读出。
WR:
写入信号线,低电平有效时,允许数据写入。
RESET:
复位信号线,高电平有效时,将所有内部寄存器清零。
PA7~PA0:
A口输入/输出信号线。
PB7~PB0:
B口输入/输出信号线。
PC7~PC0:
C口输入/输出信号线。
VCC:
+5V电源。
GND:
电源地线。
8255A芯片有0,1,2三种工作方式。
其中A,B,C三个端口都可以工作在方式0;A,B两端口可工作在方式1;仅有A口可工作在方式2。
第三章软件设计
3.1主程序
3.1.1主程序及注释
LIGHTSMACROPB,PC;宏定义两个变量
MOVDX,CTL
MOVAL,80H;写入控制字
OUTDX,AL
MOVDX,DB55
MOVAL,PB
OUTDX,AL
MOVDX,DC55
MOVAL,PC
OUTDX,AL
CALLDELAY3;调用延时子程序
ENDM;宏定义结束
DATASEGMENT;数据段
DA55EQU318H;端口A地址
DB55EQU319H;端口B地址
DC55EQU31AH;端口C地址
CTLEQU31BH;控制端口地址
TABLEDW0101H,0102H,0104H,0108H,0110H,0120H,0140H,0180H
DW0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280H;键盘代码
CHARDB’CDEFBA9845673210’;字符表
CRTDB’PLAYANYKEYINTHESMALLKEYBOARD!
’,0AH,0DH
DB’ITWILLBEONTHESCREEN!
ENDWITHE’,0AH,0DH,’$’;显示信息
MESSDB’OVER’,0AH,0DH,’$’
DATAENDS
STACKSEGMENTPARASTACK’STACK’;堆栈段
STADW50DUP(?
)
STACKENDS
CODESEGMENT;代码段
MAINPROCFAR;主程序
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX;数据段寄存器装入数据段首地址
MOVDX,OFFSETCRT;显示提示信息
MOVAH,09H
INT21H
LOP:
CALLKEY;键盘扫描
CMPDL,’E’;是字符’E’吗?
JELP;是的,就跳转到LP
JNZLOP;不是执行LOP
CALLSHOW;调用宏定义
LP:
MOVAX,4C00H
INT21H;返回DOS
RET
MAINENDP;主程序结束
3.1.2主程序功能:
主程序很短,原因是设立了一个宏定义,这样大大地减少了程序的冗余。
通过主程序调用宏定义来实现整个程序,从而使LED按我们程序设计的要求来显示。
3.1.3流程图
3.2子程序
3.2.1子程序及注释
KEYPROCNEAR;子程序内容
LP1:
MOVAL,82H
MOVDX,CTL
OUTDX,AL
WAIT1:
MOVAL,00
MOVDX,DA55;输出到A口
OUTDX,AL
MOVDX,DB55
INAL,DX
CMPAL,0FFH
JZWAIT1
PUSHAX;AX出桟
PUSHAX
MOVCX,1000H
LP2:
LOOPLP2;循环执行LP2
MOVDX,CTL
MOVAL,90H
OUTDX,AL
MOVDX,DB55
POPAX
OUTDX,AL
MOVDX,DA55
INAL,DX
POPBX;BX出桟
MOVAH,BL
NOTAX
MOVSI,OFFSETTABLE
MOVDI,OFFSETCHAR
MOVCX,16
LP3:
CMPAX,[SI]
JZLP4;AX—[SI]=0,则转到执行LP4
DECCX;CX--1
JZLP1
ADDSI,2
INCDI
JMPLP3
LP4:
MOVDL,[DI]
MOVAH,02
INT21H
PUSHDX
MOVAL,82H
MOVDX,CTL
OUTDX,AL
WAIT2:
MOVAL,00
MOVDX,DA55
OUTDX,AL
MOVDX,DB55
INAL,DX
CMPAL,0FFH
JNZWAIT2
POPDX
RET
KEYENDP;小键盘扫描程序结束
SHOWPROCNEAR
TOP:
CMPDL,’4’;测试的新数据和‘4’比较
JLETOP4;如果小于等于则跳转到TOP4
JMPFF1;否则跳转至FF1
TOP4:
JEDONE4;如果等于‘4’则执行DONE4
CMPDL,’2’;DL是否等于‘2’
JLETOP2如果小于等于则跳转至TOP2;
JMPDONE3;否则跳转至DONE3
FF1:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
TOP2:
JEDONE2;如果等于则执行TOP2
CMPDL,’1’;DL与‘1’比较
JESP1;等于则执行SP1
JMPDONE0;否则跳转至DONE0
DONE4:
MOVCX,0005H
L4:
LIGHTS0FFH,0FFH
LIGHTS10101111B,10101010B;黄灯L2.L8亮红灯L4.L10亮,绿灯L6.L12亮
LOOPL4;循环5次
CALLKEY;扫描键盘
JMPTOP
DONE3:
MOVCX,0005H
L3:
LIGHTS0FFH,0FFH
LIGHTS0FFH,01111111B
LIGHTS11101111B,0FFH
LIGHTS0FFH,11110111B
LIGHTS0FFH,10111111B
LIGHTS11011111B,0FFH
LIGHTS0FFH,11111011B
LIGHTS0FFH,11011111B
LIGHTS10111111H,0FFH
LIGHTS0FFH.11111101B
LIGHTS0FFH,11101111B
LIGHTS01111111B,0FFH
LIGHTS0FFH,11111110B;从L1,L12依次循环亮
LOOPL3;循环5次
CALLKEY
JMPTOP
SP1:
JMPDONE1
DONE2:
MOVCX,0005H
L2:
LIGHTS0FFH,0FFH;所有灯都灭
LIGHTS00H,0FFH;将黄灯开
LOOPL2
CALLKEY
JMPTOP
DONE1:
MOVCX,0005H
L1:
LIGHTS0FFH,0FFH
LIGHTS0FFH,0F0H;将绿灯开
LOOPL1
CALLKEY
JMPTOP
DONE0:
MOVCX,0005H
L0:
LIGHTS0FFH,0FFH
LIGHTS0FH,0FFH;将黄灯开
LIGHTS0FH,0FH;将黄灯开,且红灯也开
LIGHTS0FH,00H;所有灯都开
LOOPL0
CALLKEY
JMPTOP
DELAY1PROCNEAR;延时子程序开始
PUSHCX
MOVCX,0FFFFH
CCC:
LOOPCCC
POPCX
RET
DELAY1ENDP;延时程序结束
DELAY3PROCNEAR;延时程序开始
PUSHAX
PUAHCX
MOVCX,00F0H
VVV:
CALLDELAY1
LOOPVVV
POPCX
POPAX
RET
DELAY3ENDP;延时程序结束
SHOWENDP
CODEENDS
ENDSTART;程序结束
KEYPROCNEAR;子程序内容
LP1:
MOVAL,82H
MOVDX,CTL
OUTDX,AL
WAIT1:
MOVAL,00
MOVDX,DA55;输出到A口
OUTDX,AL
MOVDX,DB55
INAL,DX
CMPAL,0FFH
JZWAIT1
PUSHAX;AX出桟
PUSHAX
MOVCX,1000H
LP2:
LOOPLP2;循环执行LP2
MOVDX,CTL
MOVAL,90H
OUTDX,AL
MOVDX,DB55
POPAX
OUTDX,AL
MOVDX,DA55
INAL,DX
POPBX;BX出桟
MOVAH,BL
NOTAX
MOVSI,OFFSETTABLE
MOVDI,OFFSETCHAR
MOVCX,16
LP3:
CMPAX,[SI]
JZLP4;AX—[SI]=0,则转到执行LP4
DECCX;CX--1
JZLP1
ADDSI,2
INCDI
JMPLP3
LP4:
MOVDL,[DI]
MOVAH,02
INT21H
PUSHDX
MOVAL,82H
MOVDX,CTL
OUTDX,AL
WAIT2:
MOVAL,00
MOVDX,DA55
OUTDX,AL
MOVDX,DB55
INAL,DX
CMPAL,0FFH
JNZWAIT2
POPDX
RET
KEYENDP;小键盘扫描程序结束
SHOWPROCNEAR
TOP:
CMPDL,’4’;测试的新数据和‘4’比较
JLETOP4;如果小于等于则跳转到TOP4
JMPFF1;否则跳转至FF1
TOP4:
JEDONE4;如果等于‘4’则执行DONE4
CMPDL,’2’;DL是否等于‘2’
JLETOP2如果小于等于则跳转至TOP2;
JMPDONE3;否则跳转至DONE3
FF1:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS
MOVAH,09H
INT21H
MOVAX,4C00H
INT21H
TOP2:
JEDONE2;如果等于则执行TOP2
CMPDL,’1’;DL与‘1’比较
JESP1;等于则执行SP1
JMPDONE0;否则跳转至DONE0
DONE4:
MOVCX,0005H
L4:
LIGHTS0FFH,0FFH
LIGHTS10101111B,10101010B;黄灯L2.L8亮红灯L4.L10亮,绿灯L6.L12亮
LOOPL4;循环5次
CALLKEY;扫描键盘
JMPTOP
DONE3:
MOVCX,0005H
L3:
LIGHTS0FFH,0FFH
LIGHTS0FFH,01111111B
LIGHTS11101111B,0FFH
LIGHTS0FFH,11110111B
LIGHTS0FFH,10111111B
LIGHTS11011111B,0FFH
LIGHTS0FFH,11111011B
LIGHTS0FFH,11011111B
LIGHTS10111111H,0FFH
LIGHTS0FFH.11111101B
LIGHTS0FFH,11101111B
LIGHTS01111111B,0FFH
LIGHTS0FFH,11111110B;从L1,L12依次循环亮
LOOPL3;循环5次
CALLKEY
JMPTOP
SP1:
JMPDONE1
DONE2:
MOVCX,0005H
L2:
LIGHTS0FFH,0FFH;所有灯都灭
LIGHTS00H,0FFH;将黄灯开
LOOPL2
CALLKEY
JMPTOP
DONE1:
MOVCX,0005H
L1:
LIGHTS0FFH,0FFH
LIGHTS0FFH,0F0H;将绿灯开
LOOPL1
CALLKEY
JMPTOP
DONE0:
MOVCX,0005H
L0:
LIGHTS0FFH,0FFH
LIGHTS0FH,0FFH;将黄灯开
LIGHTS0FH,0FH;将黄灯开,且红灯也开
LIGHTS0FH,00H;所有灯都开
LOOPL0
CALLKEY
JMPTOP
DELAY1PROCNEAR;延时子程序开始
PUSHCX
MOVCX,0FFFFH
CCC:
LOOPCCC
POPCX
RET
DELAY1ENDP;延时程序结束
DELAY3PROCNEAR;延时程序开始
PUSHAX
PUAHCX
MOVCX,00F0H
VVV:
CALLDELAY1
LOOPVVV
POPCX
POPAX
RET
DELAY3ENDP;延时程序结束
SHOWENDP
CODEENDS
ENDSTART;程序结束
3.2.2子程序功能
按‘0’,则黄灯先亮接着红灯亮,接着绿灯亮最后都亮开始循环
按‘1’,则绿灯亮开始闪烁。
按‘2’,则黄灯亮开始闪烁。
按‘3’,则从L1至L12依次循环亮起
按‘4’,则L2,L8黄灯亮,L4,L10红灯亮,L6,L12绿灯亮循环
3.2.3流程图(见下页)
3.3程序清单
LIGHTSMACROPB,PC;宏定义两个变量
MOVDX,CTL
MOVAL,80H;写入控制字
OUTDX,AL
MOVDX,DB55
MOVAL,PB
OUTDX,AL
MOVDX,DC55
MOVAL,PC
OUTDX,AL
CALLDELAY3;调用延时子程序
ENDM;宏定义结束
DATASEGMENT;数据段
DA55EQU318H;端口A地址
DB55EQU319H;端口B地址
DC55EQU31AH;端口C地址
CTLEQU31BH;控制端口地址
TABLEDW0101H,0102H,0104H,0108H,0110H,0120H,0140H,0180H
DW0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280H;键盘代码
CHARDB’CDEFBA9845673210’;字符表
CRTDB’PLAYANYKEYINTHESMALLKEYBOARD!
’,0AH,0DH
DB’ITWILLBEONTHESCREEN!
ENDWITHE’,0AH,0DH,’$’;显示信息
MESSDB’OVER’,0AH,0DH,’$’
DATAENDS
STACKSEGMENTPARASTACK’STACK’;堆栈段
STADW50DUP(?
)
STACKENDS
CODESEGMENT;代码段
MAINPROCFAR;主程序
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX;数据段寄存器装入数据段首地址
MOVDX,OFFSETCRT;显示提示信息
MOVAH,09H
INT21H
LOP:
CALLKEY;键盘扫描
CMPDL,’E’;是字符’E’吗?
JELP;是的,就跳转到LP
JNZLOP;不是执行LOP
CALLSHOW;调用宏定义
LP:
MOVAX,4C00H
INT21H;返回DOS
RET
MAINENDP;主程序结束
第四章课程设计总结
通过一个学期的《微机原理与接口技术》课程的学习,我们基本上掌握了很多内容,并将这些知识运用到了我们的课程设计中。
在课设的几天里我们不停地上机调试程序,不时地再翻阅很多资料,以前总觉的自己WORD,WPS学的还行,但是通过这一次的课设也知道了自己的很多不足之处。
在实践地过程中遇到了很多以前没有见过的问题,就是这些一点一滴的过程才有了我们今天的成果。
在这几天里我们学到的不仅是知识以及实践能力的提高,还有的是团队合作精神。
参考文献
1.马春燕,段承宪.微机原理与接口技术.北京:
电子工业出版社,2006
2.马春燕,段承宪.微机原理与接口技术实验与学习辅导.北京:
电子工业出版社,2006
3.张荣标等,微机计算机原理与接口技术,北京:
机械工业出版社,2005
4.毛小平,卢小勇.微型计算机原理与接口技术.北京:
清华大学出版社,北方交
通大学出版社,2002
目录
第一章绪论2
1.1设计题目简介2
1.1.1设计背景2
1.1.2设计功能2
第二章硬件设计3
2.1实验装置介绍3
2.2硬件电路设计4
2.2.1电路图4
2.2.2芯片介绍5
第三章软件设计7
3.1主程序7
3.1.1主程序及注释7
3.1.2主程序功能:
8
3.1.3流程图8
3.2子程序9
3.2.1子程序及注释9
3.2.2子程序功能15
3.2.3流程图(见下页)15
3.3程序清单15
第四章课程设计总结19
参考文献19
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计