课 程 设 计
课程名称
微机课程设计
题目名称__
计算器(1)
学生学院____
_ 自动化________
专业班级____ 自动化(1)班_ __
学
号
3106000836
学生姓名___
谢晓新__
_
指导教师______ 李传芳 _____
2008 年 12 月 25 日
1
广东工业大学课程设计任务书
题目名称
学生学院
专业班级
姓
学
名
号
计算器(1)
自动化
自动化(1)班
谢晓新
3106000836
一、课程设计的目的
1、巩固和加深对《微机原理及应用》课程内容的认识和理解,提高应用水平
2、掌握汇编语言程序的编程方法
3、熟悉键盘控制和七段数码管的使用
二、课程设计的内容
1.把存储器单元中的 0AH,02H,0FH,09H 从四位七段 LED 数码管同时显示出来,要求做
成循环程序,并使用 XLAT 来译码。
2.编写程序,实现以下键盘功能,按任意键在显示器上显示对应键值,要求显示值能
够实现左移功能。
5
B
A
3
7
C
F
0
3.实现:
a)定义键盘按键,5 个为数字键 3、4、5、6、7,7 个功能键:减号—,除号÷,等
号=;
b)可进行三位 8 进制减法运算;
c)可进行两位 10 进制除法运算。
三、课程设计应完成的工作
1.搜集、整理和研究资料,可参考教材后的实例。
2.按电路框图连接电路,编写程序完成各个程序设计要求,并完成调试。
3.完成课程设计的报告书一份。
2
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
2
3
4
领取任务书
实 2-206
收集,整理资料
图书馆、宿舍
12.22
12.22
上机编写调试程序
实 2-206
12.23~12.24
撰写课程设计报告
宿舍
12.25
五、应收集的资料及主要参考文献
1.微型计算机原理及应用.许立梓等编.北京:机械工业出版社,2003
2.微型计算机原理及应用—习题解答、试验指导及课程设计. 许立梓等编.北京:机械
工业出版社,2008
发出任务书日期:2008 年 12 月 22 日
指导教师签名:
计划完成日期: 2008 年 12 月 25 日
基层教学单位责任人签章:
主管院长签章:
3
目录
一、源程序…………………………………………………………………………5
1.程序一………………………………………………………………………5
1.1 题目……………………………………………………………………5
1.2 源程序…………………………………………………………………5
2.程序二………………………………………………………………………6
2.1 题目……………………………………………………………………6
2.2 源程序…………………………………………………………………6
3.程序三………………………………………………………………………10
3.1 题目……………………………………………………………………10
3.2 源程序…………………………………………………………………10
二、心得与体会……………………………………………………………………19
三、参考文献………………………………………………………………………19
4
1.程序一
1.1 题目:把存储器单元中的 0AH,02H,0FH,09H 从四位七段 LED 数码管同时显示出来,要
求做成循环程序,并使用 XLAT 来译码。
1.2源程序:
STACK
;设置四位查询位
SEGMENT STACK
DW 64 DUP(?)
ENDS
SEGMENT
DB 0AH,02H,0FH,09H
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;设置0~F的十六位数码管段码
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
ENDS
SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV AL,80H
OUT 63H,AL
MOV DL,0FEH
MOV SI,OFFSET TAB1
MOV CX,0004H
MOV AL,DL
OUT 60H,AL
MOV AL,[SI]
MOV BX,OFFSET TAB2
XLAT TAB2
OUT 61H,AL
INC SI
ROL DL,01H
CALL TIME
LOOP L2
JMP L1
PUSH AX
PUSH CX
MOV CX,0002H
MOV AX,0300H
DEC AX
JNZ TIME2
LOOP TIME1
POP CX
POP AX
RET
ENDS
END START
;下个要显示的数码管位码
;查表取出数码管的段码
;查表的段码送A口显示
STACK
DATA
TAB1
TAB2
DATA
CODE
START:
L1:
L2:
TIME:
TIME1:
TIME2:
CODE
;8255A初始化
;位码送给AL
;延时程序
5
2.程序一
2.1 题目:2.编写程序,实现以下键盘功能,按任意键在显示器上显示对应键值,要求显示
值能够实现左移功能。
5
B
A
3
7
C
F
0
2.2 源程序:
STACK
STACK
DATA
VAR1
VAR2
VAR3
TABL
DATA
CODE
START:
STT:
NEXT:
STACK
SEGMENT
DW 64 DUP (?)
ENDS
SEGMENT
DB 07H,0BH,0DH,0EH
DB 3FH,3FH,3FH,3FH,3FH
DB 00H,00H,00H,00H,00H
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
ENDS
SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV AL,88H
OUT 63H,AL
MOV AL,00H
OUT 60H,AL
IN AL,62H
AND AL,60H
CMP AL,60H
JNZ KEYABC
CALL DISP
JMP STT
;8255A初始化
;键盘测试
;调用显示程序
;------------------------------------------------------------------------------
KEYABC: CALL TIME
IN AL,62H
AND AL,60H
CMP AL,60H
JNZ KEY
JMP STT
;延时,去抖动
;键盘扫描识别
KEY:
MOV AL,0FEH
OUT 60H,AL
IN AL,62H
TEST AL,40H
JNZ KEY_B
CALL KEY5
JMP STTK
6
KEY_B:
KEY_A:
KEY_3:
KEY_7:
KEY_C:
KEY_F:
KEY_0:
TEST AL,20H
JNZ KEY_A
CALL KEYB
JMP STTK
MOV AL,0FDH
OUT 60H,AL
IN AL,62H
TEST AL,40H
JNZ KEY_3
CALL KEYA
JMP STTK
TEST AL,20H
JNZ KEY_7
CALL KEY3
JMP STTK
MOV AL,0FBH
OUT 60H,AL
IN AL,62H
TEST AL,40H
JNZ KEY_C
CALL KEY7
JMP STTK
TEST AL,20H
JNZ KEY_F
CALL KEYC
JMP STTK
MOV AL,0F7H
OUT 60H,AL
IN AL,62H
TEST AL,40H
JNZ KEY_0
CALL KEYF
JMP STTK
TEST AL,20H
JNZ KEY_01
CALL KEY0
JMP STTK
KEY_01:
;------------------------------------------------------------------------------
KEY5:
CALL LP1
MOV AL,05H
MOV [DI+4],AL
LEA BX,TABL
XLAT TABL
;按键5处理子程序
;低4位字节前移
;查表取出要显示数字的数码管段码
7
MOV [SI+4],AL
CALL DISP
RET
;显示
;返回
;------------------------------------------------------------------------------
KEYB:
;按键B处理子程序
CALL LP1
MOV AL,0BH
MOV [DI+4],AL
LEA BX,TABL
XLAT TABL
MOV [SI+4],AL
CALL DISP
RET
;------------------------------------------------------------------------------
KEYA:
;按键A处理子程序
CALL LP1
MOV AL,0AH
MOV [DI+4],AL
LEA BX,TABL
XLAT TABL
MOV [SI+4],AL
CALL DISP
RET
;------------------------------------------------------------------------------
KEY3:
;按键3处理子程序
CALL LP1
MOV AL,03H
MOV [DI+4],AL
LEA BX,TABL
XLAT TABL
MOV [SI+4],AL
CALL DISP
RET
;------------------------------------------------------------------------------
KEY7:
;按键7处理子程序
CALL LP1
MOV AL,07H
MOV [DI+4],AL
LEA BX,TABL
XLAT TABL
MOV [SI+4],AL
CALL DISP
RET
;------------------------------------------------------------------------------
KEYC:
;按键C处理子程序
CALL LP1
MOV AL,0CH
MOV [DI+4],AL
LEA BX,TABL
8