单片机实验指导书.docx

上传人:b****6 文档编号:6592136 上传时间:2023-01-08 格式:DOCX 页数:24 大小:226.34KB
下载 相关 举报
单片机实验指导书.docx_第1页
第1页 / 共24页
单片机实验指导书.docx_第2页
第2页 / 共24页
单片机实验指导书.docx_第3页
第3页 / 共24页
单片机实验指导书.docx_第4页
第4页 / 共24页
单片机实验指导书.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

单片机实验指导书.docx

《单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书.docx(24页珍藏版)》请在冰豆网上搜索。

单片机实验指导书.docx

单片机实验指导书

§4单片机应用系统实验

§4.1软件实验(使用软件仿真设置)

软件实验一数据传送实验

一、实验内容:

1.编写程序,将内部RAM中30H-5FH中的数据设置为55H。

2.编写程序,将内部RAM中30H-5FH中的内容传送到90H开始的内部RAM中去。

3.编写程序,将内部RAM中30H-5FH中的内容传送到200H开始的外部RAM中去(注意实际系统中为扩展的内部RAM)。

二、实验目的与要求:

1.学习与掌握针对不同区域RAM的操作方法。

2.学习与掌握指针的使用与循环程序的编写方法。

3.学习与掌握如何查看各个部分存储器的内容。

三、实验说明:

对于不同区域的RAM操作需要使用不同的寻址方式与指令。

对于内部RAM的低128字节,可以使用直接寻址也可以使用间接寻址;对于内部RAM的高128字节,只能使用间接寻址;对于外部RAM,只能使用指针DPTR进行间接寻址。

对于数据块的操作一般使用循环程序完成。

编写程序并编译(build)检查语法错误。

编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并检查RAM内容是否正确。

注意主程序的最后应该加一条SJMP$指令,以避免由于连续执行时无法停机而造成无法预料的后果。

四、实验程序流程图:

 

五、思考题:

如果源与目的数据块

均为外部RAM,应该如何编程?

软件实验二数据分类与校验实验

一、实验内容:

1.编写程序,将内部RAM中30H-5FH中的数据设置为1-48。

2.编写程序,将内部RAM中30H-5FH中的奇数传送到90H开始的内部RAM中去。

3.编写程序,将内部RAM中30H-5FH中的数据按照奇校验设置最高位。

二、实验目的与要求:

1.学习与掌握判断数据奇偶性的方法。

2.学习与掌握分支程序的编写方法。

3.学习与掌握如何给存储器中的数据增加校验位。

三、实验说明:

汇编语言中判断数据的奇偶性很简单,数据的最低位为1为奇数,否则为偶数。

分支处理是程序设计中的基本技巧,是根据某一条件是否成立执行或不执行规定操作的方法。

数据的奇偶校验不是判断数据的奇偶性,而是判断数据中有奇数个1还是偶数个1。

如果是奇校验,则增加校验位后的数据应该具有奇数个1。

编写程序并编译(build)检查语法错误。

编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并检查RAM内容是否正确。

四、实验程序流程图:

(传送奇数)

 

Y

 

N

 

五、思考题:

1.如果只传送正数或负数应该如何编程?

2.如果只传送大于某个规定数值的数据应该如何编程?

软件实验三简单算术运算实验

一、实验内容:

1.编写程序,计算Z=X+Y+30。

X、Y为位于内部RAM30H、31H单元的单字节BCD变量。

Z位于32H33H,高位放低地址。

2.编写程序,计算Z=X*10+Y/5-10。

X、Y为位于内部RAM30H、31H单元的单字节变量,Z位于32H33H,高位放低地址。

3.编写程序,计算1~100的累加和。

结果存放于内部RAM的30H、31H中。

高位放低地址。

二、实验目的与要求:

1.学习与掌握算术运算指令的使用方法。

2.学习与掌握BCD数据运算的处理方法。

3.学习与掌握多字节数据的运算方法。

三、实验说明:

MCS-51单片机的算术运算指令比较简单,因此功能也比较差。

所有的算术运算必须使用累加器进行。

如果数据和运算结果都是8位,则处理要简单得多。

如果数据和结果高于8位,则必须做多字节运算的处理。

应该使用不同的数据对程序进行检验。

在第一个程序中,可分别令X=10、Y=20和X=100、Y=200。

在第二个程序中,可分别令X=10、Y=30和X=100、Y=200。

编写程序并编译(build)检查语法错误。

编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并检查RAM内容是否正确。

四、实验程序流程图:

(数据累加)

 

N

 

五、思考题:

1.如果X、Y均为两字节的变量,应该如何编程?

2.BCD运算结果为负数时(如-1),其读数是多少?

软件实验四定点数算术运算实验

一、实验内容:

1.编写4字节加法和减法子程序。

加数与被加数由指针R0和R1定位。

结果存放于固定的内部RAM地址RESULT。

2.编写2字节乘2字节子程序。

乘数位于R2R3,被乘数位于R4R5。

结果存放于R4R5R6R7内。

3.编写2字节除以2字节子程序。

除数位于R2R3,被除数位于R4R5。

结果存放于R4R5,余数存放于R6R7内。

二、实验目的与要求:

1.学习与掌握常用基本子程序的编写方法。

2.学习与掌握多字节算术运算程序的编写方法。

3.学习与掌握主程序调用子程序的方法。

三、实验说明:

将常用的基本子程序编写出来,以后直接调用,可以提高编程的效率。

商业软件中都提供这些基本子程序库,自己编写可以进一步了解其功能与使用方法。

多字节的加减法程序比较容易编写,只是要注意进位问题。

多字节乘法可以利用单字节乘法来实现,有关教材中已经有所介绍。

多字节除法不能用单字节除法实现,只能用移位相减的方法实现。

进行除法前必须进行除0检验。

编译通过后进入调试环境,单步执行程序并检查程序的正确性。

最后连续执行程序并检查RAM中运算是否正确。

应该多使用几组数据进行检验,以确保程序的正确性。

四、实验程序流程图:

(多字节除法)

 

Y

 

N

 

五、思考题:

1.N字节乘以M字节的运算结果应该为几个字节?

2.如何编写4字节除以2字节的算术运算程序?

软件实验五逻辑运算实验

一、实验内容:

1.编写程序,计算Z=X∧Y、Z=X∨Y和Z=X⊕Y。

X、Y、Z为位于内部RAM中30H、31H和32H中的字节变量。

2.编写程序,计算Z=X∨Y⊕F0。

X、Y、Z为位于内部RAM中20H中的位变量。

F0为位于PSW中的位变量。

3.利用移位指令完成Y=X*10的运算,结果为单字节。

二、实验目的与要求:

1.学习与掌握逻辑运算指令的使用方法。

2.学习与掌握位运算指令的使用方法。

3.学习利用移位指令进行算术运算的方法。

三、实验说明:

逻辑运算指令有3种,一般情况下也需要使用累加器进行处理。

位操作指令是MCS-51单片机的一个特色。

所有的位操作必须使用进位位进行。

要特别注意SFR中的位操作有些属于“读-修改-写”的类型。

编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并检查RAM内容是否正确。

有关位的内容也可以输出到P1口直接观看结果。

四、实验程序流程图:

(计算X*10)

 

五、思考题:

1.有什么简单的办法计算一个多字节数据除以256的结果?

2.如果Y=X*16的运算结果为双字节,如何编程?

软件实验六数制转换实验

一、实验内容:

1.编写程序,将内部RAM中30H中的二进制数据转换为十进制数据并存放在31H(百)、32H(十)、33H(个)中。

2.编写程序,将内部RAM中30H-3FH中的16进制数据(0-F)转换为ASCII码并存放在40H-4FH中。

3.编写程序,将内部RAM中30H31H中的双字节二进制数据转换为十进制BCD码并存放在40H开始的单元中。

二、实验目的与要求:

1.学习与掌握基本的数制转换程序的编写方法。

2.学习与掌握ASCII码数据的处理方法。

3.学习与掌握多字节二进制数据的转换方法。

三、实验说明:

数据在各种不同数制与编码之间的转换是经常要使用的处理过程。

不同数制之间的转换有多种方法,也有一定的技巧,可以参考教材中的程序例子。

应该使用不同的数据对程序进行检验。

在第一个程序中,可以令所转换的数据为10,99,250。

在第二个程序中,应该令数据为0-15。

在第三个程序中,可以令所转换的数据为10,255,2000,65535等。

程序编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并检查RAM中的转换结果是否正确。

四、实验程序流程图:

(二进制到十进制数据转换)

 

五、思考题:

1.二进制数据转换为十进制数据还有其它方法吗?

2.多位十进制ASC码如何转换为数字?

软件实验七数据统计实验

一、实验内容:

1.编写程序,首先将内部RAM中30H-7FH中的数据设置为50-9FH。

然后编写程序统计该数据区内大于80H的个数,结果存放在寄存器B中。

2.编写程序,统计该数据区内的奇数个数和正数个数,并存放在R6、R7中。

3.编写程序,找出该数据区内作为无符号数据的最大值和最小值。

二、实验目的与要求:

1.学习与掌握数据统计程序的基本技巧与编写方法。

2.学习与掌握如何区分数据的符号。

3.学习与掌握如何在数据区内寻找最大值和最小值。

三、实验说明:

MCS-51单片机没有数据比较指令,比较数据的大小只能用减法指令。

单字节数据的比较可以使用CJNE指令。

要特别注意对于有符号数和无符号数的处理方法是不一样的。

在计算机中一般均采用补码表示数据。

汇编语言中判断数据的符号很简单,数据的最高位为1为负数,否则为正数。

程序编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并检查RAM中的内容及对应的统计结果是否正确。

四、实验程序流程图:

(寻找最大值)

 

Y

 

N

 

五、思考题:

1.数据为无符号数和有符号时的程序编写有何不同?

2.如何统计数据区中某一个数字出现的次数(例如0)?

软件实验八数据排序实验

一、实验内容:

1.编写程序,首先将内部RAM中30H-5FH中的数据设置为随机数值。

然后编写程序将该数据区内的数据按从小到大的顺序排序。

2.编写程序将该数据区内的数据按从大到小的顺序排序。

3.编写程序将该数据区内的数据按正数和负数分别排序。

二、实验目的与要求:

1.学习与掌握数据排序程序的基本技巧与编写方法。

2.学习与掌握如何进行复杂数据的处理。

三、实验说明:

数据排序是经常使用的数据处理过程。

数据排序有几种不同的方法,单片机中常用的方法是冒泡排序法。

其原理和程序可以参考有关教材和书籍。

按正数和负数分别排序时可以先分类,再排序。

也可以直接进行插入排序。

程序编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并检查排序结果是否正确。

四、实验程序流程图:

(简化的冒泡排序)

 

Y

 

N

 

N

 

五、思考题:

1.对于双字节数据排序,应该如何处理?

2.尝试使用其它排序方法编写程序。

软件实验九查表与程序散转实验

一、实验内容:

1.编写程序,用查表的方法计算X的平方(X为单字节数据)。

2.编写程序,用查表的方法计算X的立方(X为单字节数据)。

3.编写程序,根据A中的内容(1-5)分别执行不同的程序(程序入口分别为PR1,PR2,PR3,PR4,PR5)。

二、实验目的与要求:

1.学习与掌握查表程序的编写方法。

2.学习与掌握分支程序的编写方法。

三、实验说明:

查表程序一般需要使用指针DPTR实现,有关程序可以参考教材中的例子。

可以将查表计算程序作为一个子程序编写,然后由主程序进行调用。

编写程序时需要注意X平方和立方需要多个字节才能容纳。

散转程序的编写需要一定的技巧,具体可以参考教材中的例子。

散转也可以用多重分支的方法实现,但这样做的效率要低一些。

程序编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序检查运算结果是否正确,通过设置断点检查散转结果是否正确。

四、实验程序流程图:

(计算X的平方)

 

五、思考题:

1.尝试编写Y=LgX的程序。

2.查表程序还能用来做什么?

软件实验十数字滤波实验

一、实验内容:

1.编写程序,计算Yi+1=a×Yi+b×Xi。

其中a、b为常数,Xi为一个采样数据队列。

可以用30H-3FH中的数据来代替。

2.编写程序,对30H-7FH中的数据进行5次采样中值滤波。

结果存放在30H开始的单元中。

二、实验目的与要求:

1.学习与掌握软件滤波程序的基本技巧与编写方法。

2.进一步学习与掌握基本数据处理程序的编写方法。

三、实验说明:

各种数据处理方法均有多种相应的程序,可以参考教材和有关的书籍。

用汇编语言编写这类程序虽然比较复杂,但是编得好可以提高程序的效率。

程序编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并检查RAM内容是否与事先计算的结果吻合。

应该使用几组不同的数据进行检验。

四、实验程序流程图:

(5次采样中值滤波)

 

N

 

五、思考题:

1.尝试编写去极值滤波的程序。

2.软件滤波程序的作用是什么?

§4.2硬件实验(须使用硬件仿真设置)

硬件实验一P3口输出控制实验

一、实验内容:

1.编写程序,使P3.5端口输出周期为1秒的方波信号。

并通过三极管驱动一个直流小喇叭,使其发出断续的鸣响。

2.改变程序中的延时时间,使喇叭发出不均匀间隔的鸣响。

二、实验目的与要求:

1.学习与掌握对单片机单个端口进行控制的方法。

2.学习与掌握软件延时程序的编写方法与软件延时时间的计算方法。

三、实验说明:

本实验所使用的喇叭为直流驱动。

当P3.5端口输出高电平时,PNP三极管截止,喇叭不响。

当端口输出低电平时,PNP三极管导通,喇叭鸣响。

通过改变程序的延时时间,可以控制喇叭的鸣响时间。

单片机执行一条指令的周期数可以查指令表得到;一个机器周期等于12个时钟周期。

一段程序的执行时间是所有指令执行时间的总和。

为了减少程序长度,通常采用多重循环结构实现软件延时。

可以参考教材中的例子。

编写程序并设置为硬件仿真调试,正确连接实验装置。

编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序检查延时时间是否正确。

四、实验程序流程图:

 

五、思考题:

1.采用PNP三极管与NPN三极管作为喇叭驱动电路有何不同?

2.延时程序的作用是什么?

如何实现可变的延时?

硬件实验二P1口输出控制实验

一、实验内容:

1.编写程序,使P1各个端口轮流输出低电平。

从而驱动连接在该端口上的LED指示灯轮流点亮。

2.改变程序中的延时时间,使LED指示灯不均匀的点亮。

3.改变LED指示灯的点亮组合与次序,使其产生类似彩灯的艺术效果(例如,先由低到高循环点亮,再按照相反的循序点亮;同时由两侧向中间循环点亮,再按照相反的循序由中间向两边循环点亮;间隔循环点亮等)。

二、实验目的与要求:

1.学习与掌握对P1端口进行整体控制的方法。

2.进一步掌握软件延时程序的编写方法。

3.掌握复杂组合输出程序的编写方法。

三、实验说明:

根据本实验电路的设计,当P1端口输出为低电平时,相应的LED指示灯点亮。

通过适当配置输出P1口的数据,可以使不同的LED指示灯点亮,从而达到所希望的效果。

LED状态持续时间可由软件延时来控制。

对于循环点亮LED指示灯的程序,可以利用循环移位指令来实现。

有规则的数据变化,可以利用一定的算法实现。

编写程序并设置为硬件仿真调试,正确连接实验装置。

编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序检查运行效果。

四、实验程序流程图:

(循环点亮LED指示灯)

 

五、思考题:

1.能否将P1口的内容读入再改变其状态输出?

2.如何确定软件延时程序的最长延时时间?

硬件实验三定时器应用实验

一、实验内容:

1.编写程序,利用定时器(方式一)使P3.5端口输出周期为1秒的方波信号。

从而驱动连接在该端口三极管上的喇叭,使其发出断续的鸣响。

2.编写程序,利用定时器(方式一)使P1各个端口轮流输出低电平。

从而驱动连接在该端口上的LED指示灯轮流点亮。

3.编写程序,利用定时器(方式二)实现上述功能。

二、实验目的与要求:

1.学习与掌握单片机上定时器的基本使用方法。

2.进一步掌握单片机定时器的各种工作方式。

三、实验说明:

MCS-51单片机的定时器是一个基本的计数器单元,有三种工作方式。

常用的是方式一和方式二。

由于只有16位字长,因此最大计数值为65535。

最大定时时间为65535×时钟周期×12。

如果定时时间超过这个最大值,就需要采用对定时时间再进行计数的方法。

方式一只能单次定时,方式二能够自动重复定时,但是最大计数值仅为255。

程序开始需要进行定时器的初始化,然后通过查询标志等待定时时间到达。

定时时间到达后再进行相应的处理。

注意处理完成后必须清除定时到达的标志位。

编写程序并编译通过后进入调试环境,单步或设置断点执行程序检查程序的正确性。

最后连续执行程序检查定时时间是否正确。

四、实验程序流程图:

(循环点亮LED指示灯)

 

N

 

五、思考题:

1.定时器的最长定时时间如何计算?

如果不够长怎么办?

2.使用软件延时与使用定时器各有何优点和缺点?

硬件实验四LED数码管显示实验

一、实验内容:

1.编写程序,在实验板的LED上轮流显示数字0000-9999。

2.编写程序,在实验板的LED上轮流显示0000-FFFF。

3.编写程序,在实验板上LED上增量显示000-255(每次加1)。

二、实验目的与要求:

1.学习与掌握在LED数码管上显示数字的方法。

2.进一步掌握在LED数码管上显示部分字母与符号的方法。

三、实验说明:

LED数码管可以有几种驱动方法,实验板上的LED数码管是由8锁存器74HC373驱动的。

因此具体的显示内容要根据实际的连接确定。

为了确定实际连接,可以向锁存器输出只含有1个1的数据(01H、02H、04H、08H、10H、20H、40H、80H),然后观察数码管哪一段点亮。

将结果进行综合就可以确定每个数字或字母所对应的字模了。

小数点可以先不点亮。

实验板上的LED数码管通过译码电路进行连接,因此每个LED数码管都有一个地址(分别为8000H、8100H、8200H、8300H)。

在编写程序时使用MOVX指令对其进行写操作,读操作没有意义。

编写程序并编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序检查是否满足所要求的功能。

四、实验程序流程图:

(轮流显示0000-9999)

 

 

五、思考题:

1.共阳极LED与共阴极LED的显示有什么不同?

2.查找一个数字的字模有几种方法?

硬件实验五计数器应用实验

一、实验内容:

1.编写程序,利用单片机上的定时器/计数器测量外部输入信号的频率。

2.对所编写的程序进行修改,提高频率测量的精度。

二、实验目的与要求:

1.进一步掌握单片机上定时器/计数器的使用方法。

2.学习掌握频率测量的方法及提高测量精度的方法。

三、实验说明:

实验板上有一个由555电路制作的频率发生器,调整电位器可以改变其输出频率。

输出频率经过分频后送入单片机的T0引脚。

MCS-51单片机有两个定时器/计数器。

利用其中一个作为定时器,另外一个作为计数器,在单位时间内对来自外部的脉冲进行计数,就能够实现频率计的功能。

程序开始需要进行定时器和计数器的初始化,然后等待定时时间到达。

定时时间到达后再读出计数器的计数值,然后利用实验四的显示程序将计数值显示出来。

注意读出计数值后应该将计数值清零,以便重新开始计数。

频率的测量有两种基本方法,一种是刚才介绍的计数法,另外一种是周期法,即测量脉冲的周期,再将周期换算为频率。

计数法适合高频信号测量,而周期法适合低频信号测量。

如果能将两者结合起来,就能提高频率测量的精度。

编写程序并编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序并用万用表检查测量显示结果是否正确。

四、实验程序流程图:

(计数法测量频率)

 

N

 

五、思考题:

1.利用定时器/计数器测量的最高频率是多少?

2.利用定时器/计数器测量频率的误差如何计算?

硬件实验六定时中断实验

一、实验内容:

1.编写程序,利用定时器中断使P3.5端口输出周期为1秒的方波信号。

从而驱动连接在该端口后面三极管上的喇叭,使其发出断续的鸣响。

2.编写程序,利用定时器中断使P1各个端口轮流输出低电平。

从而驱动连接在该端口上的LED指示灯轮流点亮。

二、实验目的与要求:

1.学习与掌握中断程序的编写方法。

2.进一步掌握单片机定时器中断的应用。

三、实验说明:

具有中断的应用程序分为两个独立的部分:

主程序和中断服务程序。

每个中断服务程序的入口地址是固的不变的,两个定时器/计数器的中断服务程序入口地址分别位于0BH和1BH。

主程序开始需要进行定时器和中断的初始化、设置堆栈并开放中断,然后即可执行其它的操作。

如果没有其它操作则就地等待。

定时时间到达后CPU会自动进入中断服务程序,中断服务程序的结尾必须是中断返回指令。

注意中断返回前必须清除中断申请的标志位,否则在返回主程序后会立即重新进入中断。

一般情况下中断服务程序中需要保护和恢复现场,但是如果主程序与中断服务程序之间无冲突(例如主程序原地等待),则可以省略这一步骤。

编写程序并编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序检查运行结果是否正确。

四、实验程序流程图:

 

五、思考题:

1.还可以利用定时器中断做什么?

2.为什么要设置堆栈?

什么情况下可以不保护现场?

硬件实验七外部中断实验

一、实验内容:

1.编写中断应用程序,主程序使P1各个端口轮流输出低电平。

当连接在INT0上的按键按下时,进入中断清除显示并延时2秒后返回。

2.编写中断应用程序,主程序在实验板LED上逐个显示000-255。

当连接在INT0上的按键按下时,进入中断并关闭显示、使喇叭鸣响并延时2秒后返回。

二、实验目的与要求:

1.进一步掌握中断程序的编写方法。

2.进一步掌握外部中断的应用与触发方式。

三、实验说明:

外部中断有两种触发方式:

边沿触发与电平触发。

采用不同的触发方式会有不同的效果,需要根据具体要求选择触发方式。

本实验的中断服务程序中需要保护和恢复现场,因此必须设置堆栈并在中断服务程序中编写入栈与出栈的程序。

如果编写错误,用正常的调试手段(单步、断点)一般无法检查出来。

编写程序并编译通过后进入调试环境,单步执行程序检查程序的正确性。

最后连续执行程序检查结果是否正确。

四、实验程序流程图:

(P1口输出显示)

 

五、思考题:

1.如何设置堆栈空间的大小?

2.如果既有定时器中断,又有外部中断,应该如何编写程序?

硬件实验八D/A输出实验

一、实验内容:

1.编写程序,通过实验板上的DAC0832输出一个频率为10Hz的锯齿波。

2.编写程序,通过实验板上的DAC0832输出一个频率为10Hz的正弦波。

3.编写程序,通过连接在INT0端口上的按键,使实验板上的DAC0832输出不同的电压。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1