您好,欢迎访问三七文档
洛阳理工学院实验报告系别计算机系班级B110507学号姓名课程名称单片机原理及其应用实验日期2013-10-28实验名称双机通信成绩实验目的:掌握串行口通信工作原理。实验原理:实验电路原理图如图1所示,图中1#机的发送线与2#机的接收线相连,1#机的接收线与2#机的发送线相连,共阴极BCD数码管BCD_LED1和BCD_LED2分别接各机的P2口,两机共地(默认),晶振为11.0592MHz,波特率为2400bps,串口方式1。(实验电路所用元件见表1)图1电路原理图表1实验元件清单元件类别电路符号元件名称MicroprocessorICsU1~U280C51MiscellaneousX1~X2CRYSTALCapacitorsC1~C2,C4~C5/1nFCAPCapacitorsC3、C6/22uFCAP-ELECResistorsPacksR1~R2/1kRESOptoelectronicsLED1~LED27SEG-BCD-GRN实现功能:1#机循环发送数字0~F,并根据2#机的返回值决定发送新数(返回值与发送值相同时)或重复当前数(返回值与发送值不同时);2#机接收数据后直接返回接收值;双机都将当前值以十六进制数形式显示在各机的BCD数码管上。软件编程原理:1#机采用查询法编程,根据RI和TI标志的软件查询结果完成收发过程;2#机采用中断法编程,根据RI和TI的中断请求,在中断函数中完成收发过程。实验内容:(1)掌握串行通信原理和中断法通信软件编程;(2)完成实验6的C51语言编程。实验步骤:(1)提前阅读与实验6相关的阅读材料;(2)参照实验原理图1和表1,在ISIS中完成电路原理图的绘制;(3)在uVision3中进行C51串行通信程序的编写、编译及调试;(4)启动ISIS的仿真运行,并进行联机调试。仿真结果:图3仿真结果1#机发送程序:(查询法)#includereg51.h#defineucharunsignedcharvoiddelay(unsignedinttime)//定义延时函数{unsignedintj=0;for(;time0;time--)for(j=0;j125;j++);}voidmain(void){ucharcounter=0;//定义计数器P2=0x3f;TMOD=0x20;//T1定时方式2TH1=0xf4;//2400bpsTL1=0xf4;PCON=0x00;//波特率不加倍TR1=1;//启动T1SCON=0x50;//串口方式1,TI和RI清零,允许接收while(1){SBUF=counter;//发送联络信号while(TI==0);//等待发送完成TI=0;//清TI标志位while(RI==0);//等待2#机回答RI=0;if(SBUF==counter)//若返回值与发送值不同,重新发送{P2=counter;//结果相同显示已发送值if(++counter15)counter=0;//修正计数器值delay(500);}}}2#机接收程序:(中断法)#includereg51.hunsignedcharreceiv;voiddelay(unsignedintcount)//定义延时函数{unsignedinti;while(count--)for(i=0;i125;i++);}voidmain(void){P2=0x0f;TMOD=0x20;//T1定时方式2TH1=0xf4;//2400bpsTL1=0xf4;PCON=0x00;//波特率不加倍TR1=1;//启动T1SCON=0x50;//串口方式1,TI和RI清零,允许接收ES=1;EA=1;//开中断while(1);}voidTIRI_int()interrupt4//定义中断函数{if(TI==1)TI=0;//若发送结束,清TI标志位if(RI==1){RI=0;//若接收完成,清RI标志位receiv=SBUF;//取得接收值SBUF=receiv;//结果返回1#机P2=receiv;//显示接收值}}实验小结:经过这次的上机实验,我掌握了串行口通信的工作原理,熟悉C51单片机的编程与调试方法,掌握ProteusISIS模块的原理图绘图方法及及单片机系统仿真运行方法。同时在实现串行通信功能时提高了程序的编写及调试能力,在1#机中用了查询RI和TI标志位的软件查询结果完成发送程序功能,在2#机中根据RI和TI的中断请求,在中断函数中完成接收程序功能,两种方法结合实现实验要求程序功能,灵活的应用课堂上学到的理论知识。
本文标题:实验六 双机通信
链接地址:https://www.777doc.com/doc-4424144 .html