预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验单片机与PC机串口通信(C51编程)实验 要求: 掌握串行口的控制与状态寄存器SCON 掌握特殊功能寄存器PCON 掌握串行口的工作方式及其设置 掌握串行口的波特率(bondrate)选择 任务: 1、实现PC机发送一个字符给单片机,单片机接收到后即在个位、十位数码管上进行显示,同时将其回发给PC机。要求:单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机时用查询方式。 采用软件仿真的方式完成,用串口调试助手和KEILC,或串口调试助手和PROTEUS分别仿真。 需要用到以下软件:KEIL,VSPDXP5(virtualserialportsdriverxp5.1虚拟串口软件),串口调试助手,Proteus。 (1)虚拟串口软件、串口调试助手和KEILC的联调 首先在KEIL里编译写好的程序。 #include<reg51.h> #defineucharunsignedchar #defineuintunsignedint ucharcodeSEG7[10]={0X3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管位值 ucharcodeACT[4]={0XFE,0xfd,0xfb,0xf7};%数码管位选信号 ucharcodeas[]="Recevingdata:\0";%回送预置数据 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;i<k;i++){ for(j=0;j<121;j++) {;} } } //main voidmain(void){ uchari; init(); while(1){//用数码管显示PC发给单片机的数据,并回送给PC P1=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]!='\0'){ SBUF=as[i]; while(!TI){ ; } TI=0; i++; } SBUF=b; while(!TI){ ; } TI=0; EA=1; } } } //INTERRUPT4,将收到的信息进行转存 voidserial_serve(void)interrupt4 { a=SBUF; b=a; EA=0; }打开VSPD,界面如下图所示:(注明:这个软件用来进行串口的虚拟实现。在其网站上可以下载,但使用期为2周)。 左边栏最上面的是电脑自带的物理串口。点右边的addpair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。 接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入 modecom39600,0,8,1%分别设置com3的波特率、奇偶校验位、数据位、停止位 assigncom3<sin>sout%把单片机的串口和COM3绑定到一起。因为所用的单片机是 %AT89C51,只有一个串口,所以用SIN,SOUT,如果单片机有 %几个串口,可以选择S0OIN,S0OUT,S1IN,S1OUT。(以上参数设置注意要和所编程序中设置一致!) 打开串口调试助手 可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率9600,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。 现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出来。也可以通过串口调试助手发送数据,在KEIL中接收。 实验实现PC机发送一个字符给单片机,单片机接收到后将其回发给PC机。在调试助手上(模拟PC)发送数据,单片机收到后将收到的结果回送到调试助手上。 2、以下在Proteus和串口调试助手实现的结果: 将编译好的HEX程序加载到Proteus中,注意这里需要加上串口模块,用来进行串行通信参数的设置。 点击串口,可以对串口进行设置: 用串口调试助手发送数据,即可看到仿真结果。 实验参考程序源文件在exp2-comm文件夹中。 #include<reg52.h> #defineuchar