文档视界 最新最全的文档下载
当前位置:文档视界 › 单片机实验指导书

单片机实验指导书

单片机实验指导书
单片机实验指导书

单片机实验

2017年2月

单片机实验报告

(自动化XX级)

实验名称

学生

联系方式

学号

院系工学院电气与信息工程系专业自动化

指导教师

填写日期

实验一数据传送

一、实验目的

1.进一步熟悉仿真器的使用方法。

2.练习设计简单的程序。

3.掌握8051片RAM和片外RAM的数据传送方法,从而了解这两部分存贮器的特点。

二、实验容

将8051部RAM 40H~4FH置初值00H~0FH,然后将40H~4FH容传送到外部RAM的4800H~480FH,再将4800H~480FH传回部RAM的50H~5FH。设置断点B1、B2、B3每运行到断点时检查相应的CPU现场和存贮单元的容。

三、实验准备

1、认真阅读本实验指导。

2、读懂下面的程序:

#include

#include

char data *p40 ,*p50 ;

char xdata *p4800;

char i, j, k;

void main( )

{

p40=0x40;

p50=0x50;

p4800=0x4800;

for(i=0;i<16;i++)

{

*p40=i;

p40=p40+1;

}

//B1

p40=0x40;

for(j=0;j<16;j++)

{

*p4800=*p40;

p40=p40+1;

p4800=p4800+1;

}

// B2

p4800=0x4800;

for(k=0;k<16;k++)

{

*p50=*p4800;

p50=p50+1;

p4800=p4800+1;

} }

//B3

3、画出如下要测的数据表格:

四、实验步骤

1、向机器输入程序。

2、运行程序至第一个断点B1,检查40H~0FH单元容及指针p40的容。

3、运行程序至第二个断点B2,检查4800H~480FH单元容及指针p40,p4800的容。

4、运行程序至第三个断点B3,检查50H~5FH单元容及累加器及指针p50的容。

五、实验报告要求

1、写出C语言源程序和对应的汇编语言指令及注解的程序清单。

2、将测得的数据填入表格,并和理论分析的结果相比较。

3、说明8031CPU对部存贮器和外部扩展RAM存贮器各有哪些寻址方式?

4、如果要读外部程序存储器0x4800中的容,该如何访问?

5.实验心得。(必须)

实验一并行口

一、实验目的

通过实验了解8051并行口输入方式和输出方式的工作原理及编程方法。

二、实验容

1、输出实验

如图4-1所示。以8031的P2口为输出口。通过程序控制发光二极管的亮灭。

2、输入实验

如图4-1所示。以8031的P1口为输入口。用开关向P1.0~P1.3输入不同的状态,控制P2口P2.4~P2.7发光二极管的亮灭。

3、查询输入输出实验

如图1-1所示。以8051的P1.6或P1.0为输入位,以P2口为输出,二进制计数记录按键的次数。

图1-1

三、编程提示

1、输出实验程序

(1)设计一组显示花样,编程使得P2口按照设计的花样重复显示。

(2)为了便于观察,每一状态加入延时程序。

2、输入实验程序

开关打开,则输入为1;开关闭合,则输入为0。读取P1.0~ P1.3的状态,并将它们输出到P2.4~ P2.7,驱动发光二极管。所以发光二极管L1~L4的亮灭应与开关P1.0~ P1.3的设置相吻合。

3、查询输入输出程序

(1)编程计数P1.0按键次数,按键不去抖动。

(2)编程计数P1.6按键次数,按键不去抖动。

(3)编程计数P1.0按键次数,按键软件延时去抖动。

观察(1)、(2)、(3)、的结果。

四、实验器材

计算机,目标系统实验板

五、实验步骤

1、在KEILC中按要求编好程序,编译,软件调试,生成.HEX文件。

2、断开电源,按图1-1所示,连好开关及发光二极管电路。

3、下载程序。

4、调试运行程序,观察发光二极管状态。

六、实验报告要求

1、列出各实验的程序清单。

2、记录实验现象,并与理论分析结果相比较。

3.实验心得。(必须)

4.附能说明实验原理的实验照片。(必须)

实验三外部中断

一、实验目的

1、掌握单片机外部中断的原理及过程。

2、掌握单片机外部中断程序的设计方法。

3、掌握单片机外部中断时中断方式的选择方法。

二、实验容

如下图所示,P3.2设为输入, P2设为输出位,连有8个发光二极管D1~D8。每当发生外部中断时,发光二极管以向下流水灯的方式点亮。分别选择边沿触发外部中断放是和电平触发外部中断方式两种。

三、编程提示

1、P3口是8位准双向口,具有双重功能:

第一功能和P1口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:

P3.0 RXD 串行输入口

P3.1 TXD 串行输出口

P3.2 INT0 外部中断0请求输入线

P3.3 INT1 外部中断1请求输入线

P3.4 T0定时器/计数器T0外部计数器脉冲输入线

P3.5 T1定时器/计数器T1外部计数器脉冲输入线

P3.6 WR外部数据存贮器写脉冲输出线

P3.7 RD外部数据存贮器读脉冲输出线

2、各中断服务程序入口地址:

外部中断0 03H

定时器/计数器T1溢出中断 0BH

外部中断1 13H

定时器/计数器 1BH

串行口中断 23H

3、外部中断的产生条件

中断允许寄存器IE:

(1)外部中断源允许中断(中断0:EX0=1;中断1:EX1=1)。

(2)CPU开中断(EA=1)。

(3)外部中断方式CPU发出中断申请。

4、外部中断方式的选择

控制TCON:

IT0=1,后一方式IT0=0。

IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。前一方式IT1=1,后一方式IT1=0。

当8031复位后,TCON被清0。

5、外部中断电路

负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。边沿触发的最大优点在于不会丢失中断。只要中断请求负跳变的宽度大于1 个机器周期,单片机就能够采样到中断请求信号,单片机将采样到的信号琐存到中断请求标志寄存器中,硬件自动置IE0为1,即使单片机暂时不响应,这个标志也不会丢失,只有在外部中断响应之后,硬件才将IE0清除。

低电平触发的外部中断与边沿触发的外部中断,其中断过程基本相似。唯一不同在于中断请求信号的保持与撤消。在边沿触发中,单片机TCON寄存器专门有一位作它的请求标志,当负跳变后,单片机将中断请求标志IE1(INT1中断为IE1,INT0中断为IE0)自动置1,由IE1请求中断,在响应中断时,又由单片机自动清除IE1。但是对于电平触发方式,单片机中没有专门的请求标志,响应中断时也不能自动清除请求信号。在实际应用中,常常是在单片机外增加一个触发器作为中断请求标志,当中断请求发生时置触发器为0,使INT1为低电平,在单片机响应这个中断后,利用软件(占用另一根I/O 线,例如P3.1)发出复位脉冲,使该触发器置1,撤消中断请求。这种电路使请求中断的低电平能够保持足够的时间,一直到中断发生为止,因而不会丢失中断请求。低电平的时间又不致太长,只要进入中断服务程序,在返回之前,就撤消请求信号,因而也不会产生多余的中断动作。

四、实验器材

仿真器、目标系统实验板、直流电源

五、实验步骤

1、边沿触发式外部中断0实验

(1) P3.2设为边沿触发方式,连接外部复位开关,编程使每次中断流水灯向下移位一次,中

断程序中不延时去抖动,观察结果。

(2)P3.2设为边沿触发方式,连接外部复位开关,编程使每次中断流水灯向下移位一次,中断程序中采用延时去抖动,观察结果。

(3)P3.3设为边沿触发方式,连接外部RS触发器硬件去抖动的开关,编程使每次中断流水灯向下移位一次,中断程序中不延时去抖动,观察结果。

2、电平触发式外部中断实验

P3.3设为电平触发方式,连接外部RS触发器硬件去抖动的开关,编程使每次中断流水灯向下移位一次,中断程序中不延时去抖动,观察结果。

六、实验报告要求

1、列出程序清单。说明边沿触发和电平触发两种方式中断响应的原理与区别。

2、说明实验观察到的现象,并与理论分析结果相比较。

3.实验心得。(必须)

4.附能说明实验原理的实验照片。(必须)

实验四定时器/计数器

一、实验目的

1、掌握定时器的工作原理、工作方式、计数与定时

2、掌握定时器的使用方法和程序设计方法。

二、实验容

如图所示,P1.7接有一个发光二极管,利用定时器控制它亮一秒灭一秒,周而复始。

三、编程提示

1、MCS-51单片机部有两个可编程的定时器T0和T1,T0由特殊功能寄存取器TL0和TH0构成。

T1由特殊功能寄存器TL1和TH1构成。有四种工作方式,即方式0、1、2、3(方式3仅对T0适用)。每种方式可以用于定时或计数。它们均由控制寄存器TMOD设定:低4位为T0的控制字,高4位为T1的控制字。

M1M0决定工作方式: M1M0=00时为方式0,M1M0=01时为方式1,M1M0=10时为方式2。M1M0=11时为方式3。

方式0:TL0(TL1)低5位和TH0(TH1)8位构成13位计数器。TH0(TH1)加1计数溢出时置1溢出中断标志TF0(TF1)。

方式1:TL0(TL1)8位和TH0(TH1)8位构成16位计数器。TH0(TH1)加1计数溢出时置1溢出中断标志TF0(TF1)。

方式2:TL0(TL1)作为8位计数器,TH0(TH1)作为常数缓冲器,当TL0(TL1)计数溢出时,在置1溢出中断标志TF0(TF1)的同时,将TH0(TH1)中的常数送入TL0(TL1),使TL0(TL1)从初值开始重新计数,构成初始常数自动装入的8位计数器。

方式3:T0分为两个独立的状态8位计数器TL0和TH0。TL0占用全部定时器T0的控制位,即C/ /T、GATE、TR0、TF0等。TH0对机器周期进行计数,并使用定时器T1的状态控制位,即TR1、TF1等。

C/ /T决定计数或定时:C/ /T=1为计数方式,C/ /T=0为定时方式。

计数方式:采用外部引脚(T0为P3.4,T1为P3.5)的输入脉冲作为计数脉冲,当T0(或T1)输入发生高到低的负跳变时,计数器加1。

定时方式:每个机器周期计数器加1,由于每个机器周期12个振荡周期,所以直数的速率是

振荡频率的1/12,从计数值便可求得计数的时间,所以称为定时方式。设振荡频率为6MHZ,则机器周期T=12/f=12/6=2us。

2、1秒的定时由定时器T0和T1联合完成。使T0工作在定时方式,T1工作在计数方式。将T0

的定时时间定为100ms,当定时时间到后,P1.0输出反相加到T1脚(P3.5)。P1.0初始化为1,第一个100ms时间到时,将P1.0取反变为0,使加在T1的脉冲为正,第二个100ms时间到时,又将P1.0取反变为1,使加在T1的脉冲为负。被T1计数,所以需要T0定时两次才构成T1的一个完整的计数脉冲。设T1计数5次,就能完成1秒的定时。(100ms+100ms)*5=1000ms=1s。

3、定时/计数初值的计算:设T0工作在方式1,则有(216-X)*2μs=100ms,得X=3CB0H,所以

TH0=3CH,TL0=B0H。而T1工作在方式2,则有(28-5)=FBH,所以TH1=FBH,TL1=FBH。

4、定时器/计数器的启动:TR0(TR1)是定时器T0(定时器T1)的运行控制位。当GATE(TMOD.3)

为0时,TR0为1时允许T0计数,TR0为0时禁止T0计数。同样,当GATE(TMOD.7)为0时,TR1为1时允许T1计数,TR1为0时禁止T1计数。由软件置位或复位。

5、定时器可工作在非中断状态,也可工作在中断状态。工作在非中断状态时,每当定时时间(或

计数)到置1溢出中断申请标志位TF0或TF1。在中断状态下,当满足定时器中断条件时,每当定时时间(或计数)到自动进入定时器中断服务程序。本实验程序工作在非中断状态。四、实验器材

仿真器、目标系统实验板、直流电源

五、实验步骤

1、编写程序,并译成机器码。

2、断开电源,按图接好电路。

3、向机器输入程序。

4、运行程序,观察发光二极管的亮灭情况。使用电子秒表测量发光二极管亮灭的时间大约是多少。

六、实验报告要求

1、列出程序清单。

2、回答以下问题:

(1)定时器T0和T1各有哪几种工作方式?工作原理如何?怎样设定工作方式?

(2)计数和定时有什么区别?怎样选择和设定计数或定时?

(3)计数或定时的初始值怎样计算与装入?

(4)怎样启动定时器?

3、请写出定时器T0在下述几个问题的应用程序:

(1)方式0的应用:使T0产生1ms的定时,并使P1.0输出周期为2ms的方波。设晶振频率6MHZ。(2)方式1的应用:题目同上。

(3)方式3的应用:使T0产生200μs的定时,并使P1.0和P1.1分别产生400μs和800μs的方波。要求采用中断控制方式。设晶振频率12MHZ。

4.实验心得。(必须)

5.附能说明实验原理的实验照片。(必须)

实验五秒表设计

一、实验目的

1、掌握数码管动态扫描显示的原理及过程。

2、掌握单片机定时/计数中断程序的设计方法。

3、掌握单片机定时计数器去按键抖动的原理及编程方法。

二、实验容

如下图所示,设计一个秒表,显示格式为X-XX-X,例如1-56-7表示1分56.7秒,即以1/10秒的速度运行。

要求:用按键P3.2,P3.3控制秒表的运行方式,可以选择下面控制方式中的一种

(1)当按下P3.2,时间清零,松开后不控制;当按下P3.3,时间停止,松开后继续计时

(2)复位键P3.2清零时间,P3.3每按一次按键切换一次计时/停止状态

三、实验器材

仿真器、目标系统实验板、直流电源

四、实验步骤

1、按照电路图连接好系统实验板电路

2,按要求编写程序,下载调试

五、实验报告要求

1、列出程序清单。

2、说明实验观察到的现象,并分析结果。

3、总结秒表实验中的知识点,自我评价知识掌握情况。

4.实验心得。(必须)

5.附能说明实验原理的实验照片。(必须)

实验六串行通讯实验

一、实验目的

1.掌握单片机串行口工作方式;

2.掌握双机通讯的接口电路设计及程序设计。

二、实验设备

1. PC机;

2.单片机最小系统教学实验模块;

3. 数码管显示模块

三、实验容

1.双机通信

由两套单片机试验装置(两个实验小组)共同完成该实验。我们U1为甲机,U2为乙机。甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。电路如图1所示。

要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11.0592M。

图1 双机通信原理示意图

附加要求:乙机接收完毕后,将本机(乙机)的学号后8位发送回甲机,甲机显示在数码管上。2.单片机与PC机通信

单片机向PC机发送数据。单片机向PC机重复发送本机(学生本人)学号,发送波特率为1200,采用方式1,单片机外部晶振频率为11.0592M。

四、实验原理

4.1 串行通讯的方式

在串行通讯中,有两种基本的通讯方式:异步通讯,同步通讯。

异步串行通讯规定了字符数据的传送格式,既每个数据以相同的帧格式发送。每个帧信息由起始位、数据位、奇偶校验位和停止位组成。本实验主要学习异步通讯的实现方法。

在异步通讯中,每一个字符要用起始位和停止位作为字符开始和结束的标志,以至占用了时间。所以在数据块传送时,为了提高通讯速度,常去掉这些标志,而采用同步通讯。同步通讯不像异步通讯那样,靠起始位在每个字符数据开始时发送和接受同步。而是通过同步字符在每个数据块传送开始时使收/发双方同步。

按照通讯方式,又可将数据传输线路分成三种:单工方式、半双工方式、全双工方式。

(1)单工方式

在单工方式下,通讯线的一端联接发送器,另一端联接接收器,它们形成单向联接,只允许数据按照一个固定的方向传送。

(2)半双工方式

在半双工方式下,系统中的每个通讯设备都由一个发送器和一个接收器组成,通过收发开关接到通讯线路上,如图33-1所示。在这种方式中,数据能从A站送到B站,也能从B站传送到A站,但是不能同时在二个方向上传送,即每次只能一个站发送,另一个站接收。

图2 半双工通讯方式

图33-1中的收发开关并不是实际的物理开关,而是由软件控制的电子开关,由通讯线两端的半双工通讯协议进行功能切换。

(3)全双工(Full—duplex)方式

虽然半双工方式比单工方式灵活,但它的效率依然较低。从发送方式切换到接收方式所需的时间一般大约为数毫秒,这么长的时间延迟在对时间较敏感的交互式应用(例如远程检测监视控制系统)中是无法容忍的。重复线路切换所引起的延迟积累,正是半双工通信协议效率不高的主要原因。

半双工的这种缺点是可以避免的,而且方法很简单,即采用信道划分技术。在图33-2的全双工连接中,不是交替发送和接收,而是可同时发送和接收。全双工通讯系统的每一端都包含发送器和接收器,数据可同时在两个方向上传送。

图3 全双工通讯方式

4.2单片机串行口工作方式

在静态数码管显示实验中,我们熟悉了单片机串口工作方式0;单片机串口还具有有3种工作方式。如下表所示:

这3种工作方式,均用于串行异步通讯。在异步串行通讯的一个字节的传送中,必须包括了起始位(0)和停止位(1)。除此之外,方式1具有8位(1个字节)的数据位(低位在先),方式2、3则除这8位之外,还具有一个可编程的第9位,这个第9位编程通常被编程为奇偶校验位。我们将在下一个实验中用到它。

串口工作方式在特殊寄存器SCON中设置。

其中的SM0和SM1位确定了串口工作方式。要使通讯双方能够通讯成功,必须具有相同的串口工作模式;REN为允许接收位,本实验中因为双方都要进行接收,因此REN也都应设为1。TB8和RB8这里暂不涉及。利用以下语句来设置SCON:

MOV SCON, #50H

4.3 波特率的设置

在异步串口通讯中,一个很重要的工作就是进行串口波特率的设置。波特率是指串口通讯中每秒传送的位数,单位为BPS,它反映了串行口通讯的速度;同时,通讯双方的速度必须一致,才能够顺利进行通讯。

在串口工作方式1、3中,传送波特率都是可变的。单片机部通过定时器T1来提供发送与接收缓存器的部移位时钟。也就是说,要确定串行通讯的波特率,必须对T1进行相关设置。51单片机系统对此时T1的设置有以下固定的规定:

(1)必须工作在定时器状态;

(2)必须工作在“8位自动重载”工作模式;

这必须在特殊寄存器TMOD中进行设置。关于TMOD的详细容,我们在实验十七已经讲过。可以利用以下语句来设置TMOD:

MOV TMOD, #20H

除了对TMOD的设置外,还必须设置定时器T1的定时值,也就是保存在TH1中的8位重载值。这直接影响到波特率的大小:

它通过以下公式进行计算:

其中的SMOD为特殊寄存器PCON的最高位。当它置1时,可以将波特率增大1倍。

在双机通讯中,只要双方的波特率一致就能够完成通讯了;但是,在标准的异步通讯协议中,只有几种波特是适用的。例如1200bps,2400bps,4800bps,9600bps……等等。

而通过这个公式可以看出,并不是所有的晶振频率都能够得到准确的上述波特率。比如采用12MHz 晶振,代入公式进行运算,就无法得到4800bps的准确波特率(TH1必须为小数了)。在这种情况下,过去人们都使用软件补偿的方法,尽量得到准确的波特率;而现在,市场上有很多通讯专用的晶振,例如3.6864MHz、11.0592MHz……的晶振,都能够直接得到准确的波特率。因此在进行本实验时,必须使用通讯专用晶振(如果使用仿真器,则设置为使用仿真头的外接晶振,并将11.0592M的晶振插入仿真头。

当波特率已经确定,就可以反向推导出TH1的取自大小,例如,在本次实验中,我们要求波特率为4800bps,在晶振采用11.0592MHz的情况下,推出TH1=0F4H。

五、实验步骤

1.参考图1并进行电路设计,画出电路图,并用导线正确连接两套装置的单片机最小系统实验模块,并连接最小系统模块与数码管显示模块。

2.照实验要求编写程序流程图,然后编写程序,对编写的程序进行仿真调试,直至通讯成功。

六、实验报告

1.画出电路原理图。

2.在该实验中,单片机串行口工作在什么工作方式下?说明该工作方式的特点。

3.波特率是什么?怎样设置单片机串口通讯的波特率?如果实验要求通讯波特率为4800bps,怎样修改程序?

4.详细说明本次实验采用的通讯协议。

5.给针对实验要求编写本机的程序流程图、程序清单并给予适当注释,并说明合作单片机(合作同学)。6.实验心得。(必须)

7.附能说明实验原理的实验照片。(必须)

实验七 A/D实验

一、实验目的

1.掌握A/D转换工作原理;

2.掌握A/D转换接口电路及程序设计。

二、实验设备

1. PC机;

2.单片机最小系统教学实验模块;

3. 数码管显示模块

三、实验容

A/D转换

通过外部电位器调节,使输出电压连续可调;把输出电压连接到STC单片机的P1.0即模拟输入口;把数码管模块分别接到单片机的P0和P2口;编写程序,读取P1.0的模拟量,显示在数码管上;调节电位器,观察数码管变化;记录实验数据,计算精度。

四、实验原理

采用STC单片机部集成逐次逼近式ADC模块。由图可见,ADC由比较器、D/A转换器、逐次逼近式寄存器和控制逻辑组成。一次A/D转换,需要启动转换信号START输入,转换结束信号EOC输出,Vin信号,在锁存器端口输出数字信号,完成A/D转换。

五、实验步骤

1.画出电路图,并根据电路图用导线正确连接单片机最小系统实验模块及数码管显示模块。

2.照实验要求编写程序流程图,然后编写程序,对编写的程序进行调试,直至成功。

六、实验报告

1.画出电路原理图。

2.在该实验中,说明该A/D的工作特点。

3.如果有多个模拟量需要A/D转换,最多可以有多少个模拟通道?怎样与单片机连接?

4.记录电位器端的输出电压和数码管上的数据,调节电位器使输出电压从零伏开始,每增加0。5伏,记录一次数据。统计分析。

5.给针对实验要求编写本机的程序流程图、程序清单并给予适当注释。

6.实验心得。(必须)

7.附能说明实验原理的实验照片。(必须)

相关文档