您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 单片机与PC通信-(proteus与虚拟串口驱动软件以及串口调试助手的仿真)
实验:单片机与PC通信(proteus与虚拟串口驱动软件以及串口调试助手的仿真)实现内容:设置单片机串行口为工作方式一,波特率为9600。PC从串口发送字符1、2、3或4到单片机串行口,单片机接收到该字符后,首先在P2口显示字符,然后根据字符不同返回不同字符串,具体要求如下表:表:单片机与PC通信内容PC发送字符单片机返回11:WhatdoyouplantodothisFriday?22:Iplantogototheconcert.33:Whatareyoudoingnextweek?44:I'mthinkofgoingtomygrandma's.其他字符5:Pleaseselectacharacter'1','2','3'or'4'!一、proteus仿真图:(此proteus仿真图可免费下载,下载网址:)1、图1.12、注意:(1)51单片机属性的时钟频率(clockfrequency)必为11.0592mhz,否则无法仿真。请按下图设置AT89SC52图1.23、在仿真图中P1即(元件名称:COMPIN)模块为集成电平转换的串行通信接口(如下图)(1)图1.3(2)设置参数如下图1.44、虚拟串口驱动设置在右侧选择端口一:“COM3”端口二:“COM4”,然后按“添加端口”,此时左侧的Virtualports下出现:图1.5表示添加了COM3,COM4一对虚拟串行口,且已连接,故我们把单片机和PC选择COM3和COM4。(如图1.4中的physicalport选项:COM4;图中:串口号COM3)。接着再在右侧选择端口一:“COM1”端口二:“COM2”,则为下图,图1.6虚拟串口驱动设置完毕5、串口调试助手设置如图1.7图1.76、(1)将“程序”在Keil软件中编译生成“HEX”文件,加载到仿真图中的AT89C52中,启动仿真图1.9(2)按下图1.7中串口调试助手的“连接”按钮,在串口调试助手的”发送窗口”,依次输入1、2、3、4和5,发送后可以看到单片机返回的字符串一次显示在接收窗口。如下图所示实验程序#includereg52.h#includestdio.h#includeintrins.h#includeAbsacc.h#includestring.h#includectype.h#definebyteunsignedchar#defineucharunsignedchar#definewordunsignedint#defineuintunsignedint#defineulongunsignedlong#defineBYTEunsignedchar#defineWORDunsignedint#defineTRUE1#defineFALSE0voidtime(unsignedintucMs);voidinitUart(void);voidsendString(uchar*ucString);voidmain(void){time(1);initUart();IE=0x90;while(TRUE){}}voidinitUart(void){SCON=0x50;//选择串口工作方式,打开接收允许RCAP2H=(65536-(3456/96))8;RCAP2L=(65536-(3456/96))%256;T2CON=0x34;//启动定时器T1}voidserial0_int(void)interrupt4{ucharrChar;ucharcodestr1[]=WhatdoyouplantodothisFriday?;ucharcodestr2[]=Iplantogototheconcert.;ucharcodestr3[]=Whatareyoudoingnextweek?;ucharcodestr4[]=I'mthinkofgoingtomygrandma's.;ucharcodestrdefault[]=Pleaseselectacharacter'1','2','3'or'4'!;EA=0;RI=0;rChar=SBUF;P2=rChar;switch(rChar){case'1':SBUF='1';while(TI==0){}TI=0;SBUF=':';while(TI==0){}TI=0;sendString(str1);break;case'2':SBUF='2';while(TI==0){}TI=0;SBUF=':';while(TI==0){}TI=0;sendString(str2);break;case'3':SBUF='3';while(TI==0){}TI=0;SBUF=':';while(TI==0){}TI=0;sendString(str3);break;case'4':SBUF='4';while(TI==0){}TI=0;SBUF=':';while(TI==0){}TI=0;sendString(str4);break;default:SBUF='d';while(TI==0){}TI=0;SBUF=':';while(TI==0){}TI=0;sendString(strdefault);break;}EA=1;}voidsendString(uchar*ucString){uchari,stringLength=strlen(ucString);REN=0;for(i=0;istringLength;i++){SBUF=ucString[i];while(TI==0);TI=0;}SBUF=0x0d;while(TI==0);TI=0;SBUF=0x0a;while(TI==0);TI=0;SBUF=0x0a;while(TI==0);TI=0;REN=1;}voiddelay_5us(void){_nop_();_nop_();}voiddelay_50us(void){unsignedchari;for(i=0;i4;i++);{delay_5us();}}voiddelay_100us(void){delay_50us();delay_50us();}voidtime(unsignedintucMs){unsignedcharj;while(ucMs0){for(j=0;j10;j++);delay_100us();ucMs--;}}
本文标题:单片机与PC通信-(proteus与虚拟串口驱动软件以及串口调试助手的仿真)
链接地址:https://www.777doc.com/doc-4539714 .html