单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx

上传人:b****5 文档编号:12706570 上传时间:2023-04-21 格式:DOCX 页数:10 大小:259.96KB
下载 相关 举报
单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx_第1页
第1页 / 共10页
单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx_第2页
第2页 / 共10页
单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx_第3页
第3页 / 共10页
单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx_第4页
第4页 / 共10页
单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx

《单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx》由会员分享,可在线阅读,更多相关《单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx(10页珍藏版)》请在冰豆网上搜索。

单片机与PC通信proteus与虚拟串口驱动软件以及串口.docx

单片机与PC通信proteus与虚拟串口驱动软件以及串口

实验:

单片机与PC通信

(proteus与虚拟串口驱动软件以及串口调试助手的仿真)

实现内容:

设置单片机串行口为工作方式一,波特率为9600。

PC从串口发送字符1、2、3或4到单片机串行口,单片机接收到该字符后,首先在P2口显示字符,然后根据字符不同返回不同字符串,具体要求如下表:

表:

单片机与PC通信内容

PC发送字符

单片机返回

1

1:

WhatdoyouplantodothisFriday?

2

2:

Iplantogototheconcert.

3

3:

Whatareyoudoingnextweek?

4

4:

I'mthinkofgoingtomygrandma's.

其他字符

5:

Pleaseselectacharacter'1','2','3'or'4'!

一、proteus仿真图:

(此proteus仿真图可免费下载,下载网址:

1、

图1.1

2、注意:

(151单片机属性的时钟频率(clockfrequency)必为11.0592mhz,否则无法仿真。

请按下图设置AT89SC52

图1.2

3、在仿真图中P1即(元件名称:

COMPIN)模块为集成电平转换的串行通信接口(如下图)

(1)

图1.3

(2)设置参数如下

图1.4

4、虚拟串口驱动设置

在右侧选择端口一:

“COM3”端口二:

“COM4”,然后按“添加端口”,

此时左侧的Virtualports下出现:

图1.5

表示添加了COM3,COM4一对虚拟串行口,且已连接,故我们把单片机和PC选择COM3和COM4。

(如图1.4中的physicalport选项:

COM4;图中:

串口号COM3)。

接着再在右侧选择端口一:

“COM1”端口二:

“COM2”,则为下图,

图1.6

虚拟串口驱动设置完毕

5、串口调试助手设置

如图1.7

图1.7

6、

(1)将“程序”在Keil软件中编译生成“HEX”文件,加载到仿真图中的AT89C52中,启动仿真

图1.9

(2按下图1.7中串口调试助手的“连接”按钮,在串口调试助手的”发送窗口”,依次输入1、2、3、4和5,发送后可以看到单片机返回的字符串一次显示在接收窗口。

如下图所示

实验程序

#include

#include

#include

#include

#include

#include

#definebyteunsignedchar

#defineucharunsignedchar

#definewordunsignedint

#defineuintunsignedint

#defineulongunsignedlong

#defineBYTEunsignedchar

#defineWORDunsignedint

#defineTRUE1

#defineFALSE0

voidtime(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(voidinterrupt4

{

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;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;i<4;i++;

{

delay_5us(;

}

}

voiddelay_100us(void

{

delay_50us(;

delay_50us(;

}

voidtime(unsignedintucMs

{

unsignedcharj;

while(ucMs>0

{

for(j=0;j<10;j++;

delay_100us(;

ucMs--;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1