实验指导书 打印Word格式文档下载.docx

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

实验指导书 打印Word格式文档下载.docx

《实验指导书 打印Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验指导书 打印Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。

实验指导书 打印Word格式文档下载.docx

,或右击Target1→BuildTargetF7,就可对源程序进行编译。

当程序有语法错误时,会在输出窗口(OutputWindows)中显示错误信息和警告信息,修改编译成功后会生成HEX文件。

7、下载、调试:

编译成功后,用在线烧录程序将.HEX文件下载到单片机内部ROM中运行,在运行过程中若发现错误要重新修改程序,并编译后再下载运行。

五、烧录软件的使用

1、打开在线烧录程序

2、选择MCU类型(STC89C52RC)

3、点击

,打开工程目录下的hex文件

4、选择端口

5、点击Download烧录程序

6、打开实验板上的电源(如果烧录的时候出现问题,点击stop)

注意:

5、6两步骤的顺序不能颠倒!

即在点击Download之前要先关掉实验板上的电源。

实验二单片机控制LED灯点亮

1.进一步熟悉编程和程序调试

2.学习I/O端口使用方法

3.学习延时子程序的编写和使用

4.学习独立按键的使用方法

三、实验说明

(1)输出控制。

如下图所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管D1熄灭;

当P1.0端口输出低电平,即P1.0=0时,发光二极管D1亮;

我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。

(2)输入控制

如下图所示,当键盘S17未按下时,P3.2端口为高电平;

当按下键盘S17时,P3.2端口输入低电平。

(3)延时子程序的设计方法

汇编延时子程序如下:

DELAY:

MOVR6,#2//给R6赋值

DELAY1:

MOVR7,#248//给R7赋值

DJNZR7,$

DJNZR6,DELAY1

RET

上面的延时程序为1ms。

(4)键盘说明

如果系统只需几个按键,可直接采用I/O线构成单个按键电路,各个按键之间相互独立,一根线上的按键状态不会影响其他输入线上的工作状态,又称独立式键盘接口电路。

检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的按键处理。

编写单片机的键盘检测程序时,一般在检测按下时加入去抖延时,检测松手时就不用加了。

四、实验步骤

本实验需要用到单片机最小应用系统。

用P1口做输出口,P3口做输入口,程序功能使发光二极管点亮。

1.用串行数据通信线连接计算机与实验板,用USB给实验板提供电源

2.打开KeiluVision4仿真软件,首先建立本实验的项目文件,输入源程序,进行编译,直到编译无误。

生成hex文件。

3.通过STC_ISP_V4.83下载软件,将hex文件下载到实验板内,观察发光二极管显示情况。

五、实验内容

1.点亮D1

2.编写程序使D1闪烁。

3.S17键盘按下D1点亮,松开D1熄灭

六、参考程序

1)

LOOP:

MOVP1,#0xfe//LED亮

END//表示汇编程序结束

2)

LOOP:

LCALLDELAY//子程序调用

LCALLDELAY

MOVP1,#0xff//LED灭

LJMPLOOP//循环执行

//-------------------------------------------------

//延时子程序

MOVR7,#0xff//给R7赋值*[4]

DELAY2:

MOVR6,#0xff//给R6赋值

NOP//空指令

NOP

DJNZR6,DELAY1//*[4]

DJNZR7,DELAY2

RET//子程序结束,返回主程序

END//表示汇编程序结束

3)ORG0000H

MOVP1,#0xff//LED灭

JBP3.2,$//判断按键是否被按下,没被按下则等待

//若被按下则执行下一条指令

MOVP1,#0xfe//LED亮

JNBP3.2,$//判断按键是否被释放,没被释放则等待

//若被释放则执行下一条指令

SJMPLOOP

END//表示汇编程序结束

实验三中断系统应用实验

1.掌握外部中断技术的基本使用方法

2.掌握中断处理程序的编写方法

1.外部中断的初始化设置共有三项内容:

中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断触发方式设置。

中断触发方式设置一般有两种方式:

电平触发方式和脉冲(边沿)触发方式,本实验选用后者,即前一次为高电平后一次为低电平时为有效中断请求。

因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入,本实验由INT0(P3.2)引入。

2.中断控制原理:

中断控制是提供给用户使用的中断控制手段。

实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:

TCON、IE、SCON及IP。

3.中断响应的过程:

首先中断采样然后中断查询最后中断响应。

采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;

否则继续为“0”。

所谓查询就是由CPU测试TCON和SCON中各标志位的状态以确定有没有中断请求发生以及是哪一个中断请求。

中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。

4.STC89C52的中断系统

STC89C52的中断系统包括5个中断源,并提供两个优先级,允许用户对中断源进行独立控制和中断优先级设置.STC89C52支持的5个中断源分别为外部中断0、定时器0溢出中断、外部中断1、定时器1溢出中断和串口中断。

对应的中断号为0、1、2、3、4;

寄存器有4个工作组可以切换,为0-3;

STC89C52中,中断服务程序是以中断函数的方式来时实现的。

四、实验内容

利用实验二的知识编写程序点亮板子上的D2、D4、D6、D8灯,与D1、D3、D5、D7灯交替闪烁。

利用外部中断0,使产生一次中断时二极管全部熄灭。

五、参考程序

ORG0000H

LJMPMAIN

ORG0003H

LJMPEXT0

ORG0030H

MAIN:

SETBIT0//外部0中断触发方式为脉冲

SETBEA//开放总中断

SETBEX0//允许外部0中断

MOVA,#0xaa//LED1,3,5,7亮*[4]

MOVP1,A

LCALLDELAY//延时子程序调用

LCALLDELAY

CPLA//LED2,4,6,8亮

LCALLDELAY

LJMPLOOP//循环执行

//中断子程序

EXT0:

PUSHACC//保护现场

PUSHPSW

MOVA,0xff//中断响应时全灭

MOVP1,A

RETI//中断返回

NOP

DJNZR6,DELAY1//*[4]

DJNZR7,DELAY2

RET//子程序结束,返回主程序

实验四单片机控制数码管显示

1.掌握数码管是如何显示出字符

2.学习定时计数器的使用和编程方法

三、实验原理及说明

(1)数码管显示说明

1.数码管两种接法

使用LED显示器时,要注意区分这两种不同的接法。

为了显示数字或字符,必须对数字或字符进行编码。

七段数码管加上一个小数点,共计8段。

因此为LED显示器提供的编码正好是一个字节。

本实验板用共阳LED显示器,根据电路连接图显示16进制数的编码已列在下表。

2.共阳极数码管编码

▪0xc0,0xf9,0xa4,0xb0,0x99,0x92,

▪012345

▪0x82,0xf8,0x80,0x90,0x88,0x83,

▪6789AB

▪0xc6,0xa1,0x86,0x8e,0xff

▪CDEF无显示

请思考共阴极数码管的编码。

3.原理图

(2)定时器/计数器使用说明

1、51单片机有两个16位内部定时器/计数器(T/C,Timer/Counter)。

若是计数内部晶振驱动时钟,则是定时器;

若是计数8051的输入引脚的脉冲信号,则它是计数器。

定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。

由于脉冲周期固定由计数值可以计算出时间,有定时功能。

定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。

TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

2、TMOD

1)M1M0工作方式控制位

M1M0:

工作方式设置位。

定时/计数器有四种工作方式,由M1M0进行设置。

2)C/T定时器方式或计数器方式选择位

若C/T=1时,为计数器方式;

C/T=0时,为定时器方式。

3)GATE定时器/计数器运行门控标志位

当GATE=1时,T/C的启动受双重控制,即要求INT0(或INT1)引脚为高电平且TR0(或TR1)置1时,相应的T/C才被选通工作。

若GATE=0,T/C的启动仅受TR0(或TR1)控制,即置1,T/C就被选通,而不管INT0(或INT1)的电平是高还是低。

3、TCON

TF0、TF1分别是定时器/计数器T0、T1的溢出中断标志位,加法计数器计满溢出时置1,申请中断,在中断响应后自动复0。

TF产生的中断申请是否被接受,还需要由中断是否开放来决定。

TR1、TR0分别是定时器/计数器T1、T0的运行控制位,通过软件置1后,定时器/计数器才开始工作,在系统复位时被清0。

4、初始化

1)初始化步骤

在使用51系列单片机的T/C前,应对它进行编程初始化,主要是对TCON和TMOD编程,还需要计算和装载T/C的计数初值。

一般完成以下几个步骤:

(1)确定T/C的工作方式——编程TMOD寄存

(2)计算T/C中的计数初值,并装载到TH和TL;

(3)T/C在中断方式工作时,必须开CPU中断和源中断——编程IE寄存器;

(4)启动定时器/计数器——编程TCON中TR1或TR0位。

2)计数初值的计算

(1)定时器的计数初值:

在定时器方式下,T/C是对机器周期脉冲计数的,fOSC=12MHZ,一个机器周期为12/fOSC=1us,则

方式013位定时器最大定时间隔=213*1us=8.192ms

方式116位定时器最大定时间隔=216*1us=65.536ms

方式28位定时器最大定时间隔=28*1us=256us

若T/C工作在定时器方式1时,要求定时50ms,求计数值。

如设计数初值为x,则有:

(216-x)*1us=50000us推出x=216-50000

因此,TH,TL可置65536-50000

(2)计数器的计数初值

在计数器方式下:

方式013位计数器的满计数值=213=8192

方式116位计数器的满计数值=216=65536

方式28位计数器的满计数值=28=256

若T/C工作在计数器方式2时,则要求计数10个脉冲的计数初值,如设计数初值为x。

则有

28-x=10即x=28-10

因此,TH=TL=256-10

四、参考列子

让第一个数码管显示一个8字

对于自制实验板(共阳极),数码管的选通是通过P2口控制的。

要让第一个数码管显示8字,那么别的数码管的位选就要关闭,即只打开第一个数码管的位选。

控制位选的P2口要输出的数据位0xfe(二进制为00001000)。

位选确定后,在确定段选,要显示的是8,那么只有dp段为1,其余段为0,所以P0口要输出0x80(二进制10000000)。

参考程序

MOVP2,#0FEH//显示在第一个二极管

MOVP0,#80H//显示'

8'

END

在第一个数码管上利用定时器0,间隔1s依次显示,0-9。

ORG0000H

AJMPSTART

ORG000BH;

T0中断入口地址

AJMPINT_T0

ORG0030H

START:

MOVSP,#60H

MOVTMOD,#01H;

置T0为方式1

MOVTL0,#0B0H;

延时50mS的时间常数

MOVTH0,#3CH

MOVR0,#00H;

数码管显示单元

MOVR1,#20;

定时次数

SETBTR0;

启动定时器1,开始定时

SETBET0

SETBEA;

开中断

Slop:

acalldisplay

SJMPSlop

INT_T0:

;

T0中断服务子程序

PUSHACC;

保护现场

PUSHPSW

PUSHDPL

PUSHDPH

CLRTR0;

关闭定时器1,停止定时

MOVTL0,#0B0H;

延时50mS常数

MOVTH0,#3CH

DJNZR1,EXIT

MOVR1,#20;

重置定时次数

MOVA,R0

INCA;

数码管显示单元内容加一

MOVR0,A

CJNEA,#10,EXIT

MOVR0,#00H;

数码管显示单元清0

EXIT:

SETBTR0;

启动定时器0,开始定时

POPDPH;

恢复现场

POPDPL

POPPSW

POPACC

RETI

;

显示子程序

display:

mova,R0

movdptr,#numtab;

指定查表启始地址

MOVCA,@A+DPTR;

得到段码

movP0,a;

段码送P0口

clrP2.0;

送位码

acalldelay1;

延时10ms

SETBP2.0

ret

延时子程序

delay1:

MOVR2,#20

L1:

MOVR3,#248

DJNZR3,$

DJNZR2,L1

RET

实验板上的7段数码管0~9数字的共阴显示代码

numtab:

DB0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H

END

实验五串口通信的应用

1.学习串口通信的使用方法

2.进一步掌握中断处理程序的编写方法

串行口在方式1是10位数据的异步通信口。

TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。

其中1位起始位,8位数据位,1位停止位。

波特率的计算

在串行通信中,收发双方对发送或接收数据的速率要有约定。

通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。

串行口的四种工作方式对应三种波特率。

由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。

方式0的波特率=fosc/12

方式2的波特率=(2SMOD/64)·

fosc

方式1的波特率=(2SMOD/32)·

(T1溢出率)

方式3的波特率=(2SMOD/32)·

当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。

这时溢出率取决于TH1中的计数值。

T1溢出率=fosc/{12×

[256-(TH1)]}

在单片机的应用中,常用的晶振频率为:

12MHz和11.0592MHz。

所以,选用的波特率也相对固定。

常用的串行口波特率以及各参数的关系如表所示。

串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。

具体步骤如下:

▪确定T1的工作方式(编程TMOD寄存器);

▪计算T1的初值,装载TH1、TL1;

▪启动T1(编程TCON中的TR1位);

▪确定串行口控制(编程SCON寄存器);

串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。

利用串口通信使二极管的灯亮,并在显示窗口显示输入的数。

ORG0000H

JMPMAIN

ORG0023H;

串行中断入口地址

CALLURT_INT;

调用串口中断服务子程序

ORG0030H

CALLURT_INIT;

调用初始化子程序

JMP$;

等待中断

初始化子程序

URT_INIT:

MOVSCON,#50H;

设置成串口工作方式在8位URT,并允许接收

MOVTMOD,#20H;

设置T1为可重装8位定时器

MOVTL1,#0FDH;

11.0592MHz,波特率9600时定时器1的初值设置

MOVTH1,#0FDH

SETBTR1;

开启定时器

SETBES;

开启串口中断

SETBEA;

开总中断

RET

串口中断服务子程序

URT_INT:

CLREA;

关全局中断

CLRRI;

清接收中断标志

PUSHDPL;

现场保护

PUSHDPH

PUSHACC

MOVA,SBUF;

接收到数据后将数据返回

MOVP1,A;

接受到的数据送到P1口显示

MOVSBUF,A;

将接受的数据送回PC机器

JNBTI,$;

等待发送是否完成

CLRTI;

发送完成,则清发送中断标志

POPACC;

恢复保护

POPDPH

POPDPL

开全局中断

RETI

END

附录:

实验教学板电路原理图

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

当前位置:首页 > 表格模板 > 合同协议

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

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