I《单片机原理》实验指导书张毅刚何谨孙震哈尔滨工业大学2005年4月II目录序-------------------------------------------------------------------------------------------------------------1实验1单片机实验开发系统操作实验-------------------------------------2实验2单片机数据区传送程序设计-----------------------------------------4实验3数据排序实验---------------------------------------------------------------------6实验4查找相同数个数-----------------------------------------------------------------8实验5P1口转弯灯实验--------------------------------------------------------------10实验6工业顺序控制--------------------------------------------------------------------13实验78255控制交通灯--------------------------------------------------------------16实验8A/D转换实验---------------------------------------------------------------------19实验9D/A转换实验---------------------------------------------------------------------22实验10电子时钟(定时器、中断综合实验)--------------------26附录1DAIS-80958B单片机实验开发系统简介-------------------36附录2实验开发系统的字形/字位/键值表---------------------------371序一、实验素养和一般知识1.实验前准备工作(1)明确实验目的、熟悉实验内容、掌握实验步骤、了解所用单片机实验开发系统及仪器设备的性能。(2)做好实验前预习和必要的准备(先编好程序),作到有的放矢。2.进入实验室后(1)熟悉所用的单片机实验开发系统及仪器设备,了解其外观、性能。(2)接线要简单、正确、明了,一个人接线,另一个人检查,经老师复查后允许后才可通电。(3)通电瞬间,应注意仪器是否正常工作,不要只看开关,如有不正常现象,应立即断电找出原因。(4)不允许自带光盘和软盘上机,违反者取消实验资格!(指导教师允许情况除外)。3.实验进行时(1)正常请况下,按规定步骤进行,读取数据,并及时纪录。(2)各种操作要有目的进行,不可盲动。(3)实验完后,经老师察看或签字,并把仪器、导线、工具清理、收拾完毕后,学生签到方可离开实验室。二、实验报告内容和要求1.实验报告要用学校统一的纸。2.实验内容应包括,是实验目的、设备、原理、步骤简述、原始数据、结果和分析以及程序清单等。3.每个实验后的思考题必须完成。4.对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。2实验1单片机实验开发系统操作实验一、实验目的和要求1.掌握汇编语言的设计和调试。2.熟悉Dais-80958B微机实验开发系统调试软件的应用。二、实验设备1.Dais-80958B单片机实验开发系统一套2.WD990微机专用电源一台3.PC机一套三、实验线路及使用仪器1.实验连接图Dais-80958B单片机实验开发系统与PC机的连接如下图所示。2.Dais-80958B单片机开发系统组成及功能单片机实验开发系统自带32个键的键盘和6位LED数码管。系统有两种工作方式:独立运行的单板机工作方式以及与PC通过串行口相连的串行监控工作方式。(1)独立运行的样板机工作方式无需任何设备,利用开发系统上的单片机、监控程序、键盘和LED数码管,自构成一台样板机独立运行。(2)串行监控工作方式通过RS-232C串行口与PC机的串行口相连,以PC机为操作平台,配合系统操作软件,适用于PC机的系统编程和调试界面。实验开发系统提供以Windows98操作平台的在线仿真调试软件包。支持汇编语言(ASM51)及高级语言(PL/M51、C51)源程序级及反汇编窗口式调试环境,该仿真软件具有:编辑、汇编、连接、反汇编、开观察窗口、单点跟踪、设置断点、全速/非全速运行、系统设置、程序固化等功能,具有查看SFR、内部RAM、外部RAM等选项。四、实验开发系统的使用PC机串口2Dais-80958B单片机开发系统··PC机+5V·电源主机板32键键盘LED显示器31.按实验线路接好线后,检查无误在指导教师允许下才可通电。先打开电源+5V,主机板上的六位LED显示器最左边一位出现提示符“P”,表明系统正常。否则应立即关掉电源!!!2.80958B主机板通电后,不允许在上面放置任何物品,特别是金属物!(因集成芯片或线路引起短路损坏设备)。五、实验步骤1.Dais-80958B接好线后,电源线红色接+5V,黑色接地。先打开电源,出现提示符“P”,表明该系统工作正常。2.打开PC机电源,正常工作后,在显示器的桌面上点击快捷图标“MCS-51仿真开发系统“,进入Dais-MCS-51仿真开发系统的调试平台。3.源文件的建立和打开:(1)选菜单栏文件/新文件或者工具栏新文件,出现源文件编辑窗口,输入程序S1。(2)选文件/存储(或另存),要求输入文件名,同时保存类型选*.asm。文件名按下面要求写:1P26S1一班学号文件名保存路经为:D盘,然后单击保存即可。(3)编译源文件,选菜单栏/编译、连接、装载或者工具栏“!”,弹出“装载完毕OK”,根据编译结果的错误提示,修正源程序S1,直至成功。此时可以关闭“编译结果”和源文件编辑窗口。(4)出现“当前模块:1P26S1”,同时打开菜单栏视图/调试、寄存器、存储空间,然后可以选主菜单/窗口或者工具栏/XX窗口;整理平台视野。4.调试和运行程序S1(1)“当前模块:1P26S1”中“小手光标”位置是PC指针所在,“寄存器”中显示当前各寄存器中的内容。“数据存储区”中地址用右键选显示地址,“输入数据”为十六进制2000,确认后调试。(2)首先单步运行,选主菜单/调试/单步运行或者选工具栏单步运(F7)。运行一个循环,观察相关的寄存器和存储区的变化。(3)运用连续运行和设断点运行。工具栏/为连续运行,在“当前模块”中鼠标出现“小手”时点击,“红色手”即为断点位置。5.记录下数据区2000H~20FFH中,在执行程序S1前后的内容变化。六、实验内容程序S1的参考程序如下:4机器代码汇编语言注释ORG0000H7800SE01:MOVR0,#00H;902000MOVDPTR,#2000H;E4L001:CLRA;F0MOVX@DPTR,A;A3INCDPTR;08INCR0;B800F9CJNER0,#00H,L001;80FELOOP:SJMPLOOP;END七、思考题1.程序S1的功能是什么?画出S1程序框图,并写出注释。2.把2000H~20FFH中内容改成FF,如何修改程序S1?3.把3000H~20FFH中内容改成AA,如何修改程序S1?4.程序S1中指令:“CJNER0,#00H,L001”的作用是什么?实验2单片机数据区传送程序设计一、实验目的1.进一步掌握汇编语言程序设计和调试方法。2.了解单片机RAM中的数据操作。二、实验设备1.Dais-80958B单片机实验开发系统一套2.WD990微机专用电源一台3.PC机一套三、实验线路同实验1。四、实验内容1.要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。2.框图如下,文件名为:XXXXS2班级学号5五、实验步骤1.打开电源,PC机开机正常工作后,进MCS-51仿真开发系统调试平台,编译源文件S2成功。(详细过程同实验1的步骤1~3)2.在R2、R3中输入源地址(例如:0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如:1FFFH)。3.查看RAM区0000~1FFFH和2000~3FFFH内容,也可自己重新赋值。4.运行程序XXXXS2,首先单步,然后用自动单步,最后用连续运行方式。5.记录下运行结果,检查0000~1FFFH中内容是否和2000~3FFFH内容完全一致。六、要求1.写出自己编写的程序,并写出原理性注释。2.将检查程序运行的结果,分析一下是否正确。七、思考题如果使0000~1000H中内容与2000~3000H内容完全一致,如何来改写程序?八、参考程序ORG0100H8B82SE22:MOVDPL,R38A83MOVDPH,R2;建立源程序首址源地址内容送A(A)送目的的地址源地址加1目的地址加1字节数到吗?N结束开始y6E0MOVXA,@DPTR;取数8D82MOVDPL,R58C83MOVDPH,R4;目的地首址F0MOVX@DPTR.A;传送BBFF01CJNER3,#OFFH,LO420AINCR20BLO42:INCR3;源地址加1BDFF01CJNER5,#0FFH,L043OCINCR4ODLO43:INCR5;目的地址加1BF0006CJNER7,#00H,LO44BE0006CJNER6,#00H,LO45;字节数减180FESJMP$00NOP1FLO44:DECR780E0SJMPSE221FLO45:DECR71EDECR680DCSJMPSE22;未完继续END实验3数据排序实验一、实验目的熟悉MCS-51指令系统,掌握数据排序程序的设计方法。二、实验设备1.Dais-80958B微机实验开发系统一套2.WD990微机专用电源一台3.PC机一套三、实验线路同实验1。四、实验内容1.编写并调试一个排序程序,其功能为用冒泡法(参见单片机教材84页)将RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。程序框图如下:7五、实验步骤1.编写程序XXXXS3,满足程序要求,在CPU内部的RAM50H~5AH中放入不等的数据。2.运行该程序后检查50H~5AH内容是否按从小到大排列,结果记录下表中:RAM状态505152535455565758595A运行前内容运行后内容六、思考题修改程序S3,将50H~5AH中内容按从大到小排列,并且记录下程序运行前后的结果,分析是否正确。七、参考程序ORG0300H7B50QUE:MOVR3,#50HNY清标志位根据(R0)取数A(R0)+1送R0(A)((R0))?置标志位,交换内容长度减1=0?标志位=0?NYNN开始结束8EBQUE1:MOVA,R3;指针送R0F8MOVR0,A7F0AMOVR7,#0AH;长度送R7C200CLR00H;标志位为0E6MOVA,@R008QL2:INCR0FAMOVR2,AC3CLRC8622MOV22H,@R0;取后数B52201CJNEA,22H,QL3;相等吗?D3SETBCEAQL3:MOVA,R24006JCQL1;大于则交换位置D200SETB00HC6XCHA,@R018DECR0C6XCHA,@R008INCR0;大于则交换位置E6QL1:MOVA,@R0DFEBDJNZR7,QL22000E1JB00H,QUE1;一次循环中有交换继续80FESJMP$;无交换退出END实验4查找相同数个数一、实验目的熟悉汇编语言编程二、实验内容在2000~200FH中查出有几个字节是零,把零的个数放在2100H中。三、程序框图9四、实验步骤在2000~200FH的几个单元中填入零,运行本程序后检查2100H单元中的数是否与2