学位论文微机原理与接口技术课程设计键盘显示控制器.docx
《学位论文微机原理与接口技术课程设计键盘显示控制器.docx》由会员分享,可在线阅读,更多相关《学位论文微机原理与接口技术课程设计键盘显示控制器.docx(19页珍藏版)》请在冰豆网上搜索。
学位论文微机原理与接口技术课程设计键盘显示控制器
课
程
设
计
报
告
课程名称
微机原理与接口技术
项目名称
键盘显示控制器
班级
学号
姓名
指导教师
2015年1月12日
课程设计主要目的
《微机原理与接口技术》是计算机科学与技术专业本科生的一门专业技术课程。
本课程设计是该课程重要的实践环节。
通过课程设计,提高学生的汇编语言程序设计能力和对接口典型芯片的应用能力,使学生对微型计算机基本的系统结构有一个整体的认识,对微型计算机硬/软件的工作原理有一个整体的认识,培养学生设计和调试微机应用系统的能力。
课程设计任务要求
本设计是做在一块扩展电路板上,用一根20芯扁平电缆与实验台上扩展插头J7相连。
需完成以下任务:
1、使用试验台及相关设备,通过编程实现在小键盘上每按一个健,6位数码管上显示出相应字符。
2、利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码显示电路,设计一个电子钟。
由8253中断定时,小键盘控制电子钟的启停及初始值的预置。
教师评语
成绩:
指导教师(签名)
目录
一、设计任务说明4
1.1、实验目的4
1.2、实验内容4
二、需求分析5
2.1、计算机的重要性5
2.2、8279芯片5
三、设计方案5
3.1、课程设计步骤与方法5
3.2、课程设计说明书与图纸6
3.3、设计程序9
四、测试分析16
五、总结16
六、参考文献16
课程设计报告正文内容
一、设计任务说明
1.1、实验目的
1.掌握8279键盘显示电路的基本功能及编程方法
2.掌握一般键盘盒显示电路的工作原理
3.进一步掌握定时器的使用和中断处理程序的编程方法
1.2、实验内容
利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码显示电路,设计一个秒表,由8253中断定时,小键盘控制秒表的启停及初始值的预置。
秒表的显示格式**.**.** 由左到右分别为分、秒、百分秒
要求具体如下:
1. C键:
清楚,显示00.00.00
2. G键:
启动,秒表计时
3. D键:
停止,秒表停止计时
4. P键:
设置分、秒、百分秒值。
输入时依次为分、秒、百分秒,同时应有判断输入错误的能力,若输入有错,则显示:
E - - - - -,此时敲P键可重新输入预置值。
5. E键:
程序退出,返回DOS
二、需求分析
2.1、计算机的重要性
计算机是当代众多新兴技术中发展最快、应用最广的一项技术,也是渗透力最强,对社会发展影响最为深远的高新技术。
今天它已经逐渐深入到社会的每一个细胞,改变着人们的生产方式,社会活动方式甚至家庭生活方式。
计算机发展如此迅速,影响如此深远。
有其深刻的社会背景。
2.2、8279芯片
8279是一种通用的可编程的键盘/显示器接口器件,可对64个开关组成的键盘矩阵进行自动扫描,接收键盘上的输入信息,并在有键输入时向单片机请求中断,还能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。
利用8279对键盘/显示器的自动扫描,可以减轻CPU负担,具有显示稳定、程序简单、不会出现误动作等特点。
是一种应用非常广泛的芯片,学习8279芯片的简单应用时十分有必要的。
三、设计方案
3.1、课程设计步骤与方法
1、本设计是做在一块扩展电路板上,用一根20芯扁平电缆与实验台上扩展插头J7相连。
2、编程1:
使得在小键盘上每按一个健,6位数码管上显示出相应字符,它们的对应关系如下:
小键盘显示小键盘显示
0—0C—C
1—1D—d
2—2E—E
3—3F—F
4—4G—q
5—5M—
6—6P—p
7—7W—
8—8X—
9—9Y—
A—
R—返回
B—b
3、编程2:
中断编程
利用实验台上提供的定时器8253和扩展板上提供的8279以及键盘和数码显示电路,
设计一个电子钟。
由8253中断定时,小键盘控制电子钟的启停及初始值的预置。
电子钟显示格式如下:
XX.XX.XX.由左向右分别为时、分、秒
要求具有如下功能:
①、C键:
清除,显示全零。
②、G键:
启动,电子钟计时。
③、D键:
停止,电子钟停止计时。
④、P键:
设置时、分、秒值。
输入时依次为时、分、秒,同时应有判断输入错误的
能力,若输入有错,则显示:
E-----。
此时敲P键可重新输入预置值。
⑤、E键:
程序退出。
3.2、课程设计说明书与图纸
(一)设计说明
1.本设计编程1接线方法:
用一根20芯扁平电缆将实验扩展板与实验台上扩展插头J7相连。
2.本设计编程2接线方法:
(1)用一根20芯扁平电缆将实验扩展板与实验台上扩展插头J7相连。
(2)实验台上8253CLK0接1MHZ,GATE0和GATE1接+5V,OUT0接CLK1,OUT1接IRQ,CS接280H~287H。
(二)设计电路如下图所示:
(三)参考流程图如下所示:
键盘显示子程序流程图:
KEY2
3.3、设计程序(部分代码)
源程序:
ASSUME CS:
CODE,DS:
DATA,SS:
STACK
START:
CLI
MOV AX,DATA
MOV DS,AX
MOV BUF,0
MOV SIGH,01
MOV SEC1,0
MOV MIN1,0
MOV MIN2,0
MOV HOUR1,0
MOV HOUR2,0
MOV ERR1,0
MOV DX,TIMEC ;8253初始化
MOV AL,36H
OUT DX,AL
MOV DX,TIME0
MOV AX,100
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,TIMEC
MOV AL,74H
OUT DX,AL
MOV AX,10
MOV DX,TIME1 ;定时器每0.1S中断1次
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES
MOV AH,09
INT 21H
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET INT_PROC
MOV AX,250FH
INT 21H ;置IRQT中断向量
MOV DX,INTA01
IN AL,DX
AND AL,7FH
OUT DX,AL
MOV DX,PORT1
MOV AL,0D3H
OUT DX,AL ;8279清零
MOV AL,2AH
OUT DX,AL ;置8279时钟命令
MOV AL,40H
OUT DX,AL ;读FIFO RAM命令
MOV AL,00H
OUT DX,AL ;置键盘显示模式
MOV AL,80H
OUT DX,AL ;写RAM命令
STI
KEY1:
CALL KET2 ;调键盘显示子程序
CMP HOUR2,0AH
JZ NEXT2
NEXT1:
CMP AL,0CH ;是否“C”命令
JNZ LP0
NEXT2:
MOV SIGH,00H
MOV HOUR2,00H
MOV HOUR1,00H
MOV MIN2,00H
MOV MIN1,00H
MOV SEC2,00H
MOV SEC1,00H
LP0:
CMP AL,0EH ;是否“E”命令
JNZ LP1
MOV SIGH,00H
CLI
MOV DX,INTA01
IN AL,DX
OR AL,80H
OUT DX,AL
STI
MOV AX,4C00H ;是“E”命令返回DOS
INT 21H
LP1:
CMP AL,10H ;是否“G”命令
JNZ LP2
MOV SIGH,01H
JMP KEY1
LP2:
CMP AL,0DH ;是否“D”命令
JNZ SETI
MOV SIGH,00H
KEY3:
JMP KEY1
SETI:
CMP AL,12H ;是否“P”命令
JNZ KET1
MOV SIGH,00H ;“00”为预置时标志
MOV HMS,00H
CALL HIGH0
CMP ERR1,01H
JZ KEY3
CALL LOW0
CMP ERR1,01H
JZ KEY3
MOV HMS,11H ;“11”为预置分标志
CALL HIGH0
CMP ERR1,01H
JZ KEY3
MOV HMS,22H ;“22”为预置秒标志
CALL HIGH0
CMP ERR1,01H
JZ KEY3
CALL LOW0
JMP KEY1
MAIN ENDP
INT_PROC:
STI
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUAH DS
CMP SIGH,00 ;是否允许记数
JZ ENDT1
INC BUF ;记数单元加1
CMP BUF,10
JL ENDT
MOV BUF,0
INC SEC1
CMP SEC1,10
JL ENDT
MOV SEC1,0
INC SEC2
CMP SEC2,6
JL ENDT
MOV SEC2,0
INC MIN1
CMP MIN1,10
JL ENDT
MOV MIN1,0
INC MIN2
CMP MIN2,6
JL ENDT
MOV MIN2,0
INC HOUR1
CMP HPUR2,2
JL HH
CMP HOUR1,4
JL ENDT
MOV HOUR1,0
MOV HOUR2,0
ENDT1:
JMP ENDT
HH:
CMP HOUR1,10
JL ENDT
MOV HOUR1,0
INC HOUR2
ENDT:
MOV DX,INTA00
MOV AL,20H
OUT DX,AL
POP DS
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
IRET
KEY2 PROC NEAR
MOV DX,PORT1
MOV AL,0D1H
OUT DX,AL ;清显示
WAEP:
CALL DISP ;调显示子程序
MOV DX,PORT1
IN AL,DX
AND AL,07H
JZ WAEP
KETN:
MOV DX,PORT0 ;读状态
IN AL,DX
MOV BL,AL
AND AL,07H
AND BL,38H
MOV CL,03
SHR BL,CL
CMP BL,00H ;是否第一行键
JNZ LINE1
ADD AL,08H
JMP QUIT1
LINE1:
CMP BL,01H
JNZ LINE2 ;是否第二行键
JMP QUIT1
LINE2:
ADD AL,10H
QUIT1:
RET
KEY2 ENDP
DISP PROC NEAR
PUSH CX
MOV AX,DATA
MOV DS,AX
MOV DX,PORT1
MOV AL,90H
OUT DX,AL
MOV SI,OFFSET SEC1
MOV CX,0006
MOV BX,OFFSET LED
DISP1:
CLD
LODSB
XLAT
MOV DX,PORT0
OUT DX,AL
LOOP DISP1
POP CX
RET
DISP ENDP
ERR PROC NEAR
MOV HOUR2,0AH
MOV HOUR1,0BH
MOV MIN2,0BH ;显示“E----”
MOV MIN1,0BH
MOV SEC2,0BH
MOV SEC1,0BH
MOV ERR1,01H ;出错标志
RET
ERR ENDP
HIGH0 PROC NEAR
CALL KEY2
MOV ERR1,00
CMP HMS,00H ;HMS是预置时、分、秒标志
JNZ MIN0
CMP AL,02H ;00预置时
JG ERROR ;11预置分
MOV HOUR2,AL ;22预置秒
JMP HOUT1
MIN0:
CMP HMS,11H
JNZ SEC0
CMP AL,05H
JG ERROR
MOV MIN2,AL
JMP HOUT1
SEC0:
CMP AL,05H
JG ERROR
MOV SEC2,AL
HOUT1:
RET
ERROR:
CALL ERR
RET
HIGH0 ENDP
LOW0 PROC NEAR
CALL KEY2 ;预置时、分、秒低位
MOV ERR1,00
CMP HMS,00H
JNZ MIN3
MOV DL,HOUR2
CMP DL,01
JG HOUR3
CMP AL,09H
JG ERROR
MOV HOUR1,AL
JMP LQUT1
HOUR3:
CMP AL,03H
JG ERROR
MOV HOUR1,AL
JMP LQUT1
MIN3:
CMP HMS,11H
JNZ SEC3
CMP AL,09H
JG ERROR
MOV MIN1,AL
JMP LQUT1
SEC3:
CMP AL,09H
JG ERROR
MOV SEC1,AL
LQUT1:
RET
LOW0 ENDP
CODE ENDS
END START
四、测试分析
按要求在实验台上连好线,打开电源,然后在PC机上编译、连接、运行程序,再测试功能:
按P键设置时分秒
按C清零
按G启动计时
按D停止计时
按E返回DOS
输入有错显示E-----,此时按P可重新输入。
五、总结
本次设计是两人一组,实验设计中,能够感受到若是光靠自己的能力,是不能够完成这次设计的。
自己分析原因:
其一,没有对单片机了解不够详细,知识面欠缺。
其二,自己做的许多过程有差误,不说自己到头来能否发现,即使发现,时间耽误太多了,自己过于粗心马虎。
正是因为我们是团体合作,有异议提出来,将错误及时解决,避免了很多设计的复杂性。
当然,这次设计,其他的同学也提供了不少援助,当然,老师为我们课程设计的成功提供了很重要的帮助。
再次感谢我的老师,感谢我的合作伙伴,当然,这次的实验设计也看到自己的不足,以后自己会更加努力的学习,相信自己以后会越来越棒。
六、参考文献
《微型计算机原理与接口技术》主编:
吴秀清中国科技大学出版社
微机原理与接口技术 主编:
梁建武 中国水利水电出版社
IBM-PC汇编语言程序设计 清华大学出版社