资源描述:
《单片机串行通信实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验六串行通信实验报告班级:学号:姓名:教师:一、双机通信由两套单片机试验装置(两个实验小组)共同完成该实验。我们U1为甲机,U2为乙机。甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。电路如图1所示。要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11.0592M。实验电路图:1、C源程序清单甲机(U1)代码:#include#defineucharunsignedcharvoiddelay(uchari);voidsend(uch
2、artemp);voidinit(void);voidmain(void){init();delay(200);while(1){send('^');send(1);send(2);send(1);send(3);send(2);send(2);send(3);send(1);}}/***********初始化***********/voidinit(void){SCON=0x40;//串口模式1只发送不接收TMOD=0x20;//T1工作模式2TH1=0xf4;//波特率2400TL1=0xf4;PCON=0x00;//不加倍SMO
3、D=0TI=0;TR1=1;//开定时中断}/*********发送函数**********/voidsend(uchartemp){SBUF=temp;while(TI==0);TI=0;delay(50);}/**********延时函数**********/voiddelay(uchari){unsignedintj;for(i;i>0;i--)for(j=0;j<100;j++);}乙机(U2)代码:#include#defineucharunsignedchar#defineuintunsig
4、nedintvoidinit(void);voiddelay(uchart);voidxianshi(void);ucharcodedistable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管段码ucharcodewi[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};uchartab[9]={0,0,0,0,0,0,0,0,0};uchari=0,temp;uinta,b,c,d,e,f,g,h;voidmain()
5、{init();while(1){xianshi();}}/////////////初始化///////////////voidinit(void){PCON=0x00;//不加倍SMOD=0SCON=0x50;//设置串口方式1且允许串口接收REN=1TMOD=0x20;//设置T1为方式2TH1=0xf4;TL1=0xf4;//设置波特率2400TR1=1;//开启定时器1ES=1;//允许串行口中断EA=1;//允许全局中断}////////////串口中断接收程序////////////voidreceive()interru
6、pt4{temp=SBUF;while(RI==0);RI=0;if(temp=='^')temp=0;tab[i]=temp;i++;if(i==9){i=0;a=tab[1];b=tab[2];c=tab[3];d=tab[4];e=tab[5];f=tab[6];g=tab[7];h=tab[8];}}/////////////数码管显示/////////////voidxianshi(void){uchari,dm,wx;//m1:m000=标准;01=推挽;10=输入;11=开漏输出P1M1=0X00;P1M0=0Xff;P
7、2M1=0X00;P2M0=0Xff;//设定P1,P2推挽输出while(1){for(i=1;i<9;i++){//ram[i]=tab[i];dm=distable[tab[i]];//取显示段码wx=wi[i-1];//取位选码P1=0x00;//关显示P2=dm;//段码赋给P2口P1=wx;//点亮位选的那个数码管delay(1);//延时}}/*uchark,ram[8];ram[0]=a;ram[1]=b;ram[2]=c;ram[3]=d;ram[4]=e;ram[5]=f;ram[6]=g;ram[7]=h;for
8、(k=0;k<8;k++){P2=distable[ram[k]];P1=wi[k];P2=0x00;delay(1);}*/}//////////////延时函数/////////////voiddelay(uchar