《单片机技术》实验指导书.docx

上传人:b****9 文档编号:25203095 上传时间:2023-06-06 格式:DOCX 页数:89 大小:707.38KB
下载 相关 举报
《单片机技术》实验指导书.docx_第1页
第1页 / 共89页
《单片机技术》实验指导书.docx_第2页
第2页 / 共89页
《单片机技术》实验指导书.docx_第3页
第3页 / 共89页
《单片机技术》实验指导书.docx_第4页
第4页 / 共89页
《单片机技术》实验指导书.docx_第5页
第5页 / 共89页
点击查看更多>>
下载资源
资源描述

《单片机技术》实验指导书.docx

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

《单片机技术》实验指导书.docx

《单片机技术》实验指导书

 

《单片机技术》

实验指导书

机械电子工程系

2011年9月

 

实验一数据传送(RAM–>XRAM)

一、实验目的

1、熟悉星研集成环境软件或熟悉KeilC51集成环境软件的使用方法。

2、掌握80C51内部RAM和外部RAM之间的数据传送方法;掌握这两部分RAM存贮器的特点与应用,掌握各种数据传送方法。

3、熟悉80C51汇编指令,能自己编写简单的程序,掌握数据传输的方法。

二、实验设备

STAR系列实验仪一套、PC机一台

三、实验内容

1、熟悉星研集成环境软件或熟悉KeilC51集成环境软件的安装和使用方法。

2、编写并调试一个数据传送程序:

将30H~3FH数据送到数据存贮器1000H~100FH中。

实现内外部数据段的传送、校验。

四、实验框图

五、实验步骤

1、运行程序前,打开变量窗、二个存贮器窗(一个选择片内数据;一个选择片外数据,起始地址选择1000H)。

2、在内部RAM30H~3FH中输入数据;使用单步、断点方式调试程序,检测外部数据RAM的1000H~100FH中的内容。

3、熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

【注意】实验箱中已经将单片机最小电路(电源、时钟电路及复位电路)连接完成,因此,该部分不再需要连线。

六、程序清单

;将内部RAMAddress1开始的16个字节送到外部RAM从Address2开始的单元里,

;再作比较。

Address1

DATA

30H

;内部ROM存放数据起始地址

Address2

XDATA

1000H

;外部ROM存放数据起始地址

ORG

0000H

LJMP

STAR

ORG

0100H

STAR:

MOV

SP,#60H

;初始化堆栈指针

MOV

R0,#Address1

MOV

DPTR,#Address2

MOV

R7,#10H

STAR1:

MOV

A,@R0

;传送

MOVX

@DPTR,A

INC

R0

INC

DPTR

DJNZ

R7,STAR1

MOV

R0,#Address1

MOV

DPTR,#Address2

MOV

R7,#10H

STAR2:

MOV

B,@R0

;比较

MOVX

A,@DPTR

CJNE

A,B,STAR3

INC

R0

INC

DPTR

DJNZ

R7,STAR2

SJMP

$

;传送正确

STAR3:

SJMP

$

;传送错误

END

七、思考题

编写程序分别实现以下功能:

①将外部数据存贮区1000H~100FH中的数据送到80C51内部RAM40~4FH中。

②将外部数据存贮区1000H~100FH的内容写入外部RAM3030~303FH中。

 

实验二P1口数据输入、输出实验(跑马灯实验)

一、实验目的

1、通过实验了解单片机最小系统。

2、了解P1口作为输入、输出方式使用时,CPU对P1口操作方法。

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

二、实验设备

STAR系列实验仪一套、PC机一台

三、实验内容

1、P1口做输出口,接G6区的八个发光二极管(其输入端为低电平时发光二极管点亮),编写程序,使发光二极管循环点亮(瞬间只有一个灯亮)。

2、P1.0、P1.1作输入口接两个拨动开关S21、S22;P1.2,P1.3作输出口,接两个发光二极管DS35、DS36,编写程序读取开关状态,将此状态在发光二极管上显示出来。

【注意】P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P1口用作输入口时,编程时必须先对口的锁存器写“1”;若不先对它写“1”,读入的数据是不正确的。

四、实验原理图

【注意】本实验指导书中的原理图只给出了重要部分原理图,单片机最小系统均未给出,请学生参考教材补充完整。

P1口循环点灯原理图

P1口输入输出原理图

五、实验流程图

六、实验步骤

㈠P1口输出实验

1、连线说明:

A3区:

JP51

——

G6区:

JP65

【注意】实验箱上单片机的P1口(A3区JP51插槽)分别接八个发光二极管(G6区JP65插槽),使用一根8线的扁平电缆连接即可。

2、编写程序。

3、实验结果:

通过G6区的LED指示灯(8个指示灯轮流点亮),观察实验的输出结果是否正确。

㈡P1口输入、输出实验

1、连线说明:

A3区:

JP51

——

G6区:

JP80

JP55

——

G6区:

JP65

2、编写程序。

3、实验结果:

改变S21、S22两个拨动开关的状态,观察LED指示灯的变化。

七、源程序

㈠P1口输出实验

ORG

0000H

LJMP

START

ORG

0100H

START:

MOV

SP,#60H

MOV

A,#0FFH

MOV

P1,A

;P1口输出数据时,该句可省略。

;P1口输入数据时,该句必须保留。

CLR

C

START1:

RLC

A

MOV

P1,A

ACALL

Delay

SJMP

START1

Delay:

MOV

R5,#2

;延时

Delay1:

MOV

R6,#0

Delay2:

MOV

R7,#0

DJNZ

R7,$

DJNZ

R6,Delay2

DJNZ

R5,Delay1

RET

END

㈡P1口输入、输出实验

【源程序略,由学生自行设计】

八、思考题

1、在80C51系统中,MOV指令需用1个机器周期,DJNZ指令需用2个机器周期,RET指令需用2个机器周期。

STARES598PCI实验仪中单片机的晶振为12MHz,请计算源程序中软件延时(第12行~第18行)的时长是多少秒?

2、编程实现下表所示的发光二极管点亮时序,注意延时时间的设置(采用软件延时)。

时序

8个发光LED的状态

1

8个LED同时亮,延时0.5s

2

8个LED同时灭,延时0.5s

3

自左向右,每隔0.5s循环点亮一个(单个亮)

4

自右向左,每隔0.5s循环点亮一个(单个亮)

5

自左向右,每隔0.5s循环相邻两个点亮一次(相邻两个亮,其余灭)

 

实验三P1口数据输出实验(交通灯控制实验)

一、实验目的

1、了解单片机的工作原理,熟悉其编程方法以及输入、输出程序设计技巧。

学会使用并行口实现各种控制功能,如本实验(控制交通灯)等。

2、熟悉单片机程序存储器的查表指令,熟悉表格的设计及使用技巧。

熟练设计并使用软件延时子程序。

二、实验设备

STAR系列实验仪一套、PC机一台

三、实验内容

1、编写程序:

使用80C51的P1口控制8个LED指示灯,实现交通灯功能。

2、连接线路、验证该功能,并熟悉P1口的使用方法。

四、实验原理

交通灯控制原理图

该实验中单片机P1口与8个发光二极管相连。

实验箱上的8个发光二极管的排列顺序是“绿、黄、红、红、绿、黄、红、红”,这相当于两组“绿、黄、红”交通指示灯,可以模拟十字路口的东西向和南北向交通灯。

由于每组红灯有两个,可把将两个红灯看作是一个红色指示灯,让它们同时亮灭。

一个周期内交通指示灯的所有状态,如下表所示:

序号

东西向交通灯

南北向交通灯

状态码

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

绿

绿

0

0

1

1

1

1

1

0

0

7CH

1

1

0

1

1

1

1

0

0

0BCH

2

1

1

0

0

0

1

1

1

0C7H

3

1

1

0

0

1

0

1

1

0CBH

将状态码放入一段连续的ROM单元,可以构成一段数据表(用DB伪指令定义数据表,如“DB7CH0BCH0C7H0CBH”)。

利用数据指针DPTR,将其指向数据表的首地址,再将各个状态的序号依次放入累加器A中,通过查表指令便可找到各个状态码,最后将状态码送入P1口显示并做相应的延时处理,发光二极管上即可反映出相应的交通指示灯状态。

当一个周期结束后,再用一条长跳转指令返回首个状态,就可实现交通指示灯的连续工作。

五、实验流程图

六、实验步骤

1、连线说明:

A3区:

JP51(P1口)

——

G6区:

JP65

2、观察实验结果,验证模拟交通灯控制过程的正确性。

七、源程序

ORG

0000H

LJMP

MAIN

ORG

0100H

MAIN:

MOV

DPTR,#TABLE

;数据指针指向表的首字节地址单元

LOOP:

MOV

R7,#data8

;data8由交通灯的状态个数定

MOV

R0,#0

D1:

MOV

A,R0

MOVC

A,@A+DPTR

;查表取状态字节

MOV

P1,A

;送P1口显示

INC

R0

LCALL

DELAY

DJNZ

R7,D1

LJMP

LOOP

TABLE:

DB

【略】

;状态字节【学生自行设计】

DELAY:

【略】

;延时子程序【学生自行设计】

END

八、思考题

1、如何使用该控制策略实现对霓虹灯或跑马灯的设计?

2、如何实现对绿灯、红灯和黄灯的时间分别进行控制,以及黄灯闪烁3次的实现?

实验四外部中断实验(急救车与交通灯)

一、实验目的

1、学习外部中断技术的基本使用方法。

2、学习中断处理程序的编程方法。

二、实验设备

STAR系列实验仪一套、PC机一台

三、实验内容

1、编写程序:

在实验四的基础上增加允许急救车优先通过的要求,有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。

设急救车通过路口时间为10秒,急救车通过后,交通恢复正常。

2、本实验用单次脉冲(由轻触按键产生)申请中断,表示有急救车通过。

3、连接线路、验证该功能,并熟悉外部中断的使用方法。

四、实验原理

1、编制中断处理程序要注意的问题是:

①保护进入中断时的状态(保护现场),并在退出中断之前恢复进入时的状态(恢复现场)。

②必须在中断程序中设定是否允许中断重入,即设置EX0位。

2、本实验中使用了INT0中断,一般中断处理程序进入时应保护PSW、ACC以及中断处理程序使用但非其专用的寄存器。

本实验的INT0程序中应保护PSW、ACC等,以便保护中断前红绿灯的状态(保护现场),并且在退出前恢复原来红绿灯状态(恢复现场)。

3、INT0端(P3.2)接轻触按键K5。

五、实验流程图

六、实验步骤

1、连线说明:

A3区:

JP51

——

G6区:

JP65

JP61

——

JP74

【注意】当响应中断时,应按下JP74中K5按键。

2、观察实验结果,验证模拟交通灯控制过程的正确性。

七、源程序

【源程序略,由学生自行设计】

 

实验五8279键盘显示实验

一、实验目的与要求

1、了解8279与单片机的接口逻辑;掌握对8279的显示子程序Dispaly8的使用方法,掌握使用8279扩展显示器的方法。

2、认真预习,做好实验前的准备工作,自行编写程序,填写实验报告。

二、实验设备

STAR系列实验仪一套、PC机一台

三、实验内容

1、编写程序:

利用8279实现对G5区的8位数码管的显示控制,要求最右边LED从0~9循环显示,其余7个LED均不显示。

2、按图连线,运行程序,观察实验结果,能熟练运用8279的显示子程序Dispaly8。

四、实验原理图

五、实验流程图

六、实验步骤

1、连线说明:

E5区:

CS、A0

——

A3区:

CS5、A0

E5区:

CLK

——

B2区:

2M

E5区:

A、B、C、D

——

G5区:

A、B、C、D

2、运行程序,观察实验结果(8个LED显示器会按要求显示出来),可依此验证对8279芯片操作的正确性。

七、源程序

EXTRN

CODE(Display8)

BUFFER

DATA

30H

;8字节显示缓冲区

ORG

0000H

LJMP

STAR

ORG

0100H

STAR:

MOV

SP,#5FH

MOV

R0,#BUFFER

MOV

A,#10H

;其余7位LED不显示

CLRR:

INC

R0

MOV

@R0,A

CJNE

R0,#37H,CLRR

LOOP:

MOV

R7,#10

;循环次数,10次

MOV

R6,#0

INCC:

MOV

30H,R6

LCALL

DELAY

INC

R6

MOV

R0,#BUFFER

LCALL

Display8

DJNZ

R7,INCC

AJMP

LOOP

END

八、思考题

1、如何实现8个LED数码管循环显示程序。

2、不使用8279,编程实现数码管的显示功能。

实验六电子钟(定时器、中断综合实验)

一、实验目的

熟悉80C51中CPU的定时器、中断系统编程方法,了解定时器的应用、实时程序的设计和调试技巧。

二、实验内容

编写一个时钟程序,使用定时器产生一个50ms的定时中断,对定时中断计数,通过8279将时、分、秒显示在数码管上。

三、程序框图

四、实验步骤

1、连线说明:

E5区:

CLK

——

B2区:

2M

E5区:

CS

——

A3区:

CS5

E5区:

A0

——

A3区:

A0

E5区:

A、B、C、D

——

G5区:

A、B、C、D

2、时间显示在数码管上

五、程序清单

ms50

DATA

31H

;存放多少个50ms

sec

DATA

32H

;秒

min

DATA

33H

;分

hour

DATA

34H

;时

buffer

DATA

35H

;显示缓冲区

EXTRN

CODE(Display8)

ORG

0000H

LJMP

STAR

ORG

000BH

;定时器T0中断处理入口地址

LJMP

INT_Timer0

ORG

0100H

STAR:

MOV

SP,#60H

;堆栈

MOV

ms50,A

;清零ms50

MOV

hour,#12

;设定初值:

12:

59:

50

MOV

min,#59

MOV

sec,#50

MOV

TH0,#60

;定时中断计数器初值

MOV

TL0,#176

;定时50ms

MOV

TMOD,#1

;定时器0:

方式一

MOV

IE,#82H

;允许定时器0中断

SETB

TR0

;开定时器T0

STAR1:

LCALL

Display

;调用显示

JNB

F0,$

CLR

F0

SJMP

STAR1

;需要重新显示时间

;中断服务程序

INT_Timer0:

MOV

TL0,#176-5

MOV

TH0,#60

PUSH

01H

MOV

R1,#ms50

INC

@R1

;50ms单元加1

CJNE

@R1,#20,ExitInt

MOV

@R1,#0

;恢复初值

INC

R1

INC

@R1

;秒加1

CJNE

@R1,#60,ExitInt1

MOV

@R1,#0

INC

R1

INC

@R1

;分加1

CJNE

@R1,#60,ExitInt1

MOV

@R1,#0

INC

R1

INC

@R1

;时加1

CJNE

@R1,#24,ExitInt1

MOV

@R1,#0

ExitInt1:

SETB

F0

ExitInt:

POP

01H

RETI

HexToBCD:

MOV

B,#10

DIV

AB

MOV

@R0,B

INC

R0

MOV

@R0,A

INC

R0

RET

Display:

MOV

R0,#buffer

MOV

A,sec

ACALL

HexToBCD

MOV

@R0,#10H

;第三位不显示

INC

R0

MOV

A,min

ACALL

HexToBCD

MOV

@R0,#10H

;第六位不显示

INC

R0

MOV

A,hour

ACALL

HexToBCD

MOV

R0,#buffer

LCALL

Display8

RET

END

六、思考题

1、定时器0初始化时,为什么设置TL0为176,TH0为60?

2、电子钟走时精度与哪些有关系?

中断程序中给TL0赋值为什么与初始化程序中不一样?

3、使用定时器方式二,重新编写该程序。

4、如何利用定时、中断实现交通灯的控制功能?

实验七双机通讯实验

一、实验目的与要求

1、了解单片机串行口的内部结构、工作原理;使用串行口方式二进行两个单片机之间的串行通信。

2、认真预习,做好实验前的准备工作,填写实验报告。

二、实验设备

STARES598PCI实验仪两套、PC机两台

三、实验内容

1、编写程序:

A机向B机发送一个字节的数据,B机接收到后,将该数据显示在B机P1口的发光二极管上,再将该数据发送给A机,A机接收到B机发回的数据后,显示在A机P1口的发光二极管上。

2、按图连线,运行程序,观察实验结果,掌握8250的各项功能及编程方法。

四、实验原理图

五、实验步骤

1、连线说明:

①A、B机实验仪上均连线:

A3区:

JP51

——

G6区:

JP65

②A机与B机交叉连线:

A机

A3区:

RXD

——

B机

A3区:

TXD

A3区:

TXD

——

A3区:

RXD

C1区:

GND

——

C1区:

GND

2、运行程序

3、改变传输数据的数目,重复实验,观察结果。

六、源程序

;A机程序

ORG

0000H

LJMP

MAIN

ORG

0100H

MAIN:

MOV

SP,#5FH

MOV

SCON,#80H

;设定串行口工作于方式2

MOV

PCON,#00H

;SMOD=0

SETB

REN

;允许串行口接收

MOV

A,#55H

MOV

SBUF,A

JNB

TI,$

CLR

TI

JNB

RI,$

CLR

RI

MOV

A,SBUF

MOV

P1,A

AJMP

$

END

【注意】源程序中只给出A机程序,要求学生编写出B机程序。

七、思考题

1、单片机的其它三种串行口工作方式可否实现双机通讯?

2、画出A机程序的流程图。

3、如果要在B机上实现跑马灯的显示,A机的程序又该如何修改?

4、若通过中断处理方式实现双机通信,程序该如何修改?

实验八RS232串口通讯实验

一、实验目的与要求

掌握单片机串行口的工作原理。

掌握利用串行口实现单片机与计算机间的通讯方法。

二、实验设备

STAR系列实验仪一套、PC机一台

三、实验内容

1、说明:

80C51串口经RS232电平转换后,与PC机串行相连。

PC机使用“串口调试助手”(ComPort)应用程序,实现上位机与下位机的通讯。

本实验使用查询法接收和发送资料,上位机发出指定字符,下位机收到后返回原字符。

2、编写串口通讯程序。

3、运行程序,通过串口调试助手以16进制向单片机发送一组数据,并观察结果。

四、实验原理图

五、实验步骤

1、连线说明:

A3区:

TXD

——

E7区:

TXD

A3区:

RXD

E7区:

RXD

2、实验结果:

打开串口调试助手应用程序,开串口,设置波特率为9600Baud。

在发送区内输入数据,单击“发送”。

如果单片机接收到数据将会原样返回给计算机,并且显示在串口调试助手的接收框内。

六、源程序

Length

EQU

10

;一次性接收、发送数据的数目

buffer

DATA

30H

;接收、发送缓冲区,长度为8个字节

ORG

0

LJMP

START

ORG

0023H

LJMP

RI_TI_INT

ORG

0100H

START:

MOV

R0,#buffer

MOV

TMOD,#20H

;定时器1工作方式2

MOV

TH1,#0FDH

;设波特率9600

MOV

TL1,#0FDH

MOV

SCON,#50H

;串口工作方式1,允许接收

SETB

TR1

;选通定时器1,定时器开始工作

SETB

EA

SETB

ES

SJMP

$

RI_TI_INT:

JB

TI,RI_TI_INT_1

MOV

A,SBUF

MOV

@R0,A

INC

R0

CLR

RI

CJNE

R0,#buffer+Length,$+3

JC

RI_TI_INT_2

MOV

R0,#buffer

CLR

REN

;不允许接收

SETB

TI

SJMP

RI_TI_INT_2

RI_TI_INT_1:

CLR

TI

CJNE

R0,#buffer+Length,$+3

JC

RI_TI_INT_3

MOV

R0,#buffer

SETB

REN

SJMP

RI_TI_INT_2

RI_TI_INT_3:

MOV

A,@R0

MOV

SBUF,A

INC

R0

RI_TI_INT_2:

RETI

END

七、思考题

1、画出

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

当前位置:首页 > 自然科学 > 物理

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

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