欢迎来到天天文库
浏览记录
ID:39542668
大小:133.01 KB
页数:8页
时间:2019-07-05
《实验单片机与PC机串口通信》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验 单片机与PC机串口通信(C51编程)实验要求:1、掌握串行口的控制与状态寄存器SCON2、掌握特殊功能寄存器PCON3、掌握串行口的工作方式及其设置4、掌握串行口的波特率(bondrate)选择任务:1、实现PC机发送一个字符给单片机,单片机接收到后即在个位、十位数码管上进行显示,同时将其回发给PC机。要求:单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机时用查询方式。采用软件仿真的方式完成,用串口调试助手和KEIL C,或串口调试助手和PROTEUS分别仿真。需要用到以下软件:KEIL,VSPDXP5(virtualser
2、ialportsdriverxp5.1虚拟串口软件),串口调试助手,Proteus。(1)虚拟串口软件、串口调试助手和KEIL C的联调首先在KEIL里编译写好的程序。#include#defineucharunsignedchar#defineuintunsignedint8ucharcodeSEG7[10]={0X3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管位值ucharcodeACT[4]={0XFE,0xfd,0xfb,0xf7};%数码管位选信号ucharco
3、deas[]="Recevingdata: ";%回送预置数据uchara=0x30,b;//initiate,串口设置为波特率9600,voidinit(void){TMOD=0X20;TH1=0XFD;TL1=0XFD;SCON=0X50;TR1=1;ES=1;EA=1;}//DELAY,为数据管交替显示voiddelay(uintk){uintdatai,j;for(i=0;i4、示PC发给单片机的数据,并回送给PCP1=SEG7[(a-0x30)/10];P2=ACT[1];delay(500);P1=SEG7[(a-0x30)%10];P2=ACT[0];delay(500);if(RI){RI=0;i=0;while(as[i]!=' '){SBUF=as[i];while(!TI){;}8TI=0;i++;}SBUF=b;while(!TI){;}TI=0;EA=1;}}}//INTERRUPT4,将收到的信息进行转存voidserial_serve(void)interrupt4{a=SBUF;b=a;EA=0;}5、8打开VSPD,界面如下图所示:(注明:这个软件用来进行串口的虚拟实现。在其网站上可以下载,但使用期为2周)。 左边栏最上面的是电脑自带的物理串口。点右边的addpair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入modecom39600,0,8,1 %分别设置com3的波特率、奇偶校验位、数据位、停止位ass6、igncom3sout 8%把单片机的串口和COM3绑定到一起。因为所用的单片机是 %AT89C51,只有一个串口,所以用SIN,SOUT,如果单片机有%几个串口,可以选择S0OIN,S0OUT,S1IN,S1OUT。 (以上参数设置注意要和所编程序中设置一致!) 打开串口调试助手 可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率9600,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。8 现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出7、来。也可以通过串口调试助手发送数据,在KEIL中接收。实验实现PC机发送一个字符给单片机,单片机接收到后将其回发给PC机。在调试助手上(模拟PC)发送数据,单片机收到后将收到的结果回送到调试助手上。2、以下在Proteus和串口调试助手实现的结果:将编译好的HEX程序加载到Proteus中,注意这里需要加上串口模块,用来进行串行通信参数的设置。点击串口,可以对串口进行设置:8用串口调试助手发送数据,即可看到仿真结果。实验参考程序源文件在exp2-comm文件夹中。8
4、示PC发给单片机的数据,并回送给PCP1=SEG7[(a-0x30)/10];P2=ACT[1];delay(500);P1=SEG7[(a-0x30)%10];P2=ACT[0];delay(500);if(RI){RI=0;i=0;while(as[i]!=' '){SBUF=as[i];while(!TI){;}8TI=0;i++;}SBUF=b;while(!TI){;}TI=0;EA=1;}}}//INTERRUPT4,将收到的信息进行转存voidserial_serve(void)interrupt4{a=SBUF;b=a;EA=0;}
5、8打开VSPD,界面如下图所示:(注明:这个软件用来进行串口的虚拟实现。在其网站上可以下载,但使用期为2周)。 左边栏最上面的是电脑自带的物理串口。点右边的addpair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入modecom39600,0,8,1 %分别设置com3的波特率、奇偶校验位、数据位、停止位ass
6、igncom3sout 8%把单片机的串口和COM3绑定到一起。因为所用的单片机是 %AT89C51,只有一个串口,所以用SIN,SOUT,如果单片机有%几个串口,可以选择S0OIN,S0OUT,S1IN,S1OUT。 (以上参数设置注意要和所编程序中设置一致!) 打开串口调试助手 可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率9600,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。8 现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出
7、来。也可以通过串口调试助手发送数据,在KEIL中接收。实验实现PC机发送一个字符给单片机,单片机接收到后将其回发给PC机。在调试助手上(模拟PC)发送数据,单片机收到后将收到的结果回送到调试助手上。2、以下在Proteus和串口调试助手实现的结果:将编译好的HEX程序加载到Proteus中,注意这里需要加上串口模块,用来进行串行通信参数的设置。点击串口,可以对串口进行设置:8用串口调试助手发送数据,即可看到仿真结果。实验参考程序源文件在exp2-comm文件夹中。8
此文档下载收益归作者所有