MCS-51单片机实训指导书_第1页
MCS-51单片机实训指导书_第2页
MCS-51单片机实训指导书_第3页
MCS-51单片机实训指导书_第4页
MCS-51单片机实训指导书_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、安徽工商职业学院目录目录1单片机微机实验须知2前言3proteus isis 和keil软件入门学习4一 proteus isis 设计单片机电路的基本步骤:4二 用keil开发单片机程序9实训项目18实验一 单片机彩灯控制器的电路设计与仿真18实验二 查表程序设计通过led显示数字21实验三 用位操作实现逻辑功能开关监测报警装置25实验四 分支程序设计与应用简单的温度控制27实验五 用t0实现电子计数器功能29实验六 方波信号发生器32实验七 利用中断技术实现前后台程序并行处理33实验八 利用中断技术实现的数字时钟34实验九 led显示和键盘的实现36综合实训项目39项目1:数字频率计的设计

2、与实现39项目2:程序控制方波信号发生器42项目3:数字时钟与作息时间自动控制器43项目4:模拟量采集控制装置44项目5:汉字led点阵显示45项目6:多功能智能仪表(小组集体项目)47项目7:自选项目47实训成果与成绩评定:47程序附录49单片机微机实验须知单片机实验是学好单片机课程的重要环节之一,因为通过各次实验可以使我们书本中学到的单片机理论知识更巩固,可学会常用的编程方法,学会连接线路和检查故障、排除故障,为我们从事生产及进行科研等工作打下基础。为了达到上述目的,对同学们提出如下要求:1、每次老师告知实验时间和做什么实验后,在实验前要进行预习,仔细阅读实验指导书和该次实验有关的课本中内

3、容或其他参考书,做到对实验的目的、内容、方法、步骤和应注意的事项都充分了解心中有数,并按指导老师提出的要求完成预习报告,在规定的时间交给老师检阅。2、为了人身和设备安全,进入实验室后要遵守实验室的规章制度,不可动与该次实验无关的设备。3、实验时要严肃认真,尤其要注意人身及设备安全。讨论问题声音尽量小,以免相互干扰。4、实验完毕,应整理好设备,经教师清点验收后,方可离去。5、实验后要在老师规定的时间里完成实验报告。前言本实训环节采用实际项目法,让学生从以下项目中选择或自行提出一个单片机应用项目,完成电路图绘制、程序编写调试、仿真运行和程序下载等开发过程。重在训练学生的以下能力:1. 用eda软件

4、进行单片机硬件电路图绘制和仿真的能力;2使用单片机程序开发环境进行简单应用程序设计、调试、下载的能力;3电子元器件的识别、选用、安装、焊接能力4. 综合运用所学知识,进行简单单片机应用系统构思、设计、开发的能力; 对实训环境和设备的要求:1、pc机(p3以上cpu、256mb以上内存、windowsxp/2k操作系统、带lpt和rs-232接口)2、单片机电路仿真软件proteus 7 以上版本3、单片机程序开发软件keil 6.12 以上版本4、单片机实验板5、isp下载电缆与at_isp软件或rs-232电缆与stc_isp软件6、万用表、电烙铁、镊子、吸锡器、ic起拔器等常用工具prot

5、eus isis 和keil软件入门学习一 proteus isis 设计单片机电路的基本步骤:(1) 用proteus isis 进行单片机应用系统设计与仿真的基本步骤:(2) 新建设计文件夹或打开一个现有的设计文件。(3) 选择元器件(通过关键字或分类检索)。(4) 将元器件放入设计窗口。(5) 添加其他模型(电源、地线、信号源等)和相关的虚拟仪器。(6) 编辑和连接电路。(7) 编写单片机所需的源程序。(8) 加入源程序,并通过构造,得到仿真程序或目标程序。这里的(6)、(7)两步可以选用其他更方便的工具完成。(9) 根据需要,设置对象的属性,如将单片机的”program file”属性

6、设置为上述仿真调试程序或目标程序。(10) 启动仿真功能,对电路进行仿真操作,验证其功能。【例1】 我们以一个简单的彩灯控制电路为例,介绍用proteus isis设计单片机应用电路的基本方法和步骤。1.创建并保存新的设计。启动isis,出现一个对话框,询问是否要使用软件提供的设计范例,这些范例对学习很有帮助,这里可以选“no”。如果已经启动了isis,可以通过菜单或工具执行“new design(新建)” 命令,将出现一张空的图纸供我们进行电路设计。新设计的缺省名为“untitled.dsn”,设计文件扩展名为“dsn 。用“save design(保存)”命令保存文件。在保存对话框中选择保

7、存路径和文件名,建议保存在d盘或移动u 盘中,并按照章节给文件夹命名,按设计内容或练习题号给文件命名,以便以后使用。这里可取文件夹的路径“d:mcuch1ex1-1”,文件为“1-1”。以后再次使用时,在windows下双击该文件即可自动启动isis并打开该文件,打开该设计文件。2.选择元器件(关键字筛选或分类筛选)proteus 提供了丰富的元器件资源,包括30余类、上万种不同型号参数的元器件。在模型选择工具栏中选中元器件按钮,单击p 按钮,即 弹出元器件选择(pick devices)窗口。要从众多的元器件中筛选出所需要的元件有两种方法:分类筛选法和关键字筛选法。两种方法也可结合使用。1)

8、 分类筛选法 就是根据元器件所在的类别逐步筛选。在元器件选择窗口的“category(器件种类)”下面,单击该元器件所在的类别。元器件分类如表1-2所示。对于单片机,用单击选择“micropprocessor ic”类别,在对话框的右侧“results”栏中,我们会发现这里有大量的常见的各种型号的单片机。如果嫌结果太多,可以进一步在下方的“subcategory”中选择子类别。这里可以单击“8051 family”,使得结果中只包括8051系列单片机,然后从结果栏中找到自己所需要的单片机芯片型号。2) 关键字筛选法在元器件选择窗口的关键字搜索栏“keywords”中输入元器件型号或名称,确认后

9、就可以将包含该关键字的元器件筛选出来显示在结果栏中。支持模糊筛选,即可以用元器件的名称、型号或描述中所包含的部分文字作为搜索关键字,如89c51、10k等。实际工作中常将分类筛选和关键字筛选两种方法配合起来使用。例如,如果关键字模糊匹配筛选出来的元器件太多,可以在从“category”中或“sub-category”中限定一下类别以缩小一下范围。当然也可以先选定类别后再输入关键字,注意若输入关键字,则“category”中只会显示包含该关键字的类别,如果要显示所有类别,必须将搜索的关键字清空。在筛选结果栏中单击所需的元器件,右侧会显示出该芯片的原理图符号和外形封装,最终确认后,双击所选元器件即

10、可添加到isis主窗口左侧的元器件列表中,供绘制电路图使用。按照上述方法将实验1的表1-1列出的元器件筛选出来添加到元器件列表中,以供绘制单片机彩灯控制电路使用。3. 将元器件从对象选择器放入原理图编辑区鼠标左击对象选择器中的某个元器件,然后把鼠标指针移到右边的原理图编辑区的适当位置(蓝色方框),点击鼠标的左键,就把该元器件放到了原理图编辑区。编辑区的大小可以通过“system”菜单下的“set sheet size”来设置。放置过程有以下技巧:(1)在对象选择器中选定对象后,其放置方向将会在预览窗口显示出来,如果元器件的方向不对,可以在放置前用方向工具转动后在放入。如果已经放入图纸,可以用后

11、面将介绍的方法在图纸中选定该对象后,在用快捷菜单或块旋转工具转动。(2)如果要连续放置相同的对象,可以在放置第一个元器件后,在编辑区中连续双击。4. 选择和放置其他类别的模型单击模型选择工具栏中不同的模型工具,可以显示相应的对象列表。往往不必像元器件那样要经过筛选,可以直接单击使用,再在编辑区中单击就将其放入了原理图。这里单击模型选择工具栏中的终端接口图标,在终端模型中单击ground(地线),在编辑区中单击将地线放置到原理图中。用同样的方法放入power(电源)。5编辑和连接电路1)选中对象 对编辑区中的对象进行各种操均需要先选中对象。对象被选中后将改变颜色。在空白处点击鼠标左键可以取消所有

12、对象。 选中对象的方法是:(1)左击对象可以选中单一对象。(2)按住(ctrl)键依次左击各个对象(或用鼠标拖出一个选择框将所需要的对象框选进来)可以选中一组对象。 注意:右击对象可以在选中单一对象的同时弹出该对象的快捷菜单,通过快捷菜单可以实现对该对象的一些常用操作。删除对象 删除对象的方法是:(1)选定对象后按下(del)键(或单击编辑工具栏中的块删除按钮)可删除这些被选中的对象。(2)右键双击单一对象可以直接删除该对象。3)拖动对象拖动对象的方法是:(1)选定对象或对象组后可用左键拖动的方法移动对象。(2)对于对象组,单击编辑工具栏中的块移动按钮,在移动鼠标可移动该组对象。4)旋转对象的

13、方向左键单击或框选选定对象或对象组后,单击编辑工具栏中的块旋转按钮,在对话框中输入旋转角度或选择翻转方向,单击“ok”按钮即可实现对象方向旋转。5)复制对象复制对象按以下步骤进行:(1)左键单击或框选以选定对象过对象。(2)单击编辑工具栏中的块复制按钮。(3)把拷贝的轮廓拖到需要的位置,左击鼠标放置拷贝。6)连接 两个对象(器件引脚或导线)间的连接(to connect a wire between two objects)按以下方法进行:(1)连接电路不需要选择工具,直接用鼠标左击第一个对象连接点后在左击另一个连接点,则自动连接。注意,连接与2d图形工具中的绘图直线不同,连接具有导线性质,2

14、d线段不具备导线性质。如果想自己解决走线路径,只要在拐点处左击鼠标。连接过程中的任何一个阶段,都可以通过按下(esc)键来放弃连线。(2)若要重复绘制若干相同的连线,可以在绘制一条后,在下一条位置处直接双击。(3)为了避免导线太长,太多影响图纸布线的美观,对于较长的导线,可以分别在需要连接的引脚处绘制一条短导线,在短导线末端双击鼠标以放置一个节点,然后在导线上放置一个标签(label工具),输入标签文字。凡是标签文字相同的点都相当于之间建立了电气连接而不不必在图纸上绘出连线。已用过的标签文字可以在标签属性编辑对话框的下拉表中选用。(4)为了更简洁地表示出一组导线的连接走向,还可以用总线(bus

15、)工具绘制出总线(单击开始,双击结束),再用绘制导线的方法将各分支导线连接到总线上(若按下(ctrl)键可绘制45度线),并通过标签label文字表示对应的连接关系。作为练习,请仿照实验1的图1-1绘制单片机彩灯控制电路。二 用keil开发单片机程序在单片机程序开发过程中,并不是仅有一个源程序就行了,还要选择器件(cpu)种类,确定编译(汇编)、连接的参数,指定调试的方式等,期间还会产生一些相关的文件。为方便管理和使用,keil将项目所需的各种设置和相关文件都通过工程来管理(工程文件会自动添加扩展名.uv2)。强烈推荐按照工程建立文件夹,同一个工程的所有文件存放在同一个文件夹下。在本课程的学习

16、过程中,建议大家按课程章节号创建文件夹,例如“d:mcuch2ex-2a51”,新建工程时,将本章节的工程文件保存在该文件夹中,工程所产生的其他文件默认位置也就自然为该文件夹了。用keil开发单片机程序的一般步骤是:(1)新建工程并选择单片机型号。(2)设置工程属性。(3)编辑源文件并加入工程(4)构造目标程序。(5)运行调试,以排除程序中的逻辑错误。(6)将最终的目标程序下载到单片机芯片中。1 工程的建立执行菜单命令“工程(project)新建工程(new project)”出现创建新工程对话框,起一个工程名(建议按章节和题号取名,如“p2-1”。不用加扩展名,系统会自动加上扩展名.uv2)

17、,并在下拉列表中选择单片机厂家和型号,这里选择atmel公司的89c51,单击“确定”按钮。2 工程属性的设置根据不同的软件配置和仿真调试情况,需要对工程属性进行设置:鼠标右击工程窗口下的“target 1”,然后选择“目标属性(option for target 1)”,出现工程属性对话框。该对话框有8个选项卡,大部分设置取默认值即可。其中下列两张选项卡需要进行设置: (1)“输出(output)”选项卡设置“输出(output)”如图0-1所示。图0-1 输出属性设置目标文件夹默认为工程文件所在的文件夹,一般不需修改。可以单击“选择obj文件”按钮进行查看和修改。勾选“生成hex文件”则在

18、构造时会产生hex格式的目标文件。这是intel公司提出的数据格式,所有数据使用16进制数字表示。在proteus isis中进行单片机仿真调试时需要用到这种格式文件;构造实际的单片机应用系统时,也需要将这种格式的文件下载到单片机程序存储器中。(2)“调试(debug)”选项卡设置 “调试(debug)”选项卡如图0-2所示。图0-2 调试属性的设置keil提供两类调试方法。一是在keil中进行软件仿真调试,这时应选“使用仿真器”。二是配合硬件仿真器或电路仿真软件进行程序和电路的联合调试,这时要选“使用:proteus vsm simulator”选项,提供的vdmagdi.exe,安装后在此

19、处的列表中将会出现“proteus vsm simulator”选项,供于isis进行程序和电路的联调使用。如果keil和isis在同一台计算机上运行,则需单击“设置”,填入运行isis计算机的ip地址,端口号为8000。还要说明的是,两者联调时,要在isis中选择“debug”菜单下的“use remote debug monitor”。3源文件的建立和添加keil内集成有一个文本编辑器,故可以在集成环境中直接进行源程序的输入。编辑器支持语法着色功能,即对添加到工程中的源程序,不同语法成分用不同颜色着色表示,例如,关键字用蓝色表示,以便查看和发现错误。但该文本编辑器对汉字的支持较差,故程序注

20、释最好使用英文或汉语拼音。执行、菜单命令“文件(file)新建(new)”,在源程序窗口会出现一个新的文件输入窗口,可在该窗口里输入源程序。输入完毕后,选择“文件(file)保存(save)”,输入文件名,把文件保存在工程目录中。文件取名时必须加上扩展名,汇编程序以.asm或.a51为扩展名保存,c程序以扩展名.c保存。图0-3 添加源文件如图0-3所示,程序编写完成以后,并不会自动出现在工程窗口中,还需要同过以下的操作将其加入工程.鼠标左键单击“source group 1”,在出现的快捷菜单中选择“增加文件到(add files to group“source group 1”)”,出现添

21、加文件的对话框,选择相应源程序即可。在工程中添加源文件也可以通过相应的菜单操作完成:“工程(project)目标,组和文件(targets groups files)。”keil 默认加入文件格式为c语言源文件,因此在默认情况下,“文件类型”下拉列表框中不显示该文件夹下的汇编文件。要显示汇编语言源文件,需要单击“文件类型”下拉列表框右侧的下三角按钮,弹出下拉列表,选择“asm source file(*.a*;*.src)”,这时才会将文件夹下的“*.asm”文件显示出来。鼠标左键双击要加入的文件,或单击要加入的文件后单击“add”按钮,都可以将该文件加入到工程中。如图0-4所示。回到主界面,

22、加入的文件即出现在工程管理器“source group 1”上午下一级菜单中,如图0-5所示。双击该文件名,将在右边编辑窗口打开该文件,可以进行第一步编辑。图0-4 选择源文件加入源文件组 图0-5 加入文件后的源文件组4 构造目标程序设置好工程并添加了源程序文件后,即单击构造目标框上的相关构造工具(见图2-11)或按快捷键进行目标构造,即对工程进行汇编或编译、连接,最终生成目标文件*.hex等相关文件。构造过程中,有关信息将出现在屏幕下方输出窗口中的“build(构造)”页中。如果程序中有语法错误,这里会出现错误报告;双击错误报告行,可以定位到源程序中相关的出错行。对源程序反复修改后,最终构

23、造后输出窗口中应出现“0错误”或“0error”,表示程序已没有语法错误。构造的目标文件*.hex被用于下载到单片机芯片中。这一过程中,在工程文件夹中还会生成其他一些文件,如*.lst列表文件、*.obj目标文件*.m51程序符号列表文件。在设计和调试状态下均可以直接修改程序的源代码,但是必须重新构造工程或文件才能得到修改后的目标程序.如对源程序做了修改,必须对工程重新进行构造,从而产生新的目标文件,否则keil 调试所使用的目标文件仍然是上次构造的结果。 5 keil 仿真和调试虽然系统构造时可以自动检查出源程序中的语法错误,但逻辑错误要靠自己通过调试来发现.程序构造无误后,执行“调试(de

24、bug)”菜单下的“开始停止调试”命令可进入调试状态.在调试状态下可以查看单片机资源,跟踪调试程序.(1)查看单片机资源keil在调试状态下,通过菜单或工具栏操作,可以以仿真方式查看和修改单片机内部个单元的值,主要包括: 寄存器在工程窗口的寄存器页,显示有个寄存器(a、b、r0r7、dptr、sp等)的内容,通过鼠标单击可直接选定相关寄存器进行修改。 外围设备通过在“外围设备(peripherals)”菜单中选择不同的设备可以查看和修改这些外围设备对应的特殊功能寄存器(io端口、定时记数器、串性口和中断)。 存储器执行菜单命令“视图(view)存储器窗口(memory window)”或直接单

25、击工具栏上的相应按钮,会出现带有4张选项卡的存储器窗口。任一选项卡中,在“存储器地址”栏中,使用i、d、x、c命令,可分别观察片内的间接空间的内容(00h0ffh,命令格式为“i:xxh”)、片内直接寻址128字节(00h7fh,命令格式为“d:xxh”)、片外数据存储器的内容(0000hffffh,命令格式为“x:xxxxh”)和程序存储器空间的内容(0000h0fffh,命令格式为“c:xxxxh”)。例如,打开存储器窗口,存储器地址中输入“d:30h”(d表示直接寻址片内ram,开始地址30h)。如图0-6所示。 监视和调用堆栈监视和调用堆栈窗口可显示监视表达式的值和程序嵌套调用时堆栈中

26、的相关内容。 (2)跟踪调试程序通过程序调试可以找出程序中的逻辑错误,常用的手段有跟踪、单步运行、设置断点和监视。用调试菜单、快捷键或调试工具均可操作。 常用调试快捷键如下:(go):全速运行,遇到断点停止. (step over):单步,每次执行一步,整个子程序作为一“步”执行。 (step into):跟踪,每次执行一条命令,将跟踪进入所调用的子程序。+(run to cursor):运行到光标处。 (stop running):退出。在程序调试中,常要充分利用设置断点的方法,使程序运行到断点处暂停,然后通过检查个单元内容来判断结果是否正确。.具体调试方法和技巧将在后面结合练习进行讲解。图

27、0-6 存储器窗口 6程序下载所谓程序下载,又称固化或烧写,就是讲目录程序写入单片机片内或片外的程序存储器。目前常用的程序固化的方法有两种,一是采用专用编程器;二是采用某些芯片支持的isp功能,通过下载线写入芯片。具体操作方法见附录4:isp soft-ware使用介绍。实训项目实验一 单片机彩灯控制器的电路设计与仿真一、实验要求(1)仿照图1-1在proteus中绘制一个基于89c51的流水灯控制器电路,开关可以控制流动的方向,拨码开关可以调整流动的快慢。(2)参照给出的程序,编写程序以改变led闪烁频率和彩灯“流水”流动方向。(3)选择不同的工作寄存器区,修改r0r7的内容,观察相应片内r

28、am内容的变化。二、实验目的(1)学会使用proteus isis绘制硬件电路图,掌握加载程序和仿真运行等基本操作。(2)理解通过程序控制单片机的输人输出。(3)掌握keil uvision2软件的启动方法和使用的基本步骤。(4)了解编译过程中产生的不同类型的文件及其作用。(5)掌握查看和修改mcs-51单片机内部资源的操作方法。(6)学习keil uvision2常用热键的使用。三、实验步骤1在proteus isis中设计硬件电路(1)创建新的设计。建议以文件名“1-1”保存在对应的文件夹下,如“d:mcuch1ex1-1下。(2)利用关键字或分类检索的方法将电路原理图中需要的元器件挑选至

29、对象选择列表,主要元件可参照表1-1,然后依次选中在设计区单击,放入电路图。(3)从模型选择工具栏的终端(terminal)模型中将地线端子(ground)和电源端子(power)放置到电路中。(4)连接电路原理图,可参考图1-1单片机彩灯控制电路。表1-1 单片机彩灯控制器元器件清单元器件类别/子类别关键字单片机芯片at89c51micoprocessor ic/8051 family89c51红、黄、绿、蓝发光二极管ledoptoelectricsledred、yellow、green、blue10k电阻resistor10k100电阻100r22pf和10uf电容capacitor22p

30、f和10nf单刀单掷开关switches & relayswspst按钮button8位拨码开关dipswc_8晶振miscellaneouscrystal图1-1单片机彩灯控制电路2编辑源程序,添加源程序并构造目标程序若有现成的目标程序,此步可跳过。第一种方法(无程序调试软件keil uvision2时使用):(1)用记事本编辑以下源程序(注意,所有标点均为英文符号,不能用中文标点,分号及其后的注释可以不写,用文件名1-1.asm): (无程序调试软件keil uvision2时使用):(2)执行“source”菜单下的“add”命令添加程序“1-1.asm”,执行“build all”命令

31、构造目标程序“1-1.hex”。(3)设置单片机属性。双击“at89c51”,在属性中设置“program file”为目标程序“1-1.hex”。(4)仿真运行。单击仿真工具,启动电路仿真,并用鼠标操作电路中的开关,观察程序运行结果,初步认识单片机是如何工作的。第二种方法(有程序调试软件keil uvision2时使用):(1)启动keil uvision2软件,创建新工程:p1-1,cpu选择atmel 89c51或89c52。(2)对工程的属性进行设置:目标属性中选择“生成hex文件”。(3)编写源程序,以asm为扩展名保存在工程文件夹中。(4)将源程序加入源程序组:鼠标右键单击源程序组

32、图标,加入文件组。(5) 构造工程:使用热键或构造工具进行构造。期间可能需要修改源程序,直到没有语法错误为止。(6)调试:进入调试状态,打开相应窗口,运行程序,观察云行结果。(7)启动proteus isis,打开电路图“1-1.dsn”,单片机属性中选择目标文件p1-1.hex,然后进行仿真运行,操作电路中的开关,观察云行结果。实验二 查表程序设计通过led显示数字一、 实验要求通过拨码开关表示16进制数0f,利用led数码管显示该数字。包括硬件电路和程序设计。二、实验目的理解8段led数码管的显示原理和led显示的转化方法,学习查表程序的设计。三、实验原理图2-1 8段led数码管显示原理

33、和笔画分布由电路图2-2可以看出,这里需要通过传送指令将p1口拨码开关的状态读入累加器a,利用查表指令转换为led数码管的显示笔画代码,再传送到p2口驱动数码管。所谓显示代码就是根据该数字的笔画确定led数码管中8个笔画段ah中的哪些段点亮,如数字1要求点亮笔画b和c。我们可以根据数字与笔画的对应关系列出各数字的笔画代码真值表如表2-1所示,在每个数字需点亮的笔画处填入1,不需要点亮的位填入0,然后转换为16进制数就是该数字的显示代码。若采用共阳极led,则由于是0点亮,显示代码也就不同,笔画真值表与表2-1相反。显然,若各笔画连接的口线不同,显示代码也不同。图2-2 通过led数码管显示数字

34、电路图表2-1 led笔划显示真值表(共阴)有了代码表,还需要通过查表程序将数字转换为显示代码。查表程序一般是将表格中数据顺序放置在程序存储器的某个区域中,形成一数据表。程序中需要查表时,将表格首地址送入数据指针dptr,即使dptr指向表格首地址,在a中放入待查表格项的序号,例如要显示2,利用“movc a,a+dptr”指令,即以(a+dptr)为地址,将数据表中第2字节的表格项数据5bh取出放入a,从而实现查得2的显示代码5bh,然后送端口p2驱动笔画段显示出数字2。四、实验步骤1.在proteus isis中设计硬件电路(参考图2-2)(1)选择电路元器件并放入原理图编辑区:单片机:a

35、t89c52。一位共阴极数码管:7seg-com-cat-grn。8位拨码开关:dipswc_8。接地:ground(terminal模型中)。(2)参考图2-2完成原理图。2.在keil 中设计程序 (1)创建工程p2-1,选芯片at89c52,保存在文件夹下,如“d:mcuch3ex3-1a51”文件夹下。 (2)设定工程属性,勾选“生成hex文件”。 (3)编写源程序a2-1.asm,并加入到工程的源程序组中。 (4)构造目标程序,得到p2-1.hex。3.仿真运行 在89c51的属性中设置“program file”为所生成的目标程序p2-1.hex,进行仿真运行,验证程序功能。4.

36、思考 若采用的是一位共阳极数码管:7seg-com-an-grn,电路与程序应如何修改?实验三 用位操作实现逻辑功能开关监测报警装置1、 实验要求设计一个基与单片机89c52的开关监测报警装置,要求如下:红、绿、黄三个灯分别有p3.0p3.2控制,三个评委各控制一个开关k1、k2、k3分别接p1.0p2.0,如电路图3-1所示。对于某位选手:(1)若三位评委都认可(开关断开,置1)即晋级,亮绿灯。(2)若三位评委都不认可(开关合上,置0)即淘汰,亮红灯。(3)若只有1位或2位评委认可即待定,亮黄灯。即当连接p1.0p2.0的3个开关均合上时,绿灯亮,表示工作正常;当其中有1或2个开关跳开时,黄

37、灯亮,表示一般报警;当3个开关全跳开时,红灯亮,表示紧急报警。2、 实验目的 (1)进一步练习用isis绘制单片机电路图,用keil开发单片机程序。 (2)学会根据控制的逻辑关系归纳逻辑表达式,并在程序中实现该逻辑表达式。3、 实验步骤1.在proteus isis中设计硬件电路(1)选择电路元器件:单片机:at89c52。红、黄、绿等:traffic lights。开关:swspst。接地:ground(terminal模型中)。 (2)按图3-1所示画出原理图,保存在“d:mcuch3ex3-2”文件夹中。2.写出红、绿、黄三个灯的逻辑表达式绿灯:green=k1&k2&k3;/三个开关全

38、为1,亮绿灯。红灯:red=(k1|k2|k3);/三个开关全为0,亮红灯。黄灯:yellow=(green|red);/其与情况亮黄灯。图3-1开关监测报警控制电路图3.程序设计与调试(1)在keil中创建工程p3-1,保存在文件夹中,选择芯片atmel89c52。(2)设定工程属性,选中“生成hex文件”。(3)根据逻辑表达式编写源程序a3-1.asm,并加入到工程源程序组中。(4)构造目标程序,排除语法错误。(5)在keil中进行调试运行(单步、断点),排除逻辑错误,得到正确的目标程序p3-1.hex。4.电路和程序仿真运行在89c52的属性中设置“program file”为目标程序p

39、3-1.hex,进行仿真运行,验证系统功能。5思考若开关扩展到8个(或更多)即具有8个开关的电子表决器编程如何实现。实验四 分支程序设计与应用简单的温度控制一、实验要求根据p1口输入的温度值(这里用拨码开关模拟)等于、大于或小于预设温度pt,分别向p0口输出不同的控制信号(设输出0为有效信号)。p0口引脚分配如表4-1所示。电路图如图4-1所示。表4-1p0.7p0.6p0.5p0.4p0.3p0.2p0.1p0.0正常指示灯欠热指示灯欠热报警加热设备过热指示灯过热报警冷却设备二、 实验目的(1)学习利用条件转移和比较转移指令实现三分支程序。(2)进一步学习keil环境下程序的调试方法:单步,

40、断点,观察。图4-1简单的温度控制电路图三、实验步骤(1)画出硬件电路图,参照图4-1。(2)根据硬件电路(如图4-1所示)和p0口引脚分配(见表4-1),编写三分支程序a4-1.asm,实现:根据p1口拨码开关所输入的值与设定值的比较,分别控制不同的设备开和关(用p0口的led代表)。(3)在keil中分别使用单步、断点的方法跟踪调试程序,跟踪观察在不同输入值的情况下,分支程序运行的结果。(4)在proteus isis中设置89c52的属性“program file”为所生成的三分支目标程序,进行仿真运行,验证系统功能。实验五 用t0实现电子计数器功能1、 实验要求利用t0实现对外部脉冲信

41、号的计数。2、 实验目的(1)掌握t0定时/计数器工作方式和模式的设置方法。(2)掌握定时器的编程要点。(3)巩固掌握进制转换和显示子程序的调用方法。(4)熟悉keil uvision2设计基本步骤及其相应的设置。3、 实验步骤(1)工作过程分析:定时/计数器t0工作在计数方式,c/t=1。选择16位模式1,m1m0=01。启动定时/计数器,并在t0引脚上提供计数脉冲,对脉冲下降沿计数。程序不断读入th0、tl0的计数值,送入指定的内存单元。将计数值转换为十进制数,并调用显示子程序将计数结果显示在6位led上。(2)在keil集成开发环境下进行程序设计与构造。创建新的工程,设置工程属性写源程序

42、并将源程序加入源程序组。为了能调永现有的子程序或函数以简化程序设计,对汇编程序需要将sub.asm文件加入工程,并在程序中用“extrn code”指令声明;有关的子程序;对c51程序,需要将pub.c文件放到本工程文件夹下,并在程序中用语句“#include pub.c”包含构造工程,反复调试直到没有错误为止,生成.hexe文件。(3)进入keil的调试状态,观察计数器的工作。(4)在isis中仿照图5-1绘制电路图。 (5)将目标程序下载到单片机中,通过仿真运行,观察计数的显示结果。实验六 方波信号发生器1、 实验要求利用t1实现可编程的方波发生器。分别用定时器设计1khz(周期1ms)和

43、周期从2s到512s可调的方波信号发生器(设fosc=12mhz)。2、 实验目的(1)掌握定时器的编程要点:定时方式和工作模式、定时初值,启/停工作、溢出判断。(2)掌握isis中虚拟示波器的使用。图6-1 方波信号发生器电路图3、 实验步骤(1)在isis 中创建新设计,按图6-1画出电路原理图;在p3.0引脚接上示波器。(2)在keil中涉及程序:创建新的工程,设置工程属性,编写源程序并加入源程序组。构造工程,生成.hex文件。进入keil调试状态,调试程序,观察定时器的工作,验证程序的正确性。(3)电路和程序仿真:进入isis仿真状态,通过示波器观察波形测量方波周期。实验七 利用中断技

44、术实现前后台程序并行处理一、 实验要求(1)主程序(前台)完成电子评判功能,通过p0口控制流水灯,即根据三个开关的状态逻辑关系控制红、绿、黄灯的亮灭。(2)定时器t0中断程序(后台)实现秒计时功能并通过led更新显示。(3)外部中断int0(后台响应用户按钮操作)实现秒计时清0。二、实验目的(1)理解中断的概念和实现方法。(2)掌握中断程序的设计要点和关键步骤。(3)掌握定时/计数器与中断的综合应用。图7-1利用中断技术实现前后台程序并行处理三、实验步骤(1)在isis 中作出系统原理图(可将本章时钟和第3章的电子评判装置电路结合起来,参考图7-1)。(2)在keil中创建p7-1工程,编写程

45、序(可将本实验的时钟程序和实验3的电子评判程序结合,参考程序7-1),进行调试。(3)在isis中仿真或通过isis 与keil联合仿真。实验八 利用中断技术实现的数字时钟1、 实验要求(1)主程序实现数字时钟的进位计数和显示功能。(2)定时器t0中断程序实现秒定时基准。(3)外部中断int0和int1响应用户按钮操作,实现分和时的修改。2、 实验目的(1)进一步掌握中断程序的设计要点。(2)学习软硬件配合实现长时间定时的方法。(3)掌握多个中断源的优先级管理。3、 实验步骤(1)在isis 中作出系统原理图,参考图8-1.(2 ) 编写程序(可参见本实验的时钟程序6-1),进行调试。(3)在

46、isis中仿真或通过isis与keil联合仿真。 实验九 led显示和键盘的实现一、实验要求实现单片机的按键处理和多位led显示。二、 实验目的理解单片机系统中led 扫描显示和简单键盘的工作原理,能设计相应的电路,会通过调用子程序实现数据的显示和按键的处理。三、 实验步骤1.在proteus isis 中设计硬件电路(仿照图8-4)电路元器件的选择:单片机:at89c52。6位led:7seg-mpx6-cc-blue。led笔画段驱动电路:74hc573或74hc245。led位驱动电路:74hc14。按键:button。上拉电阻:5.1k。led限流电阻:300r-500r。接地:gro

47、und(通过terminal模型)。2. 编写具有按键处理和led显示功能的程序(参考9-1)(1)若使用汇编语言,将sub.asm加入工程,主程序中通过调用sub.asm中的子程序diskey实现按键识别和led扫描显示。元器件类别/子类别关键字单片机芯片at89c51micoprocessor ic/8051 family89c51红、黄、绿、蓝发光二极管ledoptoelectricsledred、yellow、green、blue10k电阻resistor10k100电阻100r22pf和10nf电容capacitor22pf和10nf单刀单掷开关switches & relaysws

48、pst按钮button8位拨码开关dipswc_8晶振miscellaneouscrystal(2)若采用c语言,包含pub.h,主函数中通过调用其中的函数stob()和diskey()实现bcd数拆送、按键识别led扫描显示。(3)在keil中构造、调试无误后生成目标层次。3.在isis 中仿真运行(1)将89c52的“program file”属性设置为上述目标程序。(2)启动电路仿真,操作按钮,观察程序运行结果。综合实训项目项目1:数字频率计的设计与实现基本要求:仿真实现11khz范围的脉冲信号频率测量,并通过led数码显示,扩展要求:1)可通过按钮或开关切换为毫秒级的周期测量和脉宽测量

49、;2)将该功能在实际的开发实验板上予以实现参考硬件电路参考汇编源程序/* 数字频率计a51源程序 */extrn code (d2buf6) ; 3字节数据拆为6字节写入显示缓冲区(外部子程序)extrn code (disp) ;显示子程序(外部子程序)extrn code (b2bcd) ;双字节十进制转换子程序(外部子程序)ms equ 5eh ;软计数单元buff equ 40h ;显示缓冲区低地址th equ 51h ;临时计数存储单元,高字节tl equ 50h ;临时计数存储单元,低字节bcda equ 53h ;secup bit 0 ; 软计数单元减为0,1s标志org 00

50、00h; 复位入口地址ljmp main ;t0中断服务程序入口org 000bh ljmp t0_int;主程序main:mov sp,#5fhsetb ea ;开中断setb et0 ;开t0中断mov ms,#20 ;软计数初值mov tmod,#51h ;t1计数, t0定时模式mov th0,#3ch ;定时初值mov tl0,#0b0h ;定时初值setb tr0 ;启动t0setb tr1 ;启动t1loop:jbc secup,convtmov r0,#buff ;指向显示缓冲区lcall disp ;调用外部显示子程序ljmp loopconvt:mov r1,#tlmov

51、r0,#bcda ;bcd送入缓冲区lcall b2bcd mov r0,#buff ;mov r1,#bcdalcall d2buf6ljmp loop/* t0中断服务程序 */t0_int:mov th0,#3ch ;恢复定时初值高位mov tl0,#0b0h ;恢复定时初值djnz ms, t0end ;20次clr tr1 ; 暂停计数mov th,th1 ; 读入t1计数单元mov tl,tl1 mov th1,#00h ; 清计数单元,准备下1s计数mov tl1,#00hsetb tr1; 重新启动计数mov ms,#20 ; 恢复软计数初值setb secup; 建立标志t0

52、end:reti ;中断返回end- 41 -安徽工商职业学院项目2:程序控制方波信号发生器基本要求:仿真实现输出周期为毫秒级的方波信号,周期可通过按键设置并通过led数码显示。通过虚拟示波器观察波形。扩展要求:1)可通过按键设定并通过led显示输出信号的占空比;2)将该功能在实际的开发实验板上予以实现。参考硬件电路:项目3:数字时钟与作息时间自动控制器基本要求:仿真实现实现数字时钟的时分秒显示,并可通过按钮进行时间调整;扩展要求:1)到达作息时间表中设定的时间时,输出相应的开关量控制信号;2)将该功能在实际的开发实验板上予以实现。参考硬件电路:项目4:模拟量采集控制装置基本要求:仿真实现模拟

53、量(温度、电压等)的采集和显示,并根据设定值进行简单的开关量控制;扩展要求:1)将采集到的数据进行存储,并定时通过串口传输到pc机;2)将该功能在实际的开发实验板上予以实现。参考硬件电路项目5:汉字led点阵显示基本要求:仿真实现2-4个8*8 led点阵的汉字显示。扩展要求:1)实现2-4个8*8 led点阵的汉字滚动显示;2)将该功能在实际的开发实验板上,外接led点阵予以实现。参考硬件电路参考汇编源程序org 0000hstart:mov r3,#0;取字模点阵列计数器mov scon,#00h ;串口方式0,移位寄存器mov dptr,#tab ;汉字点阵码表nextcol:mov a,r3 ;第一字的r3列call sout;取字模点阵,串行移位输出mov a,r3add a,#8;第二字的r3列call sout;取字模点阵,串行移位输出mov a,r3add a,#16;第三字的r3列call sout;取字模点阵,串行移位输出mov a,r3add a

温馨提示

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

评论

0/150

提交评论