单片机串行通信实验报告.docx

上传人:b****8 文档编号:9720064 上传时间:2023-02-06 格式:DOCX 页数:19 大小:233.76KB
下载 相关 举报
单片机串行通信实验报告.docx_第1页
第1页 / 共19页
单片机串行通信实验报告.docx_第2页
第2页 / 共19页
单片机串行通信实验报告.docx_第3页
第3页 / 共19页
单片机串行通信实验报告.docx_第4页
第4页 / 共19页
单片机串行通信实验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

单片机串行通信实验报告.docx

《单片机串行通信实验报告.docx》由会员分享,可在线阅读,更多相关《单片机串行通信实验报告.docx(19页珍藏版)》请在冰豆网上搜索。

单片机串行通信实验报告.docx

单片机串行通信实验报告

实验六串行通信

实验报告

班级:

学号:

姓名:

教师:

一、双机通信

我们U1为甲机,U2为乙机。

8位数据,并显示在8位数码管上。

由两套单片机试验装置(两个实验小组)共同完成该实验。

甲机发送本机(学生本人)学号后8位给乙机,乙机接收该电路如图1所示。

不加倍,单片机外部晶振频率为

要求串行通信方式为方式1,波特率为2400bit/s,

11.0592M。

实验电路图:

1、C源程序清单

甲机(U1)代码:

#include

#defineucharunsignedcharvoiddelay(uchari);

voidsend(uchartemp);

voidinit(void);

voidmain(void)

{

init();

delay(200);while

(1){

send('A');

send

(1);

send

(2);send

(1);

send(3);send

(2);

send

(2);

send(3);

send

(1);

 

/***********初始化***********/voidinit(void)

{

SCON=0x40;

TMOD=0x20;

TH1=0xf4;//

TL1=0xf4;

PCON=0x00;//

TI=0;

TR1=1;

}

//

//T1

不加倍

串口模式1只发送不接收

工作模式2

波特率2400

SMOD=0

//开定时中断

 

 

/*********发送函数**********/voidsend(uchartemp){

SBUF=temp;while(TI==0);

TI=0;delay(50);

}

/**********延时函数**********/voiddelay(uchari)

{

unsignedintj;for(i;i>0;i--)for(j=0;j<100;j++);

}

乙机(U2)代码:

#include#defineucharunsignedchar#defineuintunsignedintvoidinit(void);voiddelay(uchart);

voidxianshi(void);

ucharcodedistable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管段码

ucharcodewi[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchartab[9]={0,0,0,0,0,0,0,0,0};

uchari=0,temp;uinta,b,c,d,e,f,g,h;

voidmain()

{

init();

while

(1)

{

xianshi();

}

初始化///////////////

/////////////voidinit(void){

////////////串口中断接收程序////////////

voidreceive()interrupt4{

temp=SBUF;while(RI==0);RI=0;

if(temp=='A')

temp=0;tab[i]=temp;i++;

if(i==9)

{

i=0;a=tab[1];b=tab[2];c=tab[3];d=tab[4];e=tab[5];f=tab[6];g=tab[7];h=tab[8];

/////////////

数码管显示/////////////

voidxianshi(void)

{

uchari,dm,wx;

//m1:

m000=标准;01=推挽;10=输入;11=开漏输出P1M1=0X00;

P1M0=0Xff;

P2M1=0X00;

P2M0=OXff;//设定P1,P2推挽输出

while

(1)

{

for(i=1;i<9;i++)

{

//取显示段码

//取位选码

//ram[i]=tab[i];dm=distable[tab[i]];wx=wi[i-1];

P2=distable[ram[k]];

P1=wi[k];

P2=0x00;

delay

(1);

}*/

延时函数/////////////

//////////////

voiddelay(uchart)

{ucharx,y,z;for(x=t;x>0;x--)for(y=25;y>0;y--)for(z=100;z>0;z--);

2、仿真结果

 

JI

p:

*vd

n:

mips^an-SMT:

ram*r2L>«

UC-

4br>MJ

ndPH'-f,

F日Efl

■fxiri-rr-

ravin

■aarTTi

pJm-IhliilTWIPTTT

逼一;.住器迹■…对詩丘■■■

■■

—'■・■5

.;■jj-g

*"Ht~~I~1—ui

re

■HN-BrzarII

22Q

ri-Z7u--ri

nA

qva时W.AT-—

4

—也

JiU/u

E-

■iq

»1.1

■IZ

扒*3

*Hj*

"IJ-

"UK-a

•Mr

■3IiWTn

MHTT

P3E

PUTl

"沁*

■aj-^

•LrtB--•

■■Il

5t._..

FB

A

.f£._、_IH■"

 

 

3、问题分析

在数码管显示这块,刚开始是这样写的

rajklO'

工丄r>=a

raniC1'

=b

UaJTL

[2[

=c

rain..

[31

二d

Lam..

=e

ram.

【51

二f

ram.

【6]

二S

rant.

[7]

二h

ajR⑻;

fora=0:

k

k++)

P2=dista.bleLramEk]]:

Pl=wiEk];

P£=OhOO:

ilelayCl);

}*

在Proteus上仿真的时候是没有任何问题的,但是后来在实验板上数码管显示特别暗,

几乎看不出来有显示数字,想了想可能是没有加推挽输出,然后就将推挽输出代码加入,然后重新下载,但是结果和之前没什么不同。

//mltiaO0口二标:

隹*01二览担!

10=输入;11二开掃辅出

P1M1=OKOO;

piwa=OKff;

P2M1=OHOO;

P2Ma=OSf£:

//iS^PbP24e^输出

后来想既然这样的话,那就不是推挽的问题了,是这段显示代码有问题,于是将显示代码改为数码管的动态扫描。

I"""/"""数码管显示"A//////

■uchaui,远収;

U

i

/Al:

TiiOou=标准for推挽;IB输几:

11二开捅输出

Fimi=0X00;

flW=QX理;

P2mi=OXDO:

理IW=OXff;〃设定Fl,F2推换输出

■whileCl)

 

这样的话,在Proteus上仿真和实验板上都能出来结果了。

二、单片机与PC机通信

单片机向PC机发送数据。

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

Proteus仿真电路:

razLOdra.PAhlrana

E.wr

Ti-

P7HM■』I'i*rirua

P2Ti1P程5*1a

PJWAI-b

pzrxiE

-g-

TT

rZJHKhHJFfl-aarraraamrpj*inrjrrn

n.-TT

HIP

■-rtrr

I1H

II

H-b.汁

W

TTh

TXiT

PXhl

4I

Wfr

c

0

g

A*

-Tz^r-

 

 

Cl■

-fl-

'tA--

并ft标i1

兀rr塑号

►™aal

二1|Nid=Al

J

-e^isrftatB-

OnAGrs:

二1[HideAl

T

Fai敢

NONE

〒||TilL削

J

EkipRih-

1

d[彳心炖

I

SerwJXJWMl■卜

No

讨1Titter

J

PC0■科0

[NJt5pe?

riecl

J

AdminoedRcp«rti*j;

Pcldii'v

T1NHindi

d

OtherH-Dp?

rties:

肛消

flI*

71H

Pioir-

T2H

■TTII""

Ch

:

IJ2

Ticir

Rill

TObT

当前云件不亜弓仿胃-当版ft不用于PCEUJife一債服$方盘融所有国准

14

13

一'…计

■■f■gijg-gE|rI1:

■I・II

£d匸H

 

 

1、C源程序清单

#include

#defineucharunsignedcharvoiddelay(uchari);

voidsend(uchartemp);

voidinit(void);

voidmain(void){init();

//delay(50);while

(1){

send(0x31);

send(0x32);send(0x31);

send(0x33);send(0x32);

send(0x32);

send(0x33);

send(0x31);

send(0x20);

/*********发送函数**********/voidsend(uchartemp){

SBUF=temp;

while(TI==0);

TI=0;delay(50);

}

/**********延时函数**********/voiddelay(uchari)

{

unsignedintj;

for(i;i>0;i--)

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

}

2、运行结果

Proteus仿真:

Pld^ll

PIwl

Pli-H■l*h->l«niiA-a

卵丄■

rrKt

p-iBTni巧ElniMK

论黑扇亘.

宀亠:

"專噩-罠——

--U-

萨二.

 

 

PC机:

I程序文件EEFEDM交件I畧口助手嗅订仿畀设盍:

|范例程序迭型/怕格/样品I,II,

接收響冲区

文玮:

複武「砸頤式〕;^空接收区I[保存核收埶据]

1213^23112132231

1£132231

121:

3££31

1£1^££31

1213空31

1213££3112悟22311£13223112132231TEldESdl121322

12132231

12132231

12132231

12132231

12132231

1?

13££31

12132231

1Z13E231

12132231

1Z13££^1

绘送送冲点I文不複武"应工樟式

[青空芨送区]I傑存境送数

多学串发送

发送HEJT

E=4

叵二E

GZ

H二

叵二

武二

0二=Eh

〕发送文件]|[S送敎据11自动能J周期血)100

「«空全部埶据I]自动猫开岌送]间偏□ms

 

ASCII码。

串口1良特姿1校验位[无检验T

…侄口I□嗝程完成

天团串」□将ir/U7-5般畫対标准USB捋串口

3、问题分析

这个程序其实和上一个的甲机程序大同小异,需要注意的是,发送的是

三、问题解答

1、在该实验中,单片机串行口工作在什么工作方式下?

说明该工作方式的特点。

答:

串行口是工作在方式1。

方式1特点:

(1)、8位UART接口。

(2)、帧结构为10位,包括起始位(为0),8位数据位,1位停止位。

(3)、波特率由指令设定,由T1的溢出率决定。

2、波特率是什么?

怎样设置单片机串口通讯的波特率?

如果实验要求通讯波特率为

4800bps,怎样修改程序?

答:

模拟线路信号的速率,以波形每秒的振荡数来衡量。

如果数据不压缩,波特率等

于每秒钟传输的数据位数,如果数据进行了压缩,那么每秒钟传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。

在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数

称为码元传输速率,简称波特率。

波特率是指数据信号对载波的调制速率,它用单位时间内

载波调制状态改变的次数来表示(也就是每秒调制的符号数),其单位是波特

(Baud,symbol/s)。

波特率是传输通道频宽的指标。

波特率设置:

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

由于输入的移位时钟的来源不

 

如果是4800的波特率,将初始化程序里的TH1、TL1的值改为0xfa即可

水********初贻化**#**:

<*****/

Voidinit(void)

3COIT=0=c4O.BDD二血20:

THl=0ixf4;TLl=0Kf4;PCOIT=OhOO:

Tr=o:

TR1=1;

"串口模式1//Tl工作槿弍2Z/*tl$24OO

//不加倍SFOD=0

 

11.0592MHZ的晶振

标准波特率实际波特率

150

150

0X41

200

200

0X70

300

300

0XA0

600

600

0XD0

1200

1200

0XE8

2400

2400

0XF4

4800

4800

0XFA

7200

7200

0XFC

9600

9600

0XFD

14400

14400

0XFE

28800

28800

0XFF

定时器预置数

 

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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