- 14
- 0
- 约1.83千字
- 约 6页
- 2023-09-13 发布于江苏
- 举报
单片机实验报告
实验名称:
串行通信实验
姓 名:
魏 冶
学 号:
090402105
班 级:
光电一班
实验时间:
2011-11-29
南京理工大学紫金学院电光系
实验目的
理解单片机串行口的工作原理;
学习使用单片机的TXD、RXD口;
了解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。
程序设计流程图
程序下载运行后,可在PC机上的串口调试软件上(内嵌在DPFlash软件的串口调试器,设置通信口为COM1口,波特率为9600,数据位8,停止位1)看到接收到“UUUUUU……”,出现这样的结果就基本达到要求。
代码:
#includereg51.h
void main()
{
long int i;
SCON=0x40;
PCON=0;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TI=1;
TR1=1;
star:for(i=0;i5000;i++);
SBUF=0x55;
goto star;
}
电路图;
5、 在单片机接收到0x55时返回一个0x41,在PC机一端,以接收到0x41完成,波特率2400。
程序设计流程图 (1)代码
#includereg51.h
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)电路图
7、 单片机与单片机之间进行串口通信,实现基于方式1的单工通信,发送方以一定波特率发一串有效数据,接收方接收后送P1口通过LED灯显示。
(1)单片机发送代码:
#includereg51.h
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;i200;i++)
for(j=0;j210;j++);
}
void main()
{
SCON=0x40;
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
TR1=1;
P1=0xff;
while(1){for(i=0;i9;i++)
{
SBUF=temp[i];
while(!TI);
TI=0;
delay();
}
i=0;
}
}
单片机接受代码
#includereg51.h
void main()
{
SCON=0x40;
REN=1;
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
TR1=1;
while(!RI)
{
RI=0;
P1=SBUF;}}
电路图
小结与体会
通过上课听老师讲解,和自己的操作,理解了单片机串行口的工作原理,学会了使用单片机的TXD、RXD口、MAX232芯片的使用,学会了DPFlash下载。
更好的了解单片机的发送和接受。
原创力文档

文档评论(0)