【单片机原理及应用】实验:双机串行通信

目录

一、实验目的

二、实验内容

三、实验步骤

四、记录与处理

五、思考

六、成果文件提取链接


一、实验目的

 熟悉串行口通信工作原理,掌握多机项目创建和双机串行编程方法。


二、实验内容

参照图表

(1)创建一个包含2个80C51固件,且都采用Keil for 8051编译器的新项目;

(2)编写C51源程序,要求实现如下功能:U1机循环向U2机发送整数00~9*(*为学号最后一位),再根据从U2机发来的返回值决定是继续发送新数(若返回值与发送值相同时)还是重复发送当前数(若返回值与发送值不同时);U2机则是将从U1机上接收到的值作为返回值再发送给U1机。两机都将当前值以十进制数形式显示在各机的2位共阴极数码管上。

(4)完成源程序编译和动态调试,实现实验6的控制功能要求;

(6)完成实验6报告的撰写。


三、实验步骤

(1)创建一个包含2个80C51固件,且都采用Keil for 8051编译器的新项目;

(2)编写C51源程序,要求实现如下功能:U1机循环向U2机发送整数00~94(4为我的学号最后一位),再根据从U2机发来的返回值决定是继续发送新数(若返回值与发送值相同时)还是重复发送当前数(若返回值与发送值不同时);U2机则是将从U1机上接收到的值作为返回值再发送给U1机。两机都将当前值以十进制数形式显示在各机的2位共阴极数码管上。

U1代码:

void delay(unsigned int time){ 
	unsigned int j = 0;
	for(;time>0;time--)
		for(j=0;j<125;j++);
}
void main(void){
   	uchar counter=0;		
   	TMOD=0x20;			
   	TH1 = TL1 = 0xf4;		
   	PCON=0;			
   	SCON = 0x50;		
	TR1=1;				 
	while(1){   	
	SBUF = counter;		
	while(TI==0);			
	TI = 0;				
	while(RI==0);			
	RI = 0;
	if(SBUF ==counter){ 	 
		P0 = map[counter/10];	  
		P2 = map[counter%10];		
		if(++counter>94) counter=0;		
		delay(500);
}}}

 U2代码: 

MacB_resp() interrupt 4{
   	RI = 0;					
   	receiv = SBUF;			
	SBUF = receiv;			
	while(TI==0);				
	TI = 0;		   		
	P0 = map[receiv/10];      	
	P2 = map[receiv%10];     
}

void main(void){
   	TMOD=0x20;				
   	TH1=TL1=0xf4;			
   	PCON=0;				
   	SCON=0x50;				
	EA=ES=1;				
	TR1=1;					
   	while(1);
}

(4)完成源程序编译和动态调试,实现实验6的控制功能要求;U1机循环向U2机发送整数00~94(4为我的学号最后一位),再根据从U2机发来的返回值决定是继续发送新数(若返回值与发送值相同时)还是重复发送当前数(若返回值与发送值不同时);U2机则是将从U1机上接收到的值作为返回值再发送给U1机。两机都将当前值以十进制数形式显示在各机的2位共阴极数码管上。

启动开始:

一直到94之后清零。


四、记录与处理

完成源程序编译和动态调试,实现实验6的控制功能要求;U1机循环向U2机发送整数00~94(4为我的学号最后一位),再根据从U2机发来的返回值决定是继续发送新数(若返回值与发送值相同时)还是重复发送当前数(若返回值与发送值不同时);U2机则是将从U1机上接收到的值作为返回值再发送给U1机。两机都将当前值以十进制数形式显示在各机的2位共阴极数码管上。

启动开始:

一直到94之后清零。


五、思考

1.双机串行通信原理:串行通信是一种数据传输方式,数据在一条传输线上按位(bit)顺序逐位传输。在双机串行通信中,通常有两台计算机或微控制器通过串行接口进行数据的发送和接收。

2.在本次实验中,我们使用了两个80C51微控制器进行双机串行通信。80C51内部集成了串行通信接口,可以方便地进行串行数据的发送和接收。发送方将数据按照一定的格式(如起始位、数据位、停止位等)通过串行接口发送出去,接收方则通过串行接口接收这些数据,并进行相应的处理。本次实验中U1机作为发送方,循环发送整数00到94,而U2机作为接收方,接收U1机发送的数据,并将其作为返回值再发送给U1机,形成了一个简单的双机串行通信系统。

3.本次实验我成功实现了双机串行通信的功能,不仅加深了对串行通信原理的理解,还提高了编程和调试能,还培养了我的实践能力和创新思维。此外,我也认识到在实验过程中要细心、耐心,并善于利用书本资源来解决问题。


六、成果文件提取链接

链接:https://pan.baidu.com/s/1vih-osSS5LE-I0vk-Imugg?pwd=ugmx 
提取码:ugmx  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值