接口技术课程设计报告.docx
《接口技术课程设计报告.docx》由会员分享,可在线阅读,更多相关《接口技术课程设计报告.docx(13页珍藏版)》请在冰点文库上搜索。
![接口技术课程设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-6/6/7fc1417b-3849-438b-ae93-4907fc6d047e/7fc1417b-3849-438b-ae93-4907fc6d047e1.gif)
接口技术课程设计报告
目录
一、实验目的……………………………………-2-
二、实验内容……………………………………-2-
三、总体设计……………………………………-2-
四、实验电路……………………………………-2-
五、实验框图……………………………………-4-
六、实验程序……………………………………-5-
七、实验心得……………………………………-10-
实现特定功能的键盘及LED显示
一、实验目的
1、掌握键盘和显示器的接口方法和编程方法。
2、掌握键盘扫描和LED八段码显示器的工作原理。
二、实验内容
1、了解键盘及LED显示接口设计,绘制出原理图。
2、根据实验箱上提供的硬件资源完成:
a、按1键显示年
b、按2键显示月日
c、按3键显示GOOD
d、按4键数码管由左到右8字循环显示。
3、设计电路并在实验台上连接线路。
三、总体设计
1、选通键盘以及LED数字显示控制区
2、主要利用软件编程,实现实验要求中的各项
四、实验电路
使用PC机与伟福lab8000实验箱连接起来,安装好相应驱动,做好接线分析,由于lab8000实验箱已经将部分电路接线内置,所以接线仅需要将KEY/LED_CS选通端口与CS0相连即可,但作为学习过程,应更加详细的将实现电路了解,现已将实验箱所用实验器件的内部电路给出,详细电路见下页图1
五、实验框图
显示程序框图
六、实验程序
OUTBITequ08002h;位控制口
OUTSEGequ08004h;段控制口
IN_KEYequ08001h;键盘读入口
datasegment
LEDBufdb6dup(?
);显示缓冲
Numdb1dup(?
);显示的数据
DelayTdb1dup(?
)
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
KeyTable:
;键码定义
db16h,15h,14h,0ffh
db13h,12h,11h,10h
db0dh,0ch,0bh,0ah
db0eh,03h,06h,09h
db0fh,02h,05h,08h
db00h,01h,04h,07h
dataends
codesegment
assumecs:
code,ds:
data
Delayprocnear
pushax;延时子程序
pushcx
moval,0
movcx,ax
loop$
popcx
popax
ret
Delayendp
Delay1procnear
pushax;延时子程序
pushcx
moval,0
movcx,38000
loop$
popcx
popax
ret
Delay1endp
DisplayLEDprocnear
movbx,offsetLEDBuf
movcl,6;共6个八段管
movah,00100000b;从左边开始显示
DLoop:
movdx,OUTBIT
moval,0
outdx,al;关所有八段管
moval,[bx]
movdx,OUTSEG
outdx,al
movdx,OUTBIT
moval,ah
outdx,al;显示一位八段管
pushax
movah,1
callDelay
popax
shrah,1
incbx
deccl
jnzDLoop
movdx,OUTBIT
moval,0
outdx,al;关所有八段管
ret
DisplayLEDendp
TestKeyprocnear
movdx,OUTBIT
moval,0
outdx,al;输出线置为0
movdx,IN_KEY
inal,dx;读入键状态
notal
andal,0fh;高四位不用
ret
TestKeyendp
GetKeyprocnear
movch,00100000b
movcl,6
KLoop:
movdx,OUTBIT
moval,ch;找出键所在列
notal
outdx,al
shrch,1
movdx,IN_KEY
inal,dx
notal
andal,0fh
jneGoon_;该列有键入
deccl
jnzKLoop
movcl,0ffh;没有键按下,返回0ffh
jmpExit1
Goon_:
deccl
shlcl,2;键值=列X4+行
movch,4
LoopC:
testal,1
jnzExit1
shral,1
inccl
decch
jnzLoopC
Exit1:
movdx,OUTBIT
moval,0
outdx,al
movch,0
movbx,offsetKeyTable
addbx,cx
moval,[bx];取出键码
movbl,al
WaitRelease:
movdx,OUTBIT
moval,0
outdx,al;等键释放
movah,10
callDelay
callTestKey
jneWaitRelease
moval,bl
ret
GetKeyendp
Startprocnear
movax,data
movds,ax
movdi,offsetLEDBuf
p1:
movdi,offsetLEDBuf
mov[di],05bh;显示2008.
mov[di+1],03fh
mov[di+2],03fh
mov[di+3],0ffh
mov[di+4],0
mov[di+5],06h
jmpMLoop
p2:
movdi,offsetLEDBuf
mov[di],03fh;显示08.08.
mov[di+1],0ffh
mov[di+2],03fh
mov[di+3],0ffh
mov[di+4],0
mov[di+5],5bh
jmpMLoop
p3:
movdi,offsetLEDBuf
mov[di],6fh;显示good
mov[di+1],5ch
mov[di+2],5ch
mov[di+3],0deh
mov[di+4],0
mov[di+5],4fh
jmpMLoop
p4:
pushcx
movcx,08h
movbx,offsetLEDBuf
p4l:
mov[bx],00
incbx
loopp4l
popcx
mov[di],7fh;显示8
incdi
cmpdi,offsetLEDBuf+06h
jnznext
movdi,offsetLEDBuf
next:
calldelay1
callDisplayLED;显示
callTestKey
jneMLoop
jmpp4
MLoop:
callDisplayLED;显示
callTestKey;有键入?
jeMLoop;无键入,继续显示
callGetKey;读入键码
andal,0fh;显示键码
cmpal,01h
jzmmpp1
cmpal,02h
jzmmpp2
cmpal,03h
jzp3
cmpal,04h
jzp4
movah,0
movbx,offsetLEDMAP
addbx,ax
moval,[bx]
movLEDBuf+5,al
jmpMLoop
mmpp1:
jmpp1
mmpp2:
jmpp2
Startendp
codeends
endstart
七、实验心得
通过此次课程设计让我学会了更多的知识,以及懂得了团队合作的重要性,通过编写相关的程序以及对LAB8000实验箱的使用我们的动手能力得到了很大的提高,并且很感谢老师的细心指导,对我们的帮助很大,以及感谢本小组的其他成员,大家的共同努力使我们完成了此次课程设计。