实验五 键盘、数码管显示综合实验1
- 格式:doc
- 大小:4.25 MB
- 文档页数:6
重庆交通大学
学生实验报告
实验课程名称 单片机原理与应用
实 验 名 称 键盘、数码显示管综合实验
实 验 类 型 设计性实验
开课实验室 单片机原理实验室
学 院 信息科学与工程学院
学 生 姓 名
学号
开 课 时 间 2012至 2013学年第 2 学期
实验评佑等级 很好 好 一般 差
实验操作能力
实验结果
实验分析
实验思考总结
实验成绩
教师签名
一、 实验目的:
1.掌握单片机在输入输出口线不够用时,如何扩展接口的方法来支持8位LED显示和16键盘集成实现
2.熟悉8155、8279等芯片性能
3.掌握键盘子程序调试方法
4.掌握按一个键并将键值显示出来的编程方法。这是诊断硬件、测试硬件、产品开发、软件编程必须掌握的方法。
二、 实验内容:
1.编写并调试出一个键盘实验子程序
2.用子程序调用方法,分别调用键盘子程序和显示子程序,将按一个键的键值(0—F),在数码管上显示出来;
3.用C51重新编写程序实现上述要求的C程序。
4.用Proteus仿真软件运行硬件电路仿真设计。
三、 实验步骤:
1.根据参考实验指导书中所列数码显示管、芯片等元器件,利用Proteus
仿真软件,画出其电路图。
2.利用KeilC仿真软件编写程序,将编写好的C程序进行调试,观察实验
结果,具体如下:
(1)用Protuse按单片机最小系统设计流水灯程序电路图;
(2)打开Keil程序,执行菜单命令“Project –“New Project”创建“键盘、数码管显示综合实验”项目,并选择单片机型号为AT89C51;
(3)执行菜单命令“New”创建文件,输入源程序,保存为键盘、数码管显示综合实验.A51”。在Project”栏的File项目管理窗口中右击文件组,选择“Add
File to Group‘Source Grop1’”将源程序“键盘、数码管显示综合实验.A51”添加到项目中。 (4)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹出的对话框中选择“Output”选项卡,选中“Greate HEX File”。
(5)执行菜单命令“Project”->“Build Target”,编译源程序。如果编译成功,则在“Output Window”窗口中显示没有错误,并创建了“键盘、数码管显示综合实验.HEX”文件。
(6)将“键盘、数码管显示综合实验.HEX”文件下载到Protues软件平台中的虚拟芯片上运行。
四、 实验调试及结果:
实验调试方法:
打开Keil程序,执行菜单命令“ Project”—>“New Project”创建“键盘、数码管显示综合实验”项目,并选择单片机型号为AT89C51。
执行菜单命令“file”—>“New”创建文件,输入源程序,保存为“键盘、数码管显示综合实验.c”。在“Project”栏的File项目管理窗口中右击文件组,选择“Add Files to Group Source Group1”,将源程序“双单片机串口通信.c”添加到项目中。
执行菜单命令“Project”—>“Options for Target ‘Target1’”,在弹出的对话框中选择“Output”选项卡,选中“Generate HEX File”。
执行菜单命令“Project”—>“Build Target”,编译源程序。如果编译
成功,则在“Output Window”窗口中显示没有错误,并创建了“双单片机串口通信.HEX”.
实验程序:
ORG 0000H
START: LJMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
MOV 7AH,#00
MOV 7BH,#01
MOV 7CH,#02
MOV 7DH,#03
MOV 7EH,#04
MOV 7FH,#05
MOV DPTR,#7F00H
MOV A,#03H
MOVX @DPTR,A
LOOP: LCALL DISP
LCALL KEY
MOV A,R4
CJNE A,#88H,DSP
SJMP LOOP
DSP: MOV 7AH,A
MOV 7BH,#010H
MOV 7CH,#010H MOV 7DH,#010H
MOV 7EH,#010H
MOV 7FH,#010H
SJMP LOOP
;按键子程序
KEY: MOV R4,#00H
MOV R2,#01H
KEY1: MOV DPTR,#7F02H
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
JB ACC.0,KEY2
MOV A,#00H
AJMP KEY5
KEY2: JB ACC.1,KEY3
MOV A,#01H
AJMP KEY5
KEY3: JB ACC.2,KEY4
MOV A,#02H
AJMP KEY5 KEY4: JB ACC.3,NEXT
MOV A,#03H
KEY5: ADD A,R4
MOV R4,A
RET
NEXT: MOV A,R4
ADD A,#04
MOV R4,A
MOV A,R2
JB ACC.3,NEXT1
RL A
MOV R2,A
AJMP KEY1
NEXT1: MOV R4,#88H
RET
;数码管显示程序
DISP: MOV R0,#7AH
MOV R3,#01H
DISPB1: MOV DPTR,#7F02H
MOV A,#0H
MOVX @DPTR,A
MOV DPTR,#7F01H
MOV A,@R0
ADD A,#014H
MOVC A,@A+PC MOVX @DPTR,A
MOV A,R3
MOV DPTR,#7F02H
MOVX @DPTR,A
ACALL DELAY
INC R0
MOV A,R3
JB ACC.6,DISPB2
RL A
MOV R3,A
AJMP DISPB1
DISPB2: MOV R3,#01H
RET
SEGPT2: Db
3FH,06H,5BH,4FH,66H,6DH,7DH,07H
db
7FH,6FH,77H,7CH,39H,5EH,79H,71H
db
00H,02H,08H,00H,59H,0FH,76H
;延时子程序
DELAY: MOV R4,#0FFH
DELAY1: DJNZ R4,DELAY1
RET
END
实验结果:
在Proteus仿真平台建立参考图系统,并将程序上载到虚拟芯片上运行,
运行结果,进行分析
通过仿真调试,完全符合实验要求,具体说明如下图所示:
(1)参照图中,当按键0(即左起第一行第一列)按下时,数码管显示0
(2)参照图中,当按键3(即左起第一行第四列)按下时,数码管显示3
(3)参照图中,当按键C(即左起第四行第一列)按下时,数码管显示C
(4)参照图中,当按键F(即左起第四行第四列)按下时,数码管显示F
五、 实验分析:
由实验结果可知,当按键按下0-9中对应数字的按键时,在8位LED显示管上就会显示出相应的数字。如图示结果第一张图片。当按下A-F字母对应的按键时,8位LED显示管上同样会显示出相应的字母,如图实验结果第二张图片所示。则程序可实现其功能。此次实验得以圆满完成。
实验的流程图具体如下:
六、 实验思考与总结:
通过本次实验,使得我掌握了单片机在输入、输出口线不够用时,如何扩展接口的方法来支持8位LED显示和16键盘集成实现的原理和方法步骤;也让我熟悉和了解了8155、8279等芯片性能,知道了他们的用途和原理,在以后的学习中必然还有我们需要用到的许多地方;同时,也让我掌握了键盘子程序调用和调试的方法,知道了子程序调用的简单易行和便捷;掌握了按一个键并将键值显示出来的编程方法,我知道这是诊断硬件、测试硬件、产品开发、软件编程必须掌握的方法,所以,在学习的过程中,我很认证的观察其中的方法。
其次,本次实验做的是综合性试验,是把前面学过的知识都综合了起来,可以说相对于前几个实验,原理、电路图和编程都比较复杂;在做实验的时候,必然会遇到诸多问题,这是不可避免的,关键还是千万不能灰心丧气。我在连接电路图时用上了总线的连接,这种连接方式感觉应该是要简单一些,而且容易实现;
最后,由于该实验的程序是用汇编语言编写的,其程序代码比较多,结构比较复杂,难度较大。即便如此,虽然遇到的问题比较多,但是在老师和同学的帮助下,最终都得到了顺利地解决;从而,因为难度比较大,所以查询了诸多资料,在这个过程中,让我学习到了许多新的知识,也让我对以前所学过的一些知识有了一定的复习,可以说收益颇丰。
总而言之,这门课程的实验到此基本上可以说是已经结束了,即使以后可能会遇到类似的实验,但是也不可能会有现在这么全面的设备供我们继续。我想说的是:即使实验已经结束,但是我对于单片机的学习一直会继续。同时,也十分感谢老师这个学期的鼓励和教导,没有老师的指导,这些实验对于我来说还是有些难度。实验已经结束,但是阻止不了我前行的脚步!
Y N N 调用子程序有键闭合
判断闭合键键号入闭合键释输入键号送A
返 开 始
有键闭合
调用子程序延时N Y