单片机技术实验系统说明书.doc_第1页
单片机技术实验系统说明书.doc_第2页
单片机技术实验系统说明书.doc_第3页
单片机技术实验系统说明书.doc_第4页
单片机技术实验系统说明书.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机技术实验系统使用说明书职业技术学院 杨金华2009年5月目 录实验一 单片机仿真软件的使用实验二 实验系统的介绍和点亮一只发光二极管实验三 简单流水灯实验实验四 p1口转弯灯实验(查询法)实验五 p3.3输入,p1口输出(中断)实验六 led显示器的静态显示实验实验七 基于ls164的led串行显示接口实验八 led显示器的动态显示实验实验九 扩展存储器6264读写实验实验十 双机串行通信实验十一 可编程并行接口芯片8255a 实验十二 基于扫描法的键盘 led显示接口 附录1 参考程序附录2 图片实验一:单片机仿真软件的使用1 实验目的 1、掌握keil软件的使用。 2、掌握proteus软件的使用。 3、学习汇编程序的编写和proteus仿真。2 实验内容 1、keil软件的基本用法。 2、proteus软件的基本用法。 3、p1口做输出口,编写程序,使p1口点亮一只发光二极管(仿真)。3 实验说明 注意延时子程序的延时计算问题。四实验步骤 1、学习keil软件的使用。 2、学习proteus软件的使用。 3、p1口点亮一只发光二极管的仿真。(一):keil软件的基本用法keil vision是keil公司(arm子公司)开发的一款用于mcs-51单片机开发的应用十分广泛的编译和调试软件。该软件可以编辑、编译汇编语言、c51语言,连接定位目标文件和库文件,创建hex文件,调试目标程序等。keil软件功能强大,包含很多部分,本文我们主要使用keil vision来开发c51项目、调试程序并生成hex文件来用于单片机开发。keil vision是一款在windows下使用的集成开发环境,目前最新版本为v3,本文中我们为了简便选用v2.0。下面我们就来熟悉一下keil软件。打开软件,我们可以看到其界面,如下图所示:下面我们就来使用keil软件开发我们的第一个项目。点击“project”(工程)菜单下面的“new project”(新建工程),我们来新建一个工程。软件弹出“create new project”(创建新工程)窗口。如下图所示:我们为工程输入文件名后,点击“保存”按钮,软件将弹出“select device for target”(选择mcu)窗口,如下图所示。我们只需根据自己工程的需要选择相应的mcu,然后点击“确定”按钮就可以了。在这里我们选择atmel公司的at89c51,这种类型的单片机与intel的8051单片机完全兼容,但是它内含4kb flash存储器,使用非常方便,而且在我国也较为流行。事实上,目前at89c51已经被at89s51所淘汰,因为at89s51加入了isp(在线可编程)功能,通过atmel公司或者自制的下载线就可以对片内flash进行编程,使用更为方便。然而at89s51与at89c51除了isp以外完全兼容,而且下面我们要说明的proteus软件目前只能支持at89c51,所以本文将以at89c51来代替8051使用,请大家注意。选择好相应的mcu,点击窗口中的“确定”按钮以后,软件会弹出一个窗口询问是否将8051启动代码加入工程(如下图),由于我们不需要这段代码,所以我们点击“否”跳过就可以了。 至此,我们完成了整个工程的初步建立。下面我们需要做的就是创建源文件并将我们的源文件加入工程。首先点击“file”下面的“new”菜单,或者直接点击工具栏中的新建按钮,软件将弹出源文件编辑窗口,我们可以在窗口中编辑源文件。编辑好的源文件如下图所示。接下来的操作有两点需要注意:1、加入at89c51的头文件(当然,如果你选择了其他的mcu,则加入相应的头文件):在要加入头文件的地方(一般是文件开头),点击右键,选择点击弹出菜单(如下图)中的“insert #include ”即完成了头文件的添加。我们可以看到源文件中多了一行头文件包含代码“#include ”。2、 保存源文件:注意保存源文件时所书写的源文件扩展名决定了源文件的类型(c51文件或者汇编语言源文件)。这里我们将源文件保存为“main.c”。你可以看出在源文件保存以后,文件中的关键字已经高亮显示,可以帮助我们及时发现错误。源文件编辑好以后,我们就可以将其添加到工程中了。如下图所示,右键点击“project workspace”窗口中的“source group 1”(如果你不能看到这个项目,你可以点击一下图中“target 1”前面的“+”号展开文件夹),这时软件将弹出如图所示的菜单。我们选择“add files to group source group 1”,软件弹出添加源文件窗口,我们就可以将相应的源文件加入到工程了。下面我们还需要对工程作一些设置,以使其满足我们的要求。右键点击上图中的“target 1”,软件将弹出工程菜单,如下图所示。我们选择点击“options for target target1” ,软件将弹出工程设置窗口。在工程设置中其他的我们暂时不管,只需将“output”选项卡下面的“create hex file”选中就可以了,如下图所示。这样,当我们调试工程项目时,软件将能够生成hex文件,用来装入单片机,使之运行我们的指令。设置好以后,我们就可以编译、链接、调试我们的工程项目了。最后让我们来熟悉一下调试工具栏。在这个工具栏中我们只需了解左边的三个按钮。其中,调试工具栏中最左侧的按钮是“translate current file”按钮,即编译按钮,用来编译当前文件;中间的按钮是“build target”按钮,即建立工程按钮,用来编译、连接当前的工程,产生相应的工程目标文件,比如hex文件;最右侧的按钮是“rebuild all target files”按钮,即全部重建按钮,主要在工程文件有改动时使用,作用是全部重建整个工程,产生相应的目标文件。在整个工程生成hex文件以后,我们在keil中的任务就算完成了。当然,你可以在keil中进行各种调试。事实上,keil的功能十分强大,它能仿真单片机的各种功能。但是我们在此并不讨论它的这些功能。(二):proteus软件的基本用法proteus软件是labcenter electronics公司的一款电路设计与仿真软件,它包括isis、ares等软件模块,ares模块主要用来完成pcb的设计,而isis模块用来完成电路原理图的布图与仿真。proteus的软件仿真基于vsm技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如mcs-51系列、pic系列等等,以及单片机外围电路,比如键盘、led、lcd等等。通过proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。本文中由于我们主要使用proteus软件在单片机方面的仿真功能,所以我们重点研究isis模块的用法,在下面的内容中,如不特别说明,我们所说的proteus软件特指其isis模块。在进行下面的操作前,我先说明一点:我的proteus版本是7.1, 6.9以前的版本,可能你发现在鼠标操作上会略有不同。这主要表现在6.9以前的版本鼠标左右键的作用与一般软件刚好相反,而7.0以后已经完全改过。下面我们首先来熟悉一下proteus的界面。proteus是一个标准的windows窗口程序,和大多数程序一样,没有太大区别,其启动界面如下图所示:如图中所示,区域为菜单及工具栏,区域为预览区,区域为元器件浏览区,区域为编辑窗口,区域为对象拾取区,区域为元器件调整工具栏,区域为运行工具条。下面我们就以建立一个和我们在keil简介中所讲的工程项目相配套的proteus工程为例来详细讲述proteus的操作方法以及注意事项。首先点击启动界面区域中的“p”按钮(pick devices,拾取元器件)来打开“pick devices”(拾取元器件)对话框从元件库中拾取所需的元器件。对话框如下图所示:在对话框中的“keywords”里面输入我们要检索的元器件的关键词,比如我们要选择项目中使用的at89c51,就可以直接输入。输入以后我们能够在中间的“results”结果栏里面看到我们搜索的元器件的结果。在对话框的右侧,我们还能够看到我们选择的元器件的仿真模型、引脚以及pcb参数。这里有一点需要注意,可能有时候我们选择的元器件并没有仿真模型,对话框将在仿真模型和引脚一栏中显示“no simulator model”(无仿真模型)。那么我们就不能够用该元器件进行仿真了,或者我们只能做它的pcb板,或者我们选择其他的与其功能类似而且具有仿真模型的元器件。搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。当我们已经将所需的元器件全部加入到文档中时,我们可以点击“ok”按钮来完成元器件的添加。添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。接着按相同的操作即可完成所有元器件的布置,接下来是连线。事实上proteus的自动布线功能是如此的完美以至于我们在做布线时从来都不会觉得这是一项任务,而通常像是在享受布线的乐趣。布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。本例我们布线的结果如下图所示:(仿真我们在上面的keil操作介绍中的简单例子)。因为该工程十分简单,我们没有必要加上复位电路,所以这点在图中予以忽略,请大家注意。除此以外,你可能还发现,单片机系统没有晶振,这一点你需注意。事实上在proteus中单片机的晶振可以省略,系统默认为12mhz,而且很多时候,当然也为了方便,我们只需要取默认值就可以了。下面我们来添加电源。先说明一点,proteus中单片机芯片默认已经添加电源与地,所以我们可以省略。然后在添加电源与地以前,我们先来看一下上面第一个图中区域的对象拾取区,我们在这里只说明本文中可能会用得到的以及比较重要的工具。:(selection mode)。选择模式,通常情况下我们都需要选中它,比如布局时和布线时。:(component mode)。组件模式,点击该按钮,能够显示出区域中的元器件,以便我们选择。 :(wire label mode)。线路标签模式,选中它并单击文档区电路连线能够为连线添加标签。经常与总线配合使用。:(text script mode)。文本模式,选中它能够为文档添加文本。 :(buses mode)。总线模式,选中它能够在电路中画总线。关于总线画法的详细步骤与注意事项我们在下面会进行专门讲解。:(terminals mode)。终端模式,选中它能够为电路添加各种终端,比如输入、输出、电源、地等等。:(virtual instruments mode)。虚拟仪器模式,选中它我们能够在区域中看到很多虚拟仪器,比如示波器、电压表、电流表等等。关于它们的用法我们会在后面的相应章节中详细讲述。好了,下面我们就来添加电源。首先点击,选择终端模式,然后在元器件浏览区中点击power(电源)来选中电源,通过区域中的元器件调整工具进行适当的调整,然后就可以在文档区中单击放置电源了。放置并连接好线路的电路图一部分如下图:连接好电路图以后我们还需要做一些修改。由上图我们可以看出,图中的r1电阻值为10k,这个电阻作为限流电阻显然太大,将使发光二极管d1亮度很低或者根本就不亮,影响我们的仿真结果。所以我们要进行修改。修改方法如下:首先我们双击电阻图标,这时软件将弹出“edit component”对话框(见下图所示的对话框),对话框中的“component referer”是组件标签之意,可以随便填写,也可以取默认,但要注意在同一文档中不能有两个组件标签相同;“resistance”就是电阻值了,我们可以在其后的框中根据需要填入相应的电阻值。填写时需注意其格式,如果直接填写数字,则单位默认为;如果在数字后面加上k或者k,则表示k之意。这里我们填入270,表示270。修改好各组件属性以后就要将程序(hex文件)载入单片机了。首先双击单片机图标,系统同样会弹出“edit component”对话框,如下图。在这个对话框中我们点击“program files”框右侧的,来打开选择程序代码窗口,选中相应的hex文件后返回,这时,按钮左侧的框中就填入了相应的hex文件,我们点击对话框的“ok”按钮,回到文档,程序文件就添加完毕了。装载好程序,我们就可以进行仿真了。首先来熟悉一下上面第一个图中区域的运行工具条。工具条从左到右依次是“play”、“step”、“pause”、“stop”按钮,即运行、步进、暂停、停止。下面我们点击“play”按钮来仿真运行,效果如下图所示,可以看到系统按照我们的程序在运行着,而且我们还能看到其高低电平的实时变化。如果我们已经观察到了结果就可以点击“stop”来停止运行。实验二 实验系统的介绍和点亮一只发光二极管一实验目的 1、了解实验系统各个模块的功能。 2、掌握keil软件的使用。 3、学习汇编程序的编写。 4、掌握下载器的使用。二实验内容 1、了解实验系统各个模块的功能,掌握各个功能模块之间的连接使用。 2、使用keil软件编写汇编程序,并生成正确的hex文件。 3、p1口做输出口,使p1.0口点亮一只发光二极管。三实验说明 注意延时子程序的延时计算问题。4 实验线路图 1、下载系统的连接。 2、p1.0接任意一个发光二极管的输入端,发光二极管的公共端接vcc。 3、主电路示意图如下:五 实验步骤 1、使用keil软件编写汇编程序,并生成hex文件。 2、使用usb下载器将hex文件下载到单片机中。 3、点击复位按钮,观察发光二极管闪烁情况。六思考 改变延时常数,使发光二极管闪亮时间改变。实验三 简单流水灯实验一实验目的 1、学习p1口的使用方法。 2、学习延时子程序的编写。2 实验预备知识 1、p1口是准双向口,每一位都可独立地定义为输入或输出。 2、本实验中的延时子程序采用指令循环实验,机器周期*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。 三实验内容 1、使用keil软件编写汇编程序,并生成正确的hex文件。 2、p1口作为输出口,接8只发光二极管,使发光二极管循环点亮。四实验说明 注意延时子程序的延时计算问题。5 实验线路图 1、下载系统的连接。 2、p1.0p1.7用排线至接任意8只发光二极管的输入端,发光二极管的公共端接vcc。 3、主电路示意图如下: 六实验步骤 1、使用keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将hex文件下载到单片机中。 3、点击复位按钮,观察8只发光二极管闪烁移位情况。七思考 改变延时常数,使发光二极管闪亮时间改变。 修改程序,使发光二极管闪亮移位方向改变。 使用其他i/o口作为输出口,又该做哪些修改?实验四 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、点击复位按钮,运行程序,应看到转弯灯正确闪亮。五思考 改变延时常数,使发光二极管闪亮时间改变。 修改程序,用4只发光二极管的左移和右移来表示左转弯和右转弯。 实验五 p3.3输入,p1口输出(中断)一实验目的 1、学习p3口、p1口的使用方法。 2、学习延时子程序的编写和使用。2 实验内容 1、p3口做输入口,外接一脉冲,每输入一个脉冲,p1口按十六进制加一。 2、p1口做输出口,编写程序,使p1口接的8个发光二极管按16进制加一方式点亮。 3、使用keil软件编写汇编程序,并生成正确的hex文件。3 实验说明 1、p3口是准双向口,它作为输出口时与一般的双向口使用方法相同;当p3口作为输入口时,必须先对它置高电平,时内部mos管截止,才能读入正确的数据。 2、注意延时子程序的延时计算问题。四、实验线路图 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、学习led显示器的静态显示和编程应用。二实验内容 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。六、思考:如果使用共阳的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为串行输入端,qa-qh为输出端,清除管脚和时钟管脚为控制管脚,当清除管脚为高电平时,时钟管脚为上升沿时,才会有输出.因此,在为了实现这个程序的要求,我们只需要将单片机中的数据送到sbuf中,再将硬件按照相应的制作好,这样就可以实现数据的传送了,然后通过查表就能得到需要显示的数据了。根据需要显示的方式的不同,我们可以编不同的程序。四、实验线路图 1、下载系统的连接。 2、p3.0和p3.1用排线接到74ls64的1脚和8脚,74ls164的输出接七段数码管的a-h段。 3、led显示器(共阴)的公共端接地。 4、主电路示意图如下: 五实验步骤 1、使用keil软件编写汇编程序,并生成hex文件。 2、使用下载线软件将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、注意数码管的共阴共阳问题及对应的段码表。四、实验线路图 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-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、使用下载线软件将hex文件下载到单片机中。 3、点击复位按钮,运行程序。观察led显示器依次显示0-f。六、思考:1、6264的片选端改接p2.6,6264的地址如何变化?2、74ls573和74ls373都是常用的锁存器,他们有何区别?实验十 双机串行通信一实验目的1、掌握串行口工作方式的程序设计,掌握单片机通讯的编制。 2、了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议。二实验内容1、利用单片机串行口,实现两片单片机(主机和从机)之间的通信。2、本实验实现以下功能:从主机的p1口输入数据,通过主从机的串行通信,将数据传送到从机,再利用从机的p2口将数据送到8只发光二极管显示。 三实验说明mcs-51系列单片机内部有一个可编程全双工串行通信接口,具有uart(universal asynchronous receiver/transmitter,通用异步收发器)功能。它有四种工作方式,可由软件设定;它的波特率也可由软件设置片内的定时器/计数器来进行控制。与串口相关的特殊功能寄存器主要有串口控制寄存器scon和电源控制寄存器pcon。其中需要注意的是pcon不可位寻址。51系列单片机的串口主要用来进行串口数据通信,除此以外,它还可以用来非常方便地扩展并行io口,可以扩充输入或者输出。本实验就是单片机的串口在串行数据通信的一个简单应用。四、实验线路图 1、下载系统的连接。 2、主机的p1口通过排线接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、进一步学习单片机与扩展芯片的连接和使用。二实验内容 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、点击复位按钮,运行程序。观察发光二极管的亮灭变化。六、思考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、下载系统的连接。 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: 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,#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 ;继续查状态px04: 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 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 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,amov sp,#60hmov tmod,#01hmov tl0,#0mov th0,#4bhmov r0,#0mov timer,#20mov scon,#0setb tr0setb et0setb easjmp $intt0: push accpush pswclr eaclr tr0mov tl0,#0mov th0,#4bhsetb tr0djnz timer,exitmov timer,#20mov dptr,#tablemov a,r0movc a,a+dptrclr ticpl amov sbuf,ainc r0cjne r0,#0ah,exitmov r0,#0exit: setb eapop pswpop accretiorg 3000htable: db 0fch,60h,0dah,0f2h,66hdb 0b6h,0beh,0e0h,0feh,0f6hend实验八 led显示器的动态显示实验d0 equ 30hd1 equ 31hd2 equ 32hd3 equ 33hb1 bit 00horg 0000hmain:mov d0,#09hmov d1,#00hmov d2,#00hmov d3,#02hsetb b1lcall disp0lcall disp0lcall dely03mov d0,#06hmov d1,#00hmov d2,#05hmov d3,#00hclr b1lcall disp0lcall disp0lcall dely03ljmp maindisp0:mov r0,#0ffhdisp: mov p0,#0ffhclr p2.0mov a,d0mov dptr,#tabmovc a,a+dptrmov p0,alcall dely1msclr p2.1setb p2.0mov a,d1mov dptr,#tabmovc a,a+dptrmov p0,alcall dely1msclr p2.2setb p2.1setb p2.0mov a,d2jnb b1,disp3mov dptr,#tabajmp disp2disp3:mov dptr,#tab2disp2: movc a,a+dptrmov p0,alcall dely1msclr p2.3setb p2.2setb p2.1setb p2.0mov a,d3mov dptr,#tabmovc a,a+dptrmov p0,alcall dely1msmov p0,0ffhsetb p2.3djnz r0,dispretdely03: mov r0,#03h dl3:mov r1,#64h dl2:mov r2,#7dhdl1:nopnop djnz r2,dl1djnz r1,dl2djnz r0,dl3retdely1ms: push 00h ;延时子程序mov r0,#125del1: nopnopdjnz r0,del1pop 00hrettab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;段选码tab2:db 040h,079h,24h,30h,19h,12h,02h,78h,00h,10h;end实验九 扩展存储器6264读写实验参考程序:org 0000hljmp mainorg 0030hmain: clr amov dptr,#0000hl1: movx dptr,ainc ainc dptrcjne a,#10h,l1l3: mov dptr,#0000hl2: movx a,dptrcpl amov p1,alcall delaylcall delaylcall delaylcall delayinc dptrcjne a,#0fh,l2sjmp l3delay: mov r2,#00hdel1: mov r3,#00hdel2: djnz r3,del2djnz r2,del1retend实验十 双机串行通信主机:org 0000hljmp mainorg 0030hmain:mov scon,#40hmov tmod,#20hmov pcon,#0mov th1,#0fahmov tl1,#0fahsetb tr1mov 20h,#0ffhscan:mov a,p1cjne a,20h,nextljmp scannext:mov 20h,amov sbuf,await:jbc ti,scanljm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论