单片机实验报告串行口

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验报告

实验名称:串行通信实验

*名:**

学号:*********

班级:光电一班

实验时间:2011-11-29

南京理工大学紫金学院电光系

一、实验目的

1、理解单片机串行口的工作原理;

2、学习使用单片机的TXD、RXD口;

3、了解MAX232芯片的使用。

二、实验原理

MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以发送、接收数据。它有两个相互独立的接收、发送缓冲器,这两个缓冲器同名(SBUF),共用一个地址号(99H),发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。

要发送的字节数据直接写入发送缓冲器,SBUF=a;当UART接收到数据后,CPU从接收缓冲器中读取数据,a=SBUF;串行接口内部有两个移位寄存器,一个用于串行发送,一个用于串行接收。定时器T1作为波特率发生器,波特率发生器的溢出信号做接收或发送移位寄存器的移位时钟。TI和RI分别发送完数据和接收完数据的中断标志,用来向CPU发中断请求。

三、实验内容

1、学会DPFlash软件的操作与使用,以及内部内嵌的一个串口调试软件的使用。

2、用串口连接PC机和DP-51PROC单片机综合仿真实验仪。

3、编写一个程序,利用单片机的串行口发送0x55,波特率为9600。

程序设计流程图

4、程序下载运行后,可在PC机上的串口调试软件上(内嵌在DPFlash软件的串口调

试器,设置通信口为COM1口,波特率为9600,数据位8,停止位1)看到接收到“UUUUUU……”,出现这样的结果就基本达到要求。

(1)代码:

#include

void main()

{

long int i;

SCON=0x40;

PCON=0;

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

TI=1;

TR1=1;

star:for(i=0;i<5000;i++);

SBUF=0x55;

goto star;

}

(2)电路图;

5、在单片机接收到0x55时返回一个0x41,在PC机一端,以接收到0x41完成,波特率2400。

程序设计流程图 (1)代码

#include void main() {

SCON=0x40; REN=1; TMOD=0x20; TH1=0xf4; TL1=0xf4;

TR1=1; while(1) {

start:while(!RI); RI=0;

if(SBUF!=0x55) goto start; else SBUF=0x41;

}}

(3)电路图

XTAL2

18

XTAL1

19

ALE 30EA

31

PSEN 29RST

9

P0.0/AD0

39P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78

P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD

17

P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1

AT89C51

ERROR

TXD 3RXD 2CTS 8RTS 7DSR 6DTR 4DCD 1RI

9

P1

COMPIM

7、 单片机与单片机之间进行串口通信,实现基于方式1的单工通信,发送方以一定波特率发一串有效数据,接收方接收后送P1口通过LED 灯显示。

(1)单片机发送代码:

#include

Code unsigned char temp[9]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f,0xff}; long int i;

void delay()

{

int i,j;

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

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

}

void main()

{

SCON=0x40;

TMOD=0x20;

TH1=0xf4;

TL1=0xf4;

TR1=1;

P1=0xff;

while(1){for(i=0;i<9;i++)

{

SBUF=temp[i];

while(!TI);

TI=0;

delay();

}

i=0;

}

}

(3)单片机接受代码

#include

void main()

{

SCON=0x40;

REN=1;

TMOD=0x20;

TH1=0xf4;

TL1=0xf4;

TR1=1;

while(!RI)

{

相关文档
最新文档