硬件实验三按键与显示实验.docx
- 文档编号:16552462
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:22
- 大小:138.71KB
硬件实验三按键与显示实验.docx
《硬件实验三按键与显示实验.docx》由会员分享,可在线阅读,更多相关《硬件实验三按键与显示实验.docx(22页珍藏版)》请在冰点文库上搜索。
硬件实验三按键与显示实验
\
本科实验报告
课程名称:
微机原理与接口技术
姓名:
张开桓
学院:
信息学院
系:
控制系
专业:
自动化
学号:
3080104703
指导教师:
齐杭丽
2010年12月15日
专业:
自动化(控制系)
姓名:
张开桓
学号:
3080104703
日期:
2010/12/15
地点:
东4-606
实验报告
课程名称:
微机原理与接口技术指导老师:
齐杭丽成绩:
_______
实验名称:
按键与显示实验实验类型:
设计型同组学生姓名:
__________
一、实验目的和要求(必填)二、实验内容和原理(必填)
三、主要仪器设备(必填)四、操作方法和实验步骤
五、实验数据记录和处理六、实验结果与分析(必填)
七、讨论、心得
硬件实验三按键与显示实验
1.实验目的
1熟练运用keil环境对硬件接口进行调试。
2掌握IO扩展键盘的软硬件设计方法;
3掌握数字转换成显示段码的软件译码方法;
4掌握静态显示的原理和相关程序的编写。
5掌握动态显示的原理和相关程序的编写;
2.预习要求
1理解51单片机IO实现独立式键盘扩展的工作原理。
2理解8段数码管静态显示的电路工作原理,采用静态显示有何优缺点;
3理解8段数码管动态显示的电路工作原理,采用动态显示有何优缺点;
4理解8段数码管静态显示的IO控制方式及同步串行口控制方式如何实现软件设计;
3.实验设备
计算机1台;
ZDGDTH-1型80C51实验开发系统1套;
2号导线、8P数据线若干条。
4.基础型实验内容
1查询式键盘和静态显示实验
8个独立式键盘的电路如图2-1所示,串口扩展的6个静态数码管电路如图2-2所示。
设将P0口连接到键盘接口,则如果有键按下,相应的口线输出为低,否则输出为高。
单片机通过读取接口的状态,判断按下什么键。
有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。
8个按键的键值从右至左分别为0~7。
实验例程是查询按键操作,并将按下的键值在6个静态数码管上显示出来。
6个静态数码管与6片74LS164(串转并移位寄存器)连接,通过IO口与单片机连接,实现串行静态显示的控制。
用8P数据线将80C51/C8051F020MCU模块的JD1(P1口)与查询式键盘模块JD1C7相连。
在实验箱右上角的扩展区中插入静态串行显示模块,用二号导线将80C51/C8051F020MCU模块的P3.0(RXD)、P3.1(TXD)分别与静态数码显示模块的DIN、CLK相连;将A7区的电源短路帽JD5A7打到右端。
在Keil环境连续运行该程序,观察实验结果。
电路图:
图2-18个独立式按键电路
图2-26位静态数码管显示接口电路
源程序:
DBUFEQU30H
DATEQUP3.0
CLKEQUP3.1
ORG0000H
L0:
MOVP1,#0FFH
L1:
MOVA,P1
CJNEA,#0FFH,KEYPUT
SJMPL1
KEYPUT:
CJNEA,#0FEH,NEXT1
SJMPK0
NEXT1:
CJNEA,#0FDH,NEXT2
SJMPK1
NEXT2:
CJNEA,#0FBH,NEXT3
SJMPK2
NEXT3:
CJNEA,#0F7H,NEXT4
SJMPK3
NEXT4:
CJNEA,#0EFH,NEXT5
SJMPK4
NEXT5:
CJNEA,#0DFH,NEXT6
SJMPK5
NEXT6:
CJNEA,#0BFH,NEXT7
SJMPK6
NEXT7:
SJMPK7
K0:
MOVB,#00H
LCALLDISP
LJMPL0
K1:
MOVB,#01H
LCALLDISP
LJMPL0
K2:
MOVB,#02H
LCALLDISP
LJMPL0
K3:
MOVB,#03H
LCALLDISP
LJMPL0
K4:
MOVB,#04H
LCALLDISP
LJMPL0
K5:
MOVB,#05H
LCALLDISP
LJMPL0
K6:
MOVB,#06H
LCALLDISP
LJMPL0
K7:
MOVB,#07H
LCALLDISP
LJMPL0
DISP:
MOVDBUF,B
MOVDBUF+1,B
MOVDBUF+2,B
MOVDBUF+3,B
MOVDBUF+4,B
MOVDBUF+5,B
MOVR0,#DBUF
MOVDPTR,#TAB
MOVR2,#06H
DP0:
MOVA,@R0
MOVCA,@A+DPTR
MOVR3,#08H
DP1:
RLCA
MOVDAT,C
CLRCLK
SETBCLK
DJNZR3,DP1
INCR0
DJNZR2,DP0
RET
TAB:
DB3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5
DB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B
DB58H,5EH,79H,71H,00H,40H;C,D,E,F,,-
END
结果:
按前述要求连接硬件电路,并在Keil上并运行该程序。
然后,按动独立键盘上的按键,按下KEY0-KEY7中的每个键时,即在六位静态数码管上显示该键键值,直到按下下一个键。
2动态显示实验
6位动态数码管显示的接口电路设计如图2-3所示,假设P0口输出显示的段码,P2口输出位码,用8P数据线将80C51/C8051F020MCU模块的JD0(P0口)、JD2(P2口)分别与A7区的JD1A7、JD2A7相连;A7区的电源短路帽JD5A7打到右端。
在Keil环境连续运行该程序,观察实验结果。
图2-36位动态数码管显示接口电路
流程图如下:
源程序:
DBUFEQU30H
TEMPEQU40H
ORG0000H
LJMPDISP
ORG0100H
DISP:
MOV30H,#8
MOV31H,#6
MOV32H,#1
MOV33H,#8
MOV34H,#6
MOV35H,#1
MOVR0,#DBUF
MOVR1,#TEMP
MOVR2,#6
MOVDPTR,#SEGTAB
DP00:
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR1
INCR0
DJNZR2,DP00
DISP0:
MOVR0,#TEMP
MOVR1,#6
MOVR2,#1
DP01:
MOVA,@R0
MOVP0,A
MOVA,R2
MOVP2,A
ACALLDELAY
MOVA,R2
RLA
MOVR2,A
INCR0
DJNZR1,DP01
SJMPDISP0
SEGTAB:
DB3FH,06H,5BH;0,1,2
DB4FH,66H,6DH;3,4,5
DB7DH,07H,7FH;6,7,8,
DB6FH,77H,7CH;9,A,B
DB58H,5EH,7BH;C,D,E
DB71H,00H,40H;F,,-
DELAY:
MOVR4,#03H
AA1:
MOVR5,#0FFH
AA:
NOP
NOP
DJNZR5,AA
DJNZR4,AA1
RET
END
结果:
按要求连接硬件电路并在Keil上运行上述源程序,此时,动态数码管上显示数字“168168”。
5.设计型实验内容
1在最后一个数码管上依次显示a、b、….f各段,每段显示时间为100ms,用T0定时器实现;
源程序:
DBUFEQU30H
ORG0000H
LJMPDISP
ORG0100H
DISP:
MOVDBUF,#01H
MOVR1,#01H
MOVR2,#6
DP:
MOVA,DBUF
MOVP0,A
MOVA,R1
MOVP2,A
ACALLDELAY
MOVA,DBUF
RLA
MOVDBUF,A
DJNZR2,DP
SJMPDISP
DELAY:
MOVTMOD,#01H
MOVR3,#2
LOOP:
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0
JNBTF0,$
CLRTF0
DJNZR3,LOOP
RET
END硬件电路连接:
用8P数据线将80C51/C8051F020MCU模块的JD0(P0口)、JD2(P2口)分别与A7区的JD1A7、JD2A7相连;A7区的电源短路帽JD5A7打到右端。
结果:
连接好电路并在Keil上运行程序,则最后一个动态数码管的边缘各段(即对应a、b、c、d、e、f各段)依顺时针方向依次点亮,在该数码管上形成了一个运动着的小边框。
与预期通过动态数码管显示所要实现的功能相符,实验成功。
2分别指定IO控制动态扫描显示模块或静态显示模块电路,画出流程并设计程序实现数码管显示自己的学号后六位号码;
动态显示学号流程图:
YN
动态数码管显示学号后六位流程图
源程序:
DBUFEQU30H
TEMPEQU40H
ORG0000H
LJMPDISP
ORG0100H
DISP:
MOV30H,#3
MOV31H,#0
MOV32H,#7
MOV33H,#4
MOV34H,#0
MOV35H,#1
MOVR0,#DBUF
MOVR1,#TEMP
MOVR2,#6
MOVDPTR,#SEGTAB
DP00:
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR1
INCR0
DJNZR2,DP00
DISP0:
MOVR0,#TEMP
MOVR1,#6
MOVR2,#1
DP01:
MOVA,@R0
MOVP0,A
MOVA,R2
MOVP2,A
ACALLDELAY
MOVA,R2
RLA
MOVR2,A
INCR0
DJNZR1,DP01
SJMPDISP0
SEGTAB:
DB3FH,06H,5BH;0,1,2
DB4FH,66H,6DH;3,4,5
DB7DH,07H,7FH;6,7,8,
DB6FH,77H,7CH;9,A,B
DB58H,5EH,7BH;C,D,E
DB71H,00H,40H;F,,-
DELAY:
MOVR4,#03H
AA1:
MOVR5,#0FFH
AA:
NOP
NOP
DJNZR5,AA
DJNZR4,AA1
RET
END
硬件电路连接:
用8P数据线将80C51/C8051F020MCU模块的JD0(P0口)、JD2(P2口)分别与A7区的JD1A7、JD2A7相连;A7区的电源短路帽JD5A7打到右端。
其中P0口输出段码,P2口输出位码。
结果:
按要求连接硬件电路并在Keil上运行上述源程序,此时,动态数码管上显示自己学号的后六位,即104703。
3用按键输入自己的学号,并在静态或动态数码管上显示出来。
源程序:
DBUFEQU30H
DATEQUP3.0
CLKEQUP3.1
ORG0000H
L0:
MOVP1,#0FFH
L1:
MOVA,P1
CJNEA,#0FFH,KEYPUT
SJMPL1
KEYPUT:
CJNEA,#0FEH,NEXT1
SJMPK0
NEXT1:
CJNEA,#0FDH,NEXT2
SJMPK1
NEXT2:
CJNEA,#0FBH,NEXT3
SJMPK2
NEXT3:
CJNEA,#0F7H,NEXT4
SJMPK3
NEXT4:
CJNEA,#0EFH,NEXT5
SJMPK4
NEXT5:
CJNEA,#0DFH,NEXT6
SJMPK5
NEXT6:
CJNEA,#0BFH,NEXT7
SJMPK6
NEXT7:
SJMPK7
K0:
MOVDBUF,#00H
LCALLDISP
LJMPL0
K1:
MOVDBUF,#01H
LCALLDISP
LJMPL0
K2:
MOVDBUF,#02H
LCALLDISP
LJMPL0
K3:
MOVDBUF,#03H
LCALLDISP
LJMPL0
K4:
MOVDBUF,#04H
LCALLDISP
LJMPL0
K5:
MOVDBUF,#05H
LCALLDISP
LJMPL0
K6:
MOVDBUF,#06H
LCALLDISP
LJMPL0
K7:
MOVDBUF,#07H
LCALLDISP
LJMPL0
DISP:
MOVDPTR,#TAB
DP0:
MOVA,DBUF
MOVCA,@A+DPTR
MOVR3,#08H
DP1:
RLCA
MOVDAT,C
CLRCLK
SETBCLK
DJNZR3,DP1
CALLDELAY
RET
DELAY:
MOVR5,#5
D1:
MOVR6,#200
D2:
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
TAB:
DB3FH,06H,5BH;0,1,2
DB4FH,66H,6DH;3,4,5
DB7DH,07H,7FH;6,7,8,
DB6FH,77H,7CH;9,A,B
DB58H,5EH,7BH;C,D,E
DB71H,00H,40H;F,,-
END
硬件电路连接:
用8P数据线将80C51/C8051F020MCU模块的JD1(P1口)与查询式键盘模块JD1C7相连。
在实验箱右上角的扩展区中插入静态串行显示模块,用二号导线将80C51/C8051F020MCU模块的P3.0(RXD)、P3.1(TXD)分别与静态数码显示模块的DIN、CLK相连;将A7区的电源短路帽JD5A7打到右端。
结果:
连接好电路并在Keil上运行以上程序,则每按一次键,先在静态数码管的最后一位显示该键键值,而后每按一次键,对应的新的键值就显示在静态数码管最后一位,原来显示的键值则平行左移。
最终,当按下的键依次为104703时,数码管上即显示104703,学号的后六位。
若学号中含大于7的数字,则可以之代替不需要的数字,从而保证学号中的尽可能多的数字都被能显示出来。
6.综合型实验
1循环显示6个数码管的边缘各段,形成一个运动着的大边框。
源程序:
DBUFEQU30H
ORG0000H
LJMPDISP
ORG0100H
DISP:
CALLDISP0
CALLDISP1
CALLDISP2
CALLDISP3
SJMPDISP
DISP0:
MOVDBUF,#01H
MOVR1,#01H
MOVR2,#6
DP0:
MOVA,DBUF
MOVP0,A
MOVA,R1
MOVP2,A
ACALLDELAY
MOVA,R1
RLA
MOVR1,A
DJNZR2,DP0
RET
DISP1:
MOVDBUF,#20H
MOVR1,#20H
MOVR2,#2
DP1:
MOVA,DBUF
MOVP0,A
MOVA,R1
MOVP2,A
ACALLDELAY
MOVA,DBUF
RRA
MOVDBUF,A
DJNZR2,DP1
RET
DISP2:
MOVDBUF,#08H
MOVR1,#20H
MOVR2,#6
DP2:
MOVA,DBUF
MOVP0,A
MOVA,R1
MOVP2,A
ACALLDELAY
MOVA,R1
RRA
MOVR1,A
DJNZR2,DP2
RET
DISP3:
MOVDBUF,#04H
MOVR1,#01H
MOVR2,#2
DP3:
MOVA,DBUF
MOVP0,A
MOVA,R1
MOVP2,A
ACALLDELAY
MOVA,DBUF
RRA
MOVDBUF,A
DJNZR2,DP3
RET
DELAY:
MOVTMOD,#01H
MOVR3,#2
LOOP:
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0
JNBTF0,$
CLRTF0
DJNZR3,LOOP
RET
END
硬件电路连接:
用8P数据线将80C51/C8051F020MCU模块的JD0(P0口)、JD2(P2口)分别与A7区的JD1A7、JD2A7相连;A7区的电源短路帽JD5A7打到右端。
其中P0口输出段码,P2口输出位码。
结果:
按要求连接硬件电路并在Keil环境下运行以上程序,则可在六位动态数码管上各管的边缘各段依次点亮,形成了一个运动着的大边框。
程序通过动态数码管显示的原理,使其段码与位码相互配合输出,从而实现了题述要求,结果与预期相符,程序设计成功。
7.讨论、心得
首先,通过本次实验,进一步理解了理论课上所学的51单片机IO实现独立式键
盘扩展的工作原理,并且掌握了其相关的软硬件设计方法;
通过实际的设计应用,加深了对八段数码管静态和动态显示电路的工作原理及其
各自的优缺点、控制方式和软件设计方法的理解,并通过亲自设计编写程序更近一步掌握了显示这一块的内容;
在实验过程中需注意结合实际的硬件电路调整自己程序中的显示顺序、控制方式
以及延时子程序的调用等。
比如,实验箱中的数码管都是从右往左排的,所以输入显示值时应当先输前面的,而不需做调整,否则画蛇添足、适得其反;再如,在用按键输入学号时,应在每次显示后加0.5s左右的延时子程序,若不加,则按键输入后六个数码管只能显示同一个数字,若延时过长则会在按键较快时反应不过来导致某些按键动作被忽略,输入出现错误;
由于前面两次实验对运用Keil环境进行硬件接口调试方法及使用的不熟悉,致使
两次实验都有内容未调试完。
这一次取鉴前车,在实验前作了更为充分的准备与学习,所以在很短的时间内即完成了要求实验内容,也肃清了前面遗留的问题。
并在多余时间里现场成功设计、编写并完成了另外的综合实验内容,不可不谓收获颇丰,想是瑞雪兆丰之故吧!
阅1.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 实验 按键 显示
![提示](https://static.bingdoc.com/images/bang_tan.gif)