实验五 键盘、数码管显示综合实验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