《单片机技术实验系统说明书.doc》由会员分享,可在线阅读,更多相关《单片机技术实验系统说明书.doc(37页珍藏版)》请在三一办公上搜索。
1、单片机技术实验系统使用说明书职业技术学院 杨金华2009年5月目 录实验一 单片机仿真软件的使用实验二 实验系统的介绍和点亮一只发光二极管实验三 简单流水灯实验实验四 P1口转弯灯实验(查询法)实验五 P3.3输入,P1口输出(中断)实验六 LED显示器的静态显示实验实验七 基于LS164的LED串行显示接口实验八 LED显示器的动态显示实验实验九 扩展存储器6264读写实验实验十 双机串行通信实验十一 可编程并行接口芯片8255A 实验十二 基于扫描法的键盘 LED显示接口 附录1 参考程序附录2 图片实验一:单片机仿真软件的使用一 实验目的 1、掌握Keil软件的使用。 2、掌握Prote
2、us软件的使用。 3、学习汇编程序的编写和Proteus仿真。二 实验内容 1、Keil软件的基本用法。 2、Proteus软件的基本用法。 3、P1口做输出口,编写程序,使P1口点亮一只发光二极管(仿真)。三 实验说明 注意延时子程序的延时计算问题。四实验步骤 1、学习Keil软件的使用。 2、学习Proteus软件的使用。 3、P1口点亮一只发光二极管的仿真。(一):Keil软件的基本用法Keil Vision是Keil公司(ARM子公司)开发的一款用于MCS-51单片机开发的应用十分广泛的编译和调试软件。该软件可以编辑、编译汇编语言、C51语言,连接定位目标文件和库文件,创建HEX文件,
3、调试目标程序等。Keil软件功能强大,包含很多部分,本文我们主要使用Keil Vision来开发C51项目、调试程序并生成HEX文件来用于单片机开发。Keil Vision是一款在Windows下使用的集成开发环境,目前最新版本为V3,本文中我们为了简便选用V2.0。下面我们就来熟悉一下Keil软件。打开软件,我们可以看到其界面,如下图所示:下面我们就来使用Keil软件开发我们的第一个项目。点击“Project”(工程)菜单下面的“New Project”(新建工程),我们来新建一个工程。软件弹出“Create New Project”(创建新工程)窗口。如下图所示:我们为工程输入文件名后,点
4、击“保存”按钮,软件将弹出“Select Device for Target”(选择MCU)窗口,如下图所示。我们只需根据自己工程的需要选择相应的MCU,然后点击“确定”按钮就可以了。在这里我们选择Atmel公司的AT89C51,这种类型的单片机与Intel的8051单片机完全兼容,但是它内含4KB Flash存储器,使用非常方便,而且在我国也较为流行。事实上,目前AT89C51已经被AT89S51所淘汰,因为AT89S51加入了ISP(在线可编程)功能,通过Atmel公司或者自制的下载线就可以对片内Flash进行编程,使用更为方便。然而AT89S51与AT89C51除了ISP以外完全兼容,而
5、且下面我们要说明的Proteus软件目前只能支持AT89C51,所以本文将以AT89C51来代替8051使用,请大家注意。选择好相应的MCU,点击窗口中的“确定”按钮以后,软件会弹出一个窗口询问是否将8051启动代码加入工程(如下图),由于我们不需要这段代码,所以我们点击“否”跳过就可以了。 至此,我们完成了整个工程的初步建立。下面我们需要做的就是创建源文件并将我们的源文件加入工程。首先点击“File”下面的“New”菜单,或者直接点击工具栏中的新建按钮,软件将弹出源文件编辑窗口,我们可以在窗口中编辑源文件。编辑好的源文件如下图所示。接下来的操作有两点需要注意:1、加入AT89C51的头文件(
6、当然,如果你选择了其他的MCU,则加入相应的头文件):在要加入头文件的地方(一般是文件开头),点击右键,选择点击弹出菜单(如下图)中的“Insert #include ”即完成了头文件的添加。我们可以看到源文件中多了一行头文件包含代码“#include ”。2、 保存源文件:注意保存源文件时所书写的源文件扩展名决定了源文件的类型(C51文件或者汇编语言源文件)。这里我们将源文件保存为“main.c”。你可以看出在源文件保存以后,文件中的关键字已经高亮显示,可以帮助我们及时发现错误。源文件编辑好以后,我们就可以将其添加到工程中了。如下图所示,右键点击“Project Workspace”窗口中的
7、“Source Group 1”(如果你不能看到这个项目,你可以点击一下图中“Target 1”前面的“+”号展开文件夹),这时软件将弹出如图所示的菜单。我们选择“Add Files to Group Source Group 1”,软件弹出添加源文件窗口,我们就可以将相应的源文件加入到工程了。下面我们还需要对工程作一些设置,以使其满足我们的要求。右键点击上图中的“Target 1”,软件将弹出工程菜单,如下图所示。我们选择点击“Options for Target Target1” ,软件将弹出工程设置窗口。在工程设置中其他的我们暂时不管,只需将“Output”选项卡下面的“Create H
8、EX File”选中就可以了,如下图所示。这样,当我们调试工程项目时,软件将能够生成HEX文件,用来装入单片机,使之运行我们的指令。设置好以后,我们就可以编译、链接、调试我们的工程项目了。最后让我们来熟悉一下调试工具栏。在这个工具栏中我们只需了解左边的三个按钮。其中,调试工具栏中最左侧的按钮是“Translate current file”按钮,即编译按钮,用来编译当前文件;中间的按钮是“Build target”按钮,即建立工程按钮,用来编译、连接当前的工程,产生相应的工程目标文件,比如HEX文件;最右侧的按钮是“Rebuild all target files”按钮,即全部重建按钮,主要在
9、工程文件有改动时使用,作用是全部重建整个工程,产生相应的目标文件。在整个工程生成HEX文件以后,我们在Keil中的任务就算完成了。当然,你可以在Keil中进行各种调试。事实上,Keil的功能十分强大,它能仿真单片机的各种功能。但是我们在此并不讨论它的这些功能。(二):Proteus软件的基本用法Proteus软件是Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大
10、量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。本文中由于我们主要使用Proteus软件在单片机方面的仿真功能,所以我们重点研究ISIS模块的用法,在下面的内容中,如不特别说明,我们所说的Proteus软件特指其ISIS模块。在进行下面的操作前,我先说明一点:我的Proteus版本是7.1, 6.9以前的版本,可能你发现在鼠标操作上会略有不同。这主要表现在6.9以前的版本鼠标左右键的作用与一般软件刚好相反,而7.0以后已经完全改过。下面我们首先来熟悉一下P
11、roteus的界面。Proteus是一个标准的Windows窗口程序,和大多数程序一样,没有太大区别,其启动界面如下图所示:如图中所示,区域为菜单及工具栏,区域为预览区,区域为元器件浏览区,区域为编辑窗口,区域为对象拾取区,区域为元器件调整工具栏,区域为运行工具条。下面我们就以建立一个和我们在Keil简介中所讲的工程项目相配套的Proteus工程为例来详细讲述Proteus的操作方法以及注意事项。首先点击启动界面区域中的“P”按钮(Pick Devices,拾取元器件)来打开“Pick Devices”(拾取元器件)对话框从元件库中拾取所需的元器件。对话框如下图所示:在对话框中的“Keywor
12、ds”里面输入我们要检索的元器件的关键词,比如我们要选择项目中使用的AT89C51,就可以直接输入。输入以后我们能够在中间的“Results”结果栏里面看到我们搜索的元器件的结果。在对话框的右侧,我们还能够看到我们选择的元器件的仿真模型、引脚以及PCB参数。这里有一点需要注意,可能有时候我们选择的元器件并没有仿真模型,对话框将在仿真模型和引脚一栏中显示“No Simulator Model”(无仿真模型)。那么我们就不能够用该元器件进行仿真了,或者我们只能做它的PCB板,或者我们选择其他的与其功能类似而且具有仿真模型的元器件。搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我
13、们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。当我们已经将所需的元器件全部加入到文档中时,我们可以点击“OK”按钮来完成元器件的添加。添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。接着按相同的操作即可完成所有元器件的布置,接下来是连线。事实上Proteus的自动布线功能是如此的完美以至于我们在做布线时从来
14、都不会觉得这是一项任务,而通常像是在享受布线的乐趣。布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。本例我们布线的结果如下图所示:(仿真我们在上面的Keil操作介绍中的简单例子)。因为该工程十分简单,我们没有必要加上复位电路,所以这点在图中予以忽略,请大家注意。除此以外,你可能还发现,单片机系统没有晶振,这一点你需注意。事实上在Proteus中单片机的晶振可以省略,系统默认为12MHz,而且很多时候,当然也为了方便,我们只需要取默认值就可以了。下面我们来添加电源。先说明一点,Proteus中单片机芯片默认已经添加电源与地,所以我们可以
15、省略。然后在添加电源与地以前,我们先来看一下上面第一个图中区域的对象拾取区,我们在这里只说明本文中可能会用得到的以及比较重要的工具。:(Selection Mode)。选择模式,通常情况下我们都需要选中它,比如布局时和布线时。:(Component Mode)。组件模式,点击该按钮,能够显示出区域中的元器件,以便我们选择。 :(Wire Label Mode)。线路标签模式,选中它并单击文档区电路连线能够为连线添加标签。经常与总线配合使用。:(Text Script Mode)。文本模式,选中它能够为文档添加文本。 :(Buses Mode)。总线模式,选中它能够在电路中画总线。关于总线画法的
16、详细步骤与注意事项我们在下面会进行专门讲解。:(Terminals Mode)。终端模式,选中它能够为电路添加各种终端,比如输入、输出、电源、地等等。:(Virtual Instruments Mode)。虚拟仪器模式,选中它我们能够在区域中看到很多虚拟仪器,比如示波器、电压表、电流表等等。关于它们的用法我们会在后面的相应章节中详细讲述。好了,下面我们就来添加电源。首先点击,选择终端模式,然后在元器件浏览区中点击POWER(电源)来选中电源,通过区域中的元器件调整工具进行适当的调整,然后就可以在文档区中单击放置电源了。放置并连接好线路的电路图一部分如下图:连接好电路图以后我们还需要做一些修改。
17、由上图我们可以看出,图中的R1电阻值为10k,这个电阻作为限流电阻显然太大,将使发光二极管D1亮度很低或者根本就不亮,影响我们的仿真结果。所以我们要进行修改。修改方法如下:首先我们双击电阻图标,这时软件将弹出“Edit Component”对话框(见下图所示的对话框),对话框中的“Component Referer”是组件标签之意,可以随便填写,也可以取默认,但要注意在同一文档中不能有两个组件标签相同;“Resistance”就是电阻值了,我们可以在其后的框中根据需要填入相应的电阻值。填写时需注意其格式,如果直接填写数字,则单位默认为;如果在数字后面加上K或者k,则表示k之意。这里我们填入27
18、0,表示270。修改好各组件属性以后就要将程序(HEX文件)载入单片机了。首先双击单片机图标,系统同样会弹出“Edit Component”对话框,如下图。在这个对话框中我们点击“Program files”框右侧的,来打开选择程序代码窗口,选中相应的HEX文件后返回,这时,按钮左侧的框中就填入了相应的HEX文件,我们点击对话框的“OK”按钮,回到文档,程序文件就添加完毕了。装载好程序,我们就可以进行仿真了。首先来熟悉一下上面第一个图中区域的运行工具条。工具条从左到右依次是“Play”、“Step”、“Pause”、“Stop”按钮,即运行、步进、暂停、停止。下面我们点击“Play”按钮来仿真
19、运行,效果如下图所示,可以看到系统按照我们的程序在运行着,而且我们还能看到其高低电平的实时变化。如果我们已经观察到了结果就可以点击“Stop”来停止运行。实验二 实验系统的介绍和点亮一只发光二极管一实验目的 1、了解实验系统各个模块的功能。 2、掌握Keil软件的使用。 3、学习汇编程序的编写。 4、掌握下载器的使用。二实验内容 1、了解实验系统各个模块的功能,掌握各个功能模块之间的连接使用。 2、使用Keil软件编写汇编程序,并生成正确的hex文件。 3、P1口做输出口,使P1.0口点亮一只发光二极管。三实验说明 注意延时子程序的延时计算问题。四 实验线路图 1、下载系统的连接。 2、P1.
20、0接任意一个发光二极管的输入端,发光二极管的公共端接VCC。 3、主电路示意图如下:五 实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用USB下载器将hex文件下载到单片机中。 3、点击复位按钮,观察发光二极管闪烁情况。六思考 改变延时常数,使发光二极管闪亮时间改变。实验三 简单流水灯实验一实验目的 1、学习P1口的使用方法。 2、学习延时子程序的编写。二 实验预备知识 1、P1口是准双向口,每一位都可独立地定义为输入或输出。 2、本实验中的延时子程序采用指令循环实验,机器周期*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。 三实验内容 1、使用K
21、eil软件编写汇编程序,并生成正确的hex文件。 2、P1口作为输出口,接8只发光二极管,使发光二极管循环点亮。四实验说明 注意延时子程序的延时计算问题。五 实验线路图 1、下载系统的连接。 2、P1.0P1.7用排线至接任意8只发光二极管的输入端,发光二极管的公共端接VCC。 3、主电路示意图如下: 六实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将hex文件下载到单片机中。 3、点击复位按钮,观察8只发光二极管闪烁移位情况。七思考 改变延时常数,使发光二极管闪亮时间改变。 修改程序,使发光二极管闪亮移位方向改变。 使用其他I/O口作为输出口,又该做哪些修
22、改?实验四 P1口转弯灯实验(查询法)一实验目的 进一步了解P1口的使用,学习汇编语言编程方法与调试技巧。二实验内容 P1.0接5V时,右转弯灯闪亮,P1.1接5V时左转弯灯闪亮,P1.0、P1.1同时接5V或接地时,转弯灯均不闪亮。三实验线路图 1、下载系统的连接。 2、P1.0、P1.1接VCC或接地,P1.4P1.7接四只发光二极管,发光二极管的公共端接VCC。 3、主电路示意图如下: 四实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将hex文件下载到单片机中。 3、点击复位按钮,运行程序,应看到转弯灯正确闪亮。五思考 改变延时常数,使发光二极管闪亮时
23、间改变。 修改程序,用4只发光二极管的左移和右移来表示左转弯和右转弯。 实验五 P3.3输入,P1口输出(中断)一实验目的 1、学习P3口、P1口的使用方法。 2、学习延时子程序的编写和使用。二 实验内容 1、P3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一。 2、P1口做输出口,编写程序,使P1口接的8个发光二极管按16进制加一方式点亮。 3、使用Keil软件编写汇编程序,并生成正确的hex文件。三 实验说明 1、P3口是准双向口,它作为输出口时与一般的双向口使用方法相同;当P3口作为输入口时,必须先对它置高电平,时内部MOS管截止,才能读入正确的数据。 2、注意延时子程序的
24、延时计算问题。四、实验线路图 1、下载系统的连接。 2、P1.0P1.7用排线至接任意8只发光二极管的输入端,发光二极管的公共端接VCC。 3、P3.3接U1模块右下角的独立按键输出端。 4、主电路示意图如下: 五实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将hex文件下载到单片机中。 3、点击复位按钮,运行程序。按键每按动一次,8只发光二极管按16进制加一方式点亮。六思考 1、使用P3.2作为输入口,该做哪些修改? 1、使用P3.4或P3.5作为输入口,又该做哪些修改?实验六 Led显示器的静态显示实验一实验目的 1、学习P0口的使用方法。 2、学习LE
25、D显示器的静态显示和编程应用。二实验内容 1、P0口做输出口,连接到一个LED显示器(共阴)的a-h段。 2、编程使七段数码管循环显示0-9。三实验说明 1、P0口是准双向口,它作为输出口时与一般的双向口使用方法相同。 2、注意数码管的共阴共阳问题及对应的段码表。四、实验线路图 1、下载系统的连接。 2、P0.0P0.7用排线至接到U6模块中的LED显示器的8段,LED显示器公共端接地。 3、主电路示意图如下: 五实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将hex文件下载到单片机中。 3、点击复位按钮,运行程序。观察LED显示器循环显示0-9。六、思考:
26、如果使用共阳的LED数码管,电路连接和程序该做哪些修改?实验七 基于LS164的LED串行显示接口一实验目的 1、学习74LS164串并转换芯片(U4模块)的使用方法。 2、进一步学习LED显示器(U6模块)的使用方法和编程应用。 3、进一步学习P3口第二功能使用。二实验内容 1、74LS164芯片的串行并出,芯片的输出连接到一个LED显示器(共阴)的a-h段。 2、编程使七段数码管循环显示0-9。三实验说明 1、P3口是准双向口,它作为输出口时与一般的双向口使用方法相同。 2、注意数码管的共阴共阳问题及对应的段码表。3、74LS164的原理:它是串行输入,并行输出,其中管脚1和2为串行输入端
27、,QA-QH为输出端,清除管脚和时钟管脚为控制管脚,当清除管脚为高电平时,时钟管脚为上升沿时,才会有输出.因此,在为了实现这个程序的要求,我们只需要将单片机中的数据送到SBUF中,再将硬件按照相应的制作好,这样就可以实现数据的传送了,然后通过查表就能得到需要显示的数据了。根据需要显示的方式的不同,我们可以编不同的程序。四、实验线路图 1、下载系统的连接。 2、P3.0和P3.1用排线接到74LS64的1脚和8脚,74LS164的输出接七段数码管的a-h段。 3、LED显示器(共阴)的公共端接地。 4、主电路示意图如下: 五实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用
28、下载线软件将hex文件下载到单片机中。 3、点击复位按钮,运行程序。观察LED显示器循环显示0-9。六、思考1、如果使用共阳的LED数码管,电路连接和程序该做哪些修改?2、N个164和LED数码管同时使用,该如何连线和编程?实验八 LED显示器的动态显示实验一实验目的 1、学习P0口、P2口的使用方法。 2、进一步学习LED显示器(U6模块)的使用方法和编程应用。二实验内容 1、使用4个LED显示器(共阳),动态显示2009。 2、P0口送出段选码,P2.0-P2.3送出位选码。三实验说明 1、P0口、P3口是准双向口,它作为输出口时与一般的双向口使用方法相同。 2、注意数码管的共阴共阳问题及
29、对应的段码表。四、实验线路图 1、下载系统的连接。 2、P0口作为段选码输出连接到4只LED数码管的a-h段。 3、P2.0-P2.3分别接4只LED数码管的公共端,送出位控信号。 4、主电路示意图如下: 五实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将hex文件下载到单片机中。 3、点击复位按钮,运行程序。观察LED显示器动态显示2009。六、思考:动态显示是如何实现的?实验九 扩展存储器6264读写实验一实验目的 1、学习片外存储器扩展方法。 2、学习数据存储器,不同的读写方法。二实验内容 先把0-F(16个数)写入到片外数据存储器6264的0000H
30、-000FH(16个)存储单元,再把这16个数据读出,依次从P1口送到LED显示器显示。三实验说明 1、单片机采用的是统一编址方式。P0口是低8位地址线和数据线分时复用,P2口是高8位地址。 2、6264的存储容量是8KB(13根地址线)。四、实验线路图 1、下载系统的连接。 2、P0作为数据线直接接到6264对应的数据端口,P0口同时作为低8位地址线通过74LS573锁存器接6264的A0-A7。 3、P2.0-P2.4分别接6264的A8-A12。6264芯片的片选接P2.7。 4、主电路示意图如下: 五实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将h
31、ex文件下载到单片机中。 3、点击复位按钮,运行程序。观察LED显示器依次显示0-F。六、思考:1、6264的片选端改接P2.6,6264的地址如何变化?2、74LS573和74LS373都是常用的锁存器,他们有何区别?实验十 双机串行通信一实验目的1、掌握串行口工作方式的程序设计,掌握单片机通讯的编制。 2、了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议。二实验内容1、利用单片机串行口,实现两片单片机(主机和从机)之间的通信。2、本实验实现以下功能:从主机的P1口输入数据,通过主从机的串行通信,将数据传送到从机,再利用从机的P2口将数据送到8只发光二极管显示。 三实验说明MCS-5
32、1系列单片机内部有一个可编程全双工串行通信接口,具有UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)功能。它有四种工作方式,可由软件设定;它的波特率也可由软件设置片内的定时器/计数器来进行控制。与串口相关的特殊功能寄存器主要有串口控制寄存器SCON和电源控制寄存器PCON。其中需要注意的是PCON不可位寻址。51系列单片机的串口主要用来进行串口数据通信,除此以外,它还可以用来非常方便地扩展并行IO口,可以扩充输入或者输出。本实验就是单片机的串口在串行数据通信的一个简单应用。四、实验线路图 1、下载系统的连接。 2、主机的P1口通
33、过排线接VCC或接地,从机的P2口接8只发光二极管。 3、主机的P3.0接从机的P3.1,主机的P3.1接从机的P3.0。 4、主电路示意图如下: 五实验步骤 1、使用Keil软件编写两个汇编程序,并生成对应的hex文件。 2、使用下载线软件将两个hex文件下载到对应的单片机中。 3、点击复位按钮,运行程序。改变主机P1口的高低电平,观察从机发光二极管的亮灭变化。六、思考:动态显示在程序上是如何实现的?实验十一 8255 PA.PB.PC口输出方波一实验目的 1、掌握可编程IO接口芯片8255的接口原理使用,熟悉对8255初始化编程和输入、输出软件的设计方法。 2、进一步学习单片机与扩展芯片的
34、连接和使用。二实验内容 8255 PA.PB.PC口24根线的任意一根接发光二极管,观察发光二极管的亮灭变化。三实验说明 1、8255有三个并行口,既可以输入,也可以输出。使用时,通过写入命令控制字到命令寄存器来设置。 2、8255芯片的功能是把一个IO口扩展成3个IO口。四、实验线路图 1、下载系统的连接。 2、单片机P0作为数据线直接接8255芯片的数据线,同时通过74LS573锁存器接8255的A1、A0。 3、P2.7接8255芯片的片选端。 4、主电路示意图如下: 五实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将hex文件下载到单片机中。 3、点
35、击复位按钮,运行程序。观察发光二极管的亮灭变化。六、思考1、8255芯片的地址如何确定?2、8255芯片命令控制字的格式如何? 实验十二 基于扫描法的键盘 LED显示接口一实验目的 1、了解行列式键盘的工作原理(U5模块)。 2、进一步学习LED数码管(U6模块)的显示方式及工作原理。二实验内容 1、设计一个4*4行列式键盘。P1.4-P1.7作为行列式的列线,P1.0-P1.3作为行列式的行线。 2、从行列式键盘输入信息,LED数码管显示对应按键键码。段选码由P2口输出到数码管。三实验说明 1、本实验的去抖动采用软件延时法。 2、注意数码管的共阴共阳问题及对应的段码表。四、实验线路图 1、下
36、载系统的连接。 2、P2口作为段选码输出连接到LED数码管的a-h段,对应LED数码管的公共端接有效电平。 3、P1.4-P1.7分别接4*4键盘的4根列线,P1.0-P1.3接键盘的4根行线。 4、主电路示意图如下: 五实验步骤 1、使用Keil软件编写汇编程序,并生成hex文件。 2、使用下载器将hex文件下载到单片机中。 3、点击复位按钮,运行程序。按下键盘中的任意按钮,观察LED数码管的显示情况。六、思考:行列式键盘的工作原理? 附录1 参考程序实验一、二 点亮一只发光二极管org 0000hljmp mainorg 0030hmain: mov a,#0ffhmov P1,aloop
37、: setb P1.0lcall delayclr P1.0 lcall delaysjmp loopsjmp $delay:mov r4,#10dl1: mov r5,#0aahdl2: mov r6,#40Hdjnz r6,$djnz r5,dl2djnz r4,dl1retend实验三 简单流水灯实验org 0000hljmp mainorg 0030hmain: mov a,#0ffhmov P1,alcall delaymov a,#0fehloop: mov p1,alcall delayrl asjmp loopsjmp $delay:mov r4,#10dl1: mov r5,
38、#0aahdl2: mov r6,#40Hdjnz r6,$djnz r5,dl2djnz r4,dl1retend实验四 P1口转弯灯实验(查询法)ORG 0C30HPX00: MOV P1,#0FFH ;初始化PX03: MOV A,P1 MOV B,A ANL A,#03H CJNE A,#01H,PX01 ;满足只是P1.0为高条件吗? JB 00H,PX04 ;闪烁标志位 CLR P1.4 CLR P1.5 ;开右灯 SETB P1.6 SETB P1.7 ;关左灯 MOV R2,#20H LCALL DELY ;延时 SETB 00H ;置标志位 LJMP PX03 ;继续查状态P
39、X04: SETB P1.4 SETB P1.5 SETB P1.6 ;关灯 SETB P1.7 MOV R2,#20H LCALL DELY ;延时 CLR 00H ;清标志位 AJMP PX03 ;继续查状态PX01: CJNE A,#02H,PX02 ;满足只是P1.1为高条件吗? JB 01H,PX05 ;判标志位 SETB P1.4 SETB P1.5 ;开左灯 CLR P1.6 CLR P1.7 ;关右灯 MOV R2,#20H ;延时 LCALL DELY SETB 01H ;置标志位 LJMP PX03 ;继续查状态PX05: SETB P1.4 SETB P1.5 SETB
40、P1.6 ;关灯 SETB P1.7 MOV R2,#20H LCALL DELY ;延时 CLR 01H ;清标志位 LJMP PX03 ;继续查状态PX02: SETB P1.4 SETB P1.5 SETB P1.6 ;关灯 SETB P1.7 LJMP PX03 ;继续实验五 P3.3输入,P1口输出(中断)ORG 0000HLJMP MAINORG 0003HLJMP LOOP1ORG 0020HMAIN: MOV A,#0FFHMOV P0,ACLR IT0SETB EX0SETB EACLR ASJMP $LOOP1: INC APUSH ACCCPL AMOV P0,APOP
41、ACCLCALL LOOPRETILOOP:MOV R2,#00HDEL1:MOV R3,#00HDEL2:DJNZ R3,DEL2DJNZ R2,DEL1RETEND实验六 LED显示器的静态显示实验ORG 0000HLJMP MAINORG 0100HMAIN: MOV A, #0FFHMOV P0,AMOV R1,#00HMOV DPTR,#TAB1L1: MOV A, R1MOVC A, A+DPTRMOV P0,ALCALL DELAYLCALL DELAYLCALL DELAYINC R1CJNE R1,#0AH,L1SJMP MAINTAB1: DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90HDELAY: MOV R3,#00HDL1: MOV R4,#00HDL2: DJNZ R4,DL2DJNZ R3,DL1RETEND实验七 基于LS164的LED串行显示接口timer equ 30horg 0000Hajmp startorg 000bhajmp intt0org 0040hstart:mov scon,#0mov a,#0fehclr timov sbuf
链接地址:https://www.31ppt.com/p-4147373.html