单片机实验报告3.docx

上传人:b****0 文档编号:18240714 上传时间:2023-08-14 格式:DOCX 页数:44 大小:197.81KB
下载 相关 举报
单片机实验报告3.docx_第1页
第1页 / 共44页
单片机实验报告3.docx_第2页
第2页 / 共44页
单片机实验报告3.docx_第3页
第3页 / 共44页
单片机实验报告3.docx_第4页
第4页 / 共44页
单片机实验报告3.docx_第5页
第5页 / 共44页
单片机实验报告3.docx_第6页
第6页 / 共44页
单片机实验报告3.docx_第7页
第7页 / 共44页
单片机实验报告3.docx_第8页
第8页 / 共44页
单片机实验报告3.docx_第9页
第9页 / 共44页
单片机实验报告3.docx_第10页
第10页 / 共44页
单片机实验报告3.docx_第11页
第11页 / 共44页
单片机实验报告3.docx_第12页
第12页 / 共44页
单片机实验报告3.docx_第13页
第13页 / 共44页
单片机实验报告3.docx_第14页
第14页 / 共44页
单片机实验报告3.docx_第15页
第15页 / 共44页
单片机实验报告3.docx_第16页
第16页 / 共44页
单片机实验报告3.docx_第17页
第17页 / 共44页
单片机实验报告3.docx_第18页
第18页 / 共44页
单片机实验报告3.docx_第19页
第19页 / 共44页
单片机实验报告3.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机实验报告3.docx

《单片机实验报告3.docx》由会员分享,可在线阅读,更多相关《单片机实验报告3.docx(44页珍藏版)》请在冰点文库上搜索。

单片机实验报告3.docx

单片机实验报告3

 

《单片机应用系统设计》

实验报告

 

姓名:

院系:

仪器科学与工程学院专业:

测控技术与仪器

实验室:

机械楼5楼同组人员:

评定成绩:

审阅教师:

 

硬件实验五串行口实验

Ⅰ、串行数据转换并行数据实验

一、实验目的

1、掌握MCS-51串行口,掌握MCS-51串行口方式0工作方式及编程方法;

2、掌握利用串行口扩展I/O口通道的方法。

二、实验内容

利用单片机的串行口和I/O端口串行输出,利用板上的74HC164串转并电路,移位转换成并行数据,接在LED灯上显示。

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

L0

164-Q0

2

L1

164-Q1

3

L2

164-Q2

4

L3

164-Q3

5

L4

164-Q4

6

L5

164-Q5

7

L6

164-Q6

8

L7

164-Q7

9

RXD(P3.0)

164-AB

11

TXD(P3.1)

164-CLK

2、实验说明

串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。

在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为Fosc/12。

3、分析并执行程序,观察记录结果。

四、提高要求

将串行数据转换成并行数据,驱动并行八段LED显示器,即利用串行口扩展LED显示器,画出线路图并说明工作过程。

五、程序框图

六、实验程序

MOVSCON,#0;串口方式0

MOVA,#0AAH

MOVSBUF,A;输出55H

JNBT1,$

CLRT1

LJMP$

END

七、实验结果

LED灯的L0,L2,L4,L6亮,L1,L3,L5,L7灭。

八、实验提高

将串行数据转换成并行数据,驱动八段LED显示器,即利用串行口扩展LED显示器,画出线路图并说明工作过程。

将接线改为:

连线

连接孔1

连接孔2

1

A

164-Q0

2

B

164-Q1

3

C

164-Q2

4

D

164-Q3

5

E

164-Q4

6

F

164-Q5

7

G

164-Q6

8

H

164-Q7

九、实验思考

串口工作方式0是同步串口通讯。

其特点是:

在有效数据信息开始传输前需用同步字符来指示有效数据信息传输的开始,其接收/发送的数据信息必须由时钟信号来进行严格的同步。

Ⅱ、并行数据转换串行数据实验

一、实验目的

掌握并行数据转换为串行数据的方法。

二、实验内容

利用板上的74HC165并转串电路,读入外部的并行数据,移位转换成串行数据,再利用单片机串行口读入。

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

K0

165-P0

2

K1

165-P1

3

K2

165-P2

4

K3

165-P3

5

K4

165-P4

6

K5

165-P5

7

K6

165-P6

8

K7

165-P7

9

P1.1

165-Q7

10

P1.2

165-CLK

11

P1.0

165-LOAD

2、实验说明

串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。

在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率Fosc/12。

可利用P1.0控制74HC165护具输入/锁存。

3、分析并执行程序,观察记录结果。

四、实验流程图

五、实验程序

LDEQUP1.0

CLRLD

SETBLD

MOVSCON,#00010000B

WAIT:

JNBRI,WAIT

MOVA,SBUF

CLRRI

LJMP$

END

六、实验结果

通过改变开关的开闭情况使累加器输出此时的开关值。

当使开关的输入为10011001B时,累加器A的值为1。

七、实验思考

 74HC165是8位并行输入串行输出移位寄存器,只要把Q7输出绑定到下一级的DS输入,即可实现并转串扩展。

Ⅲ、串行口通讯实验

一、实验目的

1、掌握单片机串行口工作方式的程序设计方法;

2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。

二、实验内容

利用单片机串行口,实现两个实验台之间的串行通讯。

其中一个实验台作为发送方,另一侧为接收方。

发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。

 

甲方乙方

 

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

甲方TXD

乙方RXD

2

甲方RXD

乙方TXD

3

甲方GND

乙方GND

4

KEY/LED_CS

CS0

2、实验说明

1、MCS51的RXD、TXD接线柱在POD51/96仿真板上。

2、通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。

也可以将本机的TXD接到RXD上,这样按下的键,就会在本机LED上显示出来。

3、若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入时要将RS232电平换成TTL电平。

可以将仿真板上的RXD、TXD信号接到实验板上的“用户串口接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的RS232设备。

可以用实验仪上的逻辑分析仪采样串口通信的波形

3、分析并执行程序,观察记录结果。

四、高级要求

1、先实现单机通讯,再实现双机通讯。

2、查询资料,了解RS-485串口功能及使用方法。

五、实验程序

OUTBITEQU08002H

OUTSEGEQU08004H

INEQU08001H

HASRCVEQU20H.0

LEDBUFEQU40H

RCVBUFEQU50H

ORG0000H

LJMPSTART

ORG0023H

JNBTI,SO_R

CLRTI

NOP

SJMPSO_RET

SO_R:

CLRRI

MOVRCVBUF,SBUF

SETBHASRCV

NOP

SO_RET:

RETI

LEDMAP:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

DELAY:

MOVR7,#0

DELAYLOOP:

DJNZR7,DELAYLOOP

DJNZR6,DELAYLOOP

RET

DISPLAYLED:

MOVR0,#LEDBUF

MOVR1,#6

MOVR2,#00100000B

LOOP:

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

MOVA,@R0

MOVDPTR,#OUTSEG

MOVX@DPTR,A

MOVDPTR,#OUTBIT

MOVA,R2

MOVX@DPTR,A

MOVR6,#1

CALLDELAY

MOVA,R2

RRA

MOVR2,A

INCR0

DJNZR1,LOOP

RET

TESTKEY:

MOVDPTR,#OUTBIT

MOVA,#0

MOVX@DPTR,A

MOVDPTR,#IN

MOVXA,@DPTR

CPLA

ANLA,#0FH

RET

KEYTABLE:

DB16H,15H,14H,0FFH

DB13H,12H,11H,10H

DB0DH,0CH,0BH,0AH

DB0EH,03H,06H,09H

DB0FH,02H,05H,08H

DB00H,01H,04H,07H

GETKEY:

MOVDPTR,#OUTBIT

MOVP2,DPH

MOVR0,#LOW(IN)

MOVR1,#00100000B

MOVR2,#6

KLOOP:

MOVA,R1

CPLA

MOVX@DPTR,A

CPLA

RRA

MOVR1,A

MOVXA,@R0

CPLA

ANLA,#0FH

JNZGOON1

DJNZR2,KLOOP

MOVR2,#0FFH

SJMPEXIT

GOON1:

MOVR1,A

MOVA,R2

DECA

RLA

RLA

MOVR2,A

MOVA,R1

MOVR1,#4

LOOPC:

RRCA

JCEXIT

INCR2

DJNZR1,LOOPC

EXIT:

MOVA,R2

MOVDPTR,#KEYTABLE

MOVCA,@A+DPTR

MOVR2,A

WAITRELEASE:

MOVDPTR,#OUTBIT

CLRA

MOVX@DPTR,A

MOVR6,#10

CALLDELAY

CALLTESTKEY

JNZWAITRELEASE

MOVA,R2

RET

START:

MOVSP,#60H

MOVIE,#0

MOVTMOD,#020H

MOVTH1,#0F3H

MOVTL1,#0F3H

ANLPCON,#07FH

ORLPCON,#80H

MOVSCON,#050H

MOVLEDBUF,#0FFH

MOVLEDBUF+1,#0FFH

MOVLEDBUF+2,#0FFH

MOVLEDBUF+3,#0FFH

MOVLEDBUF+4,#0

MOVLEDBUF+5,#0

SETBTR1

SETBES

SETBEA

;MOVSBUF,A

;JNBTI,$

MLOOP:

JBHASRCV,RCVDATA

CALLDISPLAYLED

CALLTESTKEY

JZMLOOP

CALLGETKEY

ANLA,#0FH

MOVSBUF,A

LJMPMLOOP

RCVDATA:

CLRHASRCV

MOVA,RCVBUF

MOVB,A

ANLA,#0FH

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOVLEDBUF+5,A

MOVA,B

SWAPA

ANLA,#0FH

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

MOVLEDBUF+4,A

LJMPMLOOP

END

 

六、实验结果

甲方按下键盘,乙方的数码管上将显示出键盘的值,反之同样如此。

七、实验提高

1、先实现单机通讯,再实现双机通讯。

2、查询资料,了解RS-485串口功能及使用方法。

答:

RS-485为半双工,采用一对平衡差分信号线。

对于多站互连是十分方便的。

允许最多并联32台驱动器和32台接收器。

RS-485的信号传输采用两线间的电压来表示逻辑“1”和逻辑“0”,由于收发方需要两根传输线。

数据采用差分传输,所以干扰抑制性好。

又因无接地问题,所以传输距离可达1200米,传输速率可达10Mbit/s。

硬件实验六计数器/定时器实验

Ⅰ、计数器实验

一、实验目的

学习单片机内部定时/计数器使用方法。

二、实验内容

利用MCS-51内部定时/计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。

将其数值按二进制数在P1口驱动LED灯上显示出来。

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

P1.0

L0

2

P1.1

L1

3

P1.2

L2

4

P1.3

L3

5

单脉冲输出

P3.4(T0)

2、实验说明

本实验中内部计数器起计数器的作用。

外部事件计数脉冲由P3.4引入定时器T0。

单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。

这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。

这就决定了输入波形的频率不能超过机器周期频率。

3、分析并执行程序,观察记录结果。

四、提高要求

1、修改程序,连接八个LED灯用于计数显示。

2、修改程序,要求将计数器中的数值以十进制数的形式显示。

五、程序框图

六、实验程序

MOVTMOD,#00000101B;方式1,计数器

MOVTH0,#0

MOVTL0,#0

SETBTR0;开始计数

LOOP:

MOVP1,TL0;将计数结果送P1口

LJMPLOOP

END

七、实验结果

按一下脉冲输入,计数加1,并在LED上反映出来。

八、实验提高

1、修改程序,连接八个LED灯用于计数显示;

答:

在原有的连线基础上将P1.4~P1.7与L4~L7连接

2、修改程序,要求将计数器中的数值以十进制的形式显示。

扩展主程序:

START:

movtmod,#00000101b

movth0,#0

movtl0,#0

setbtr0

movr0,#LEDBUF

loop:

movp1,tl0

MOVA,tl0;数码管显示开始

ANLA,#0FH

MOVDPTR,#LEDMAP

MOVCA,@A+DPTR

mov@r0,a

CALLDISPLAYLED

LJMPloop

END

使用了之前数码管实验的程序

九、实验思考

在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。

这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。

同时这就决定了输入波形的频率不能超过机器周期频率。

Ⅱ、定时器(秒脉冲发生器)实验

一、实验目的

1、学习单片机内部计数器/定时器的使用和编程方法;

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

二、实验内容

用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转。

三、实验步骤

1、硬件连接

连线

连接孔1

连接孔2

1

P1.0

L0

2、实验说明

1、内部定时/计数器的编程主要是相关寄存器的设置和计数常数的设置。

内部计数器在单片机中主要有定时器和计数器两个功能。

本实验使用的是定时器。

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

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

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

3、内部计数器用作定时器时,是对机器周期计数。

每个机器周期的长度是12个振荡器周期。

因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器,定时器100us中断一次,所以定时常数的设置可按以下方法计算:

机器周期=12÷6MHZ=2uS

(256-定时常数)×2uS=100us

定时常数=206.然后对100us中断次数计数10000次,就是1秒钟.

4、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

如果定时/计数器工作方式不是方式2(8位自动重装方式),则在中断服务子程序中,还要重新装入定时/计数常数。

3、分析并执行程序,观察并记录结果。

四、提高要求

修改程序,使定时器工作在方式1,定时器50ms中断一次,完成以上功能。

五、程序框图

六、实验程序

TICKEQU5000

T100USEQU256-100

C100USEQU30H

LEDBUFEQU0

LEDEQUP1.0

LJMPSTART

ORG000BH

TOINT:

PUSHPSW

MOVA,C100US+1

JNZGOON

DECC100US

GOON:

DECC100US+1

MOVA,C100US

ORLA,C100US+1

JNZEXIT

MOVC100US,#HIGH(TICK)

MOVC100US+1,#LOW(TICK)

CPLLEDBUF

EXIT:

POPPSW

RETI

START:

MOVTMOD,#02H

MOVTH0,#T100US

MOVTL0,#T100US

MOVIE,#10000010B

SETBTR0

CLRLEDBUF

CLRLED

MOVC100US,#HIGH(TICK)

MOVC100US+1,#LOW(TICK)

LOOP:

MOVC,LEDBUF

MOVLED,C

LJMPLOOP

END

 

七、实验结果

LED灯呈亮、灭、亮、灭的循环。

 

八、实验提高

TICKEQU5000

C100USEQU30H

LEDBUFEQU0

LEDEQUP1.0

LJMPSTART

ORG000BH

TOINT:

PUSHPSW

MOVTL0,#9CH

MOVTH0,#0FFH

MOVA,C100US+1

JNZGOON

DECC100US

GOON:

DECC100US+1

MOVA,C100US

ORLA,C100US+1

JNZEXIT

MOVC100US,#HIGH(TICK)

MOVC100US+1,#LOW(TICK)

CPLLEDBUF

EXIT:

POPPSW

RETI

START:

MOVTMOD,#01H

MOVTH0,#0FFH

MOVTL0,#9CH

MOVIE,#10000010B

SETBTR0

CLRLEDBUF

CLRLED

MOVC100US,#HIGH(TICK)

MOVC100US+1,#LOW(TICK)

LOOP:

MOVC,LEDBUF

MOVLED,C

LJMPLOOP

END

九、实验小结

该实验让我了解了定时器的不同工作方式,开始时工作于方式2,这是一个8位重装的定时器,所以在中段服务程序中不必要在置初值,而提高中的方式1,是一个16位的计数器,高位和低位初值不同,且需要在中断服务子程序中重置初值。

硬件实验七:

外部中断(交通灯控制)实验

一、实验目的

1.了解外部中断技术的基本使用方法;

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

二、实验内容

本实验模拟交通信号灯控制。

一般情况下正常显示,当有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。

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

本实验用单次脉冲申请外部中断,表示有急救车通过。

三、实验步骤

1.硬件连接

连线

连接孔1

连接孔2

1

P1.0

L7

2

P1.1

L6

3

P1.2

L5

4

P1.3

L4

5

P1.4

L3

6

P1.5

L2

7

单脉冲输出

/INT0(P3.2)

2.实验说明

中断服务程序的关键是:

1、保护进入中断时的状态,并在退出中断之前恢复进入时的状态。

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

参考程序中使用了/INTO中断,一般中断程序进入时应保护PSW、ACC及其它非中断程序专用的寄存器。

参考程序中保护了PSW、ACC等三个寄存器并且在退出中断前恢复了这三个寄存器。

另外中断程序涉及到关键数据的设置时应关中断,即设置该数据时不允许重入。

参考程序中没有涉及到这种情况。

MCS51CPU外部中断/INTO由P3.2端接入,中断信号由单次脉冲发生器产生。

3.分析并执行程序,观察并记录结果。

四、提高要求

1、修改程序,延长急救车通过实践为20秒。

2、8051单片机5个中断源的中断矢量入口地址?

哪些中断申请标志由CPU自动清除?

哪些中断申请标志必须由软件清除?

五、实验程序

FLASHEQU0;

STOPEQU1

SREQUP1.0

SYEQUP1.1

SGEQUP1.2

EREQUP1.3

EYEQUP1.4

EGEQUP1.5

LJMPSTART

ORG3

SETBSTOP

RETI

START:

MOVSP,#70

MOVTCON,#01H

MOVIE,#81H

SETBSR

CLRSY

CLRSG

SETBER

CLREY

CLREG

CLRSTOP

LOOP:

JBSTOP,ALLRED

SETBSR

CLRSY

CLRSG

CLRER

CLREY

CLREG

MOVA,#20

CALLDELAY

JBSTOP,ALLRED

SETBSR

CLRSY

CLRSG

CLRER

CLREY

CLREG

CLRFLASH

MOVR7,#9

LOOP1:

MOVC,FLASH

MOVEY,C

MOVA,#1

CALLDELAY

CPLFLASH

DJNZR7,LOOP1

JBSTOP,ALLRED

CLRSR

CLRSY

SETBSG

SETBER

CREY

CLREG

MOVA,#20H

CALLDELAY

JBSTOP,ALLRED

CLRSR

CLRSY

CLRSG

SETBER

CLREY

CLREG

CLRFLASH

MOVR7,#9

LOOP2:

MOVC,FLASH

MOVSY,C

MOVA,#1

CALLDELAY

CPLFLASH

DJNZR7,LOOP2

LJMPLOOP

ALLRED:

SETBSR

CLRSY

CLRSG

SETBER

CLREY

CLREG

CLRSTOP

MOVA,#10

CALLDELAY

LJMPLOOP

DELAY:

MOVR1,#80H

MOVR0,#0

DELAYLOOP:

JBSTOP,EXITDELAY

DJNZR0,DELAYLOOP

DJNZR1,DELAYLOOP

DJNZACC,DELAY

EXITDELAY:

RET

END

六、提高要求

1.修改程序,延长急救车通过时间为20秒。

改变ALLRED中寄存器A的值,改变DELAY延时函数的延时时间,即可改变通过时

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2