单片机实验报告实验名称:串行通信实验姓名:魏冶学号:090402105班级:光电一班实验时间: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)代码:#includereg51.hvoidmain(){longinti;SCON=0x40;PCON=0;TMOD=0x20;TH1=0xfd;TL1=0xfd;TI=1;TR1=1;star:for(i=0;i5000;i++);SBUF=0x55;gotostar;}(2)电路图;XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51ERRORTXD3RXD2CTS8RTS7DSR6DTR4DCD1RI9P1COMPIM5、在单片机接收到0x55时返回一个0x41,在PC机一端,以接收到0x41完成,波特率2400。程序设计流程图(1)代码#includereg51.hvoidmain(){SCON=0x40;REN=1;TMOD=0x20;TH1=0xf4;TL1=0xf4;TR1=1;while(1){start:while(!RI);RI=0;if(SBUF!=0x55)gotostart;elseSBUF=0x41;}}(3)电路图XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51ERRORTXD3RXD2CTS8RTS7DSR6DTR4DCD1RI9P1COMPIM7、单片机与单片机之间进行串口通信,实现基于方式1的单工通信,发送方以一定波特率发一串有效数据,接收方接收后送P1口通过LED灯显示。(1)单片机发送代码:#includereg51.hCodeunsignedchartemp[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};longinti;voiddelay(){inti,j;for(i=0;i200;i++)for(j=0;j210;j++);}voidmain(){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;}}(3)单片机接受代码#includereg51.hvoidmain(){SCON=0x40;REN=1;TMOD=0x20;TH1=0xf4;TL1=0xf4;TR1=1;while(!RI){RI=0;P1=SBUF;}}(4)电路图D1LED-YELLOWXTAL218XTAL119RST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115AD[0..7]A[8..15]ALE30EA31PSEN29P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78U3AT89C51XTAL218XTAL119RST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115AD[0..7]A[8..15]ALE30EA31PSEN29P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78U1AT89C51D2LED-YELLOWD3LED-YELLOWD4LED-YELLOWD5LED-YELLOWD6LED-YELLOWD7LED-YELLOWD8LED-YELLOWR1220R2220R3220R4220R5220R6220R7220R8220四、小结与体会通过上课听老师讲解,和自己的操作,理解了单片机串行口的工作原理,学会了使用单片机的TXD、RXD口、MAX232芯片的使用,学会了DPFlash下载。更好的了解单片机的发送和接受。