📄 上海齐济电子-应用技巧-pic16系列单片机与pc机串行通信的软硬件实现.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0042)http://www.chipgem.com.cn/refer/yyjq81.htm -->
<HTML><HEAD><TITLE>上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现</TITLE><!-- InstanceBegin template="/Templates/temp1.dwt.asp" codeOutsideHTMLIsLocked="false" -->
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK
href="<%=webstylefile%>" rel=stylesheet type=text/css>
<META
content="齐济电子,元器件代理,元器件经销,芯片销售,单片机销售,电子元器件,国外器件,偏冷门器件,存储器,外围器件,运放,模拟转换,电子产品方案,单片机设计方案,MCU,EEPROM, A/D, OP, PWM ,microchip ,ATMEL, HOLTEK ,catalyst, csi ,24wc ,PIC ,24LC ,24C, HT48, HT49 ,HT46, HT7 ,HT16 ,AT ,89C, 87C,P87 ,PCF ,LPC ,25LC, 25C, 红外线 ,感应洁具, 圣洁力, 冲水设备, 感应器, 感应水龙头 ,感应小便 ,感应大便, 给皂器 ,干手机 ,干手器 ,烘手器 ,给皂机,皂液机 ,节水设备, 自动冲水 ,冲洗阀, PIC16C5X,PIC16C7X,PIC16F87X,PIC12C508A , pic16f72,pic16f73,pic16c74b,pic17c44 , pic16f870,pic16f871,pic16f872,pic16f873a , pic16f874a,pic16f876a,pic16f877a,pic18f242 , pic18f252,rfpic12f675,pic18f8720,pic18f6720 , 24lc01,24lc02,24lc16,24lc128 , PIC12C508,pic12c509a,pic16c54c,pic16c505 , pic16c56a,pic16c57c,pic12f629,pic12f675 , pic12c671,pic12c672,pic12ce673,pic16c622a , pic16c62b,pic16c63a,pic16c65b,pic16ce624 , pic16ce625,pic16f627a,pic16f628a,pic16f630 , pic16f676,PIC16C711,PIC16C712,pic16c716 , pic16c717,pic16c72a,pic16c73b,pic16f84a , pic16c77,pic16c,pic16f74,pic16f7x , 24lc256,24lc04,HT48R05A,HT48R06A,HT48R10A,HT48R50A , HT49R50A,HT46R47,HT7033A,HT7044A , HT1621,HT7130A,ht48r30,ht48r50 , ht48r70,ht49r30,ht49r70,ht46r22 , ht46r23,ht46r24,ht46r63,ht46r64 , ht46r65,ht9170,ht9200,ht7050 , ht7150,ht24lc02,ht24lc04,ht24lc16 , ht24lc08,HT1622, 单片机,单片机开发,方案开发,PIC , HOLTEK,microchip,太阳能热水器,太阳能应用 , 感应器,自动感应洁具,自动水龙头,自动冲水器 , MPLAB,开发工具,ic卡燃气表,上海盛扬, 微芯,合泰,电子元器件,太阳能热水器控制器, 芯片,仿真器,烧录器,烧写器, IDE3000,编程器,Holtek代理,Holtek芯片销售, Microchip代理,Microchip销售,IC,IC销售 , MCU销售,单片机论坛,pic单片机论坛, 感应洁具,感应器,干手器,冲水阀,圣洁力,龙头,感应龙头,皂液器,烘手器,自动洗手器,自动阀,给皂机,干发器,医用洗手器,干肤器,感应小便器,手术室洗手器,冲水设备,小便斗冲水器,智能龙头,医洗,小便冲水器,红外线感应洁具,一体感应龙头,小便斗冲水阀, 感应器,自动感应洁具,自动水龙头,自动冲水器 , 感应洁具,医洗,干手器,冲水阀 , 龙头,感应龙头,皂液器,烘手器 , 自动洗手器,自动阀,干发器,给皂机 , 医用洗手器,干肤器,感应小便器,手术室洗手器 , 冲水设备,小便斗冲水器,智能龙头,小便冲水器 , 一体感应龙头,感应电子洁具,感应式洁具,小便斗冲水阀 , 暖手器,感应式烘手器,烘手器价格,感应冲水器 , 自动冲水,感应卫生洁具,自动皂液器,感应皂液器 , 皂液机,自动洗手机,红外线自动洗手机,给皂器 , 红外线冲水器,一体化水龙头,一体化小便斗,红外线感应洁具,ht7033 ,直流放大,pic16f87x,太阳能热水器,ht48r,pic,pic16f630,sst89c54 在线可编程,spce061a,小功率变压器,高频变压器设计,12c508+编程电压,单片机 论坛,单片机,microchip,ds1302原理图,温度测量,晶闸管触发电路,温度测量,16f628 复位电路,报警电路设计,浮点数运算程序,电话拨号报警器电路,电话拨号报警器电路,QuickStart开发包,aduc812"
name=keywords>
<META
content=上海齐济集成电子有限公司的网站是一个专业性的电子咨询类网站,网站分为产品资料中心、应用实例与技巧、资料下载、方案介绍、单片机论坛、网上销售商城六个栏目,我们尽最大努力为单片机使用者与爱好者提供尽可能多的资料及咨询,你可以在我们的单片机论坛畅所欲言,交流各种使用经验,同时在我们的的商城中,可以很方便地采购各种样片及满足你批量生产的需要。
name=description>
<SCRIPT src="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/mystat.htm"></SCRIPT>
<!-- InstanceBeginEditable name="doctitle" --><!-- InstanceEndEditable --><!-- InstanceBeginEditable name="head" --><!-- InstanceEndEditable -->
<SCRIPT language="JavaScript ">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</SCRIPT>
<SCRIPT
src="D:\Documents and Settings\jb\桌面\PIC文章\上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files\mystat(1).htm"></SCRIPT>
<LINK href="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/green.css" rel=stylesheet
type=text/css>
<META content="MSHTML 5.00.3700.6699" name=GENERATOR></HEAD>
<BODY>
<TABLE align=center border=0 borderColor=#0099ff width=768>
<TBODY>
<TR>
<TD colSpan=3></TD></TR>
<TR>
<TD align=middle rowSpan=3 width=120><IMG height=75
src="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/logo.gif" width=120></TD>
<TD align=middle rowSpan=3><IMG height=60
src="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/chipgem.gif"></TD>
<TD width=25><IMG
src="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/home.gif"></TD>
<TD width=60><A href="http://www.chipgem.com.cn/refer/yyjq81.htm#"
onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.chipgem.com.cn');">设为主页</A></TD></TR>
<TR>
<TD width=25><IMG
src="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/email.gif"></TD>
<TD width=60><A
href="http://www.chipgem.com.cn/refer/contact.asp">联系我们</A></TD></TR>
<TR>
<TD width=25><IMG
src="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/bookmark.gif"></TD>
<TD width=60><A href="http://www.chipgem.com.cn/refer/yyjq81.htm#"
onclick="javascript:window.external.addFavorite('http://www.chipgem.com.cn','上海齐济电子有限公司')">加入收藏</A></TD></TR>
<TR>
<TD colSpan=4>
<HR align=center class=hr SIZE=1 width="100%">
</TD></TR></TBODY></TABLE>
<STYLE>.button1 {
BORDER-BOTTOM: white 1pt; BORDER-LEFT: white 1pt; BORDER-RIGHT: white 1pt; BORDER-TOP: white 1pt; COLOR: menutext; FONT: menu
}
.button2 {
BORDER-BOTTOM: white 1pt; BORDER-LEFT: white 1pt; BORDER-RIGHT: white 1pt; BORDER-TOP: white 1pt; COLOR: menutext; FONT: menu
}
.button3 {
BORDER-BOTTOM: white 1pt; BORDER-LEFT: white 1pt; BORDER-RIGHT: white 1pt; BORDER-TOP: white 1pt; COLOR: menutext; FONT: menu
}
</STYLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=768>
<TBODY>
<TR>
<TD align=middle class=button2 onmousedown="this.className='button3'"
onmouseout="this.className='button2'" onmouseover="this.className='button1'"
onmouseup="this.className='button1'" vAlign=center><A
href="http://www.chipgem.com.cn/refer/index.asp"
target=""><B>本站首页</B></A></TD>
<TD align=middle class=button2 onmousedown="this.className='button3'"
onmouseout="this.className='button2'" onmouseover="this.className='button1'"
onmouseup="this.className='button1'" vAlign=center><A
href="http://www.chipgem.com.cn/refer/company.asp"
target=""><B>企业资讯</B></A></TD>
<TD align=middle class=button2 onmousedown="this.className='button3'"
onmouseout="this.className='button2'" onmouseover="this.className='button1'"
onmouseup="this.className='button1'" vAlign=center><A
href="http://www.chipgem.com.cn/refer/product.asp"
target=""><B>产品信息</B></A></TD>
<TD align=middle class=button2 onmousedown="this.className='button3'"
onmouseout="this.className='button2'" onmouseover="this.className='button1'"
onmouseup="this.className='button1'" vAlign=center><A
href="http://www.chipgem.com.cn/refer/project.asp"
target=""><B>方案介绍</B></A></TD>
<TD align=middle class=button2 onmousedown="this.className='button3'"
onmouseout="this.className='button2'" onmouseover="this.className='button1'"
onmouseup="this.className='button1'" vAlign=center><A
href="http://www.chipgem.com.cn/refer/application.asp"
target=""><B>应用技巧与实例</B></A></TD>
<TD align=middle class=button2 onmousedown="this.className='button3'"
onmouseout="this.className='button2'" onmouseover="this.className='button1'"
onmouseup="this.className='button1'" vAlign=center><A
href="http://www.chipgem.com.cn/refer/download.asp"
target=""><B>资料下载中心</B></A></TD>
<TD align=middle class=button2 onmousedown="this.className='button3'"
onmouseout="this.className='button2'" onmouseover="this.className='button1'"
onmouseup="this.className='button1'" vAlign=center><A
href="http://www.chipgem.com.cn/refer/bbs.asp"
target=""><B>单片机论坛</B></A></TD>
<TD align=middle class=button2 onmousedown="this.className='button3'"
onmouseout="this.className='button2'" onmouseover="this.className='button1'"
onmouseup="this.className='button1'" vAlign=center><A
href="http://www.chipgem.com.cn/refer/sale.asp"
target=""><B>在线销售</B></A></TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=768>
<TBODY>
<TR>
<TD>
<HR align=center class=hr SIZE=1 width="100%">
</TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=768>
<TBODY>
<TR>
<TD><!-- InstanceBeginEditable name="EditRegion3" -->
<TABLE border=0 cellPadding=0 cellSpacing=0 width="99%"><!-- 正文区-->
<P><BR><FONT size=2><STRONG>
<CENTER><FONT size=3>应用技巧</FONT>/PIC16系列单片机与PC机串行通信的软硬件实现
</CENTER></STRONG></FONT>
<P></P>
<P align=right><FONT face=楷体_GB2312 size=3></FONT><A
href="ftp://chipgem.vicp.net/Apply&Example/Apply/yyjq81.pdf">点击这里下载本页面内容的PDF文件</A></P><B><SPAN
style="FONT-SIZE: 9pt"><FONT color=#008080>摘 要:</FONT> </SPAN></B><SPAN
style="FONT-SIZE: 9pt">介绍一种运用PIC16F84单片机实现与PC机串行通信的方法,并给出其硬件接口电路及通信源程序。
</SPAN><SPAN style="FONT-SIZE: 9pt"><B>
<TBODY>
<TR><FONT color=#008080>关键词:</FONT> </B>异步串行通信 发送与接收 VB4 Win95 串口查询法
</SPAN>
<TR><SPAN style="FONT-SIZE: 9pt"><B><FONT color=#008080>作者:</FONT>
</B><SPAN style="FONT-SIZE: 9pt">西安第四军医大学生物医学工程系 电子学教研室(710032) 焦 纯
陈马丁 李洪义 </SPAN></T>
<HR color=#008080>
<B><SPAN style="FONT-SIZE: 9pt"><FONT color=#800080 lang=ZH-CN>1
前言</FONT></SPAN></B><SPAN style="FONT-SIZE: 9pt"><FONT color=#800080>
</FONT></SPAN>
<P></P>
<P align=justify><SPAN style="FONT-SIZE: 9pt">
美国Microchip公司的PIC16系列单片机是一种新型的CMOS工艺的8位单片机。其中,PIC16FXX单片机的程序存储器为电可擦除闪速存储器(flash),可多次修改程序,甚至可以在线编程。PIC16F83和PIC16F84片内数据存储器除RAM外,还有64字节的EEPROM,可以当作一般的或非易失性的数据存储器使用,简单方便。它还具有片内上电复位、延时电路、看门狗电路等。另外,PIC16系列单片机功耗极低,因而是一种非常适合在各种便携式设备中使用的高性价比的单片机,并已经得到了越来越广泛的应用。<BR>
但是在许多需要大量计算的运用中,还必须借助微机的强大数据处理能力。这样必须通过通信电路实现PIC单片机与微机间的可靠数据传输。有的PIC16单片机内并没有提供串行口,所以串行通信必须通过自己设计的硬件电路和通信软件来实现。<BR>
下面介绍用查询法实现异步串行通讯的方法。同时给出了用PIC16F84单片机的两个I/O口模拟2线串行口的硬件接口电路、程序流程框图、单片机内通信程序以及微机内的通信程序等。</SPAN></P><B>
<P align=justify><SPAN style="FONT-SIZE: 9pt"><FONT color=#800080
lang=ZH-CN>2 硬件实现方法与电路</FONT></SPAN></P></B>
<P align=justify><SPAN style="FONT-SIZE: 9pt">
PIC16F84的程序存储器由1K×14的闪速(flash)存储器构成,它只有13条I/O口,1个定时器,为了尽量节省单片机的软硬件资源,采用下述异步串行通信的实现方法。<BR>
如图1所示,PIC16F84在4MHz时钟下,采用半双工方式,可实现9600波特率的异步串行数据通信,1位停止位,8位数据位,无校验位。接收和发送以低位在先(一般模式),采用软件延时。为节省篇幅,单片机内的通信程序中未提供任何握手协议,用户可根据自己的需要在软件中加入握手方式。</SPAN></P></TD></TR></FONT>
<TR>
<TD height=482 vAlign=top width="47%"><FONT lang=ZH-CN>
<P align=justify><SPAN style="FONT-SIZE: 9pt">
由于PIC16F84本身没有专门的串行口,这里用其I/O口来模拟串行口的功能。<BR>
PC机的串行接口是符合EIA
RS-232C规范的外部总线标准接口。RS-232C采用的是负逻辑,即逻辑“1”:-5V至-15V;逻辑“0”:+5V至+15V。而CMOS电平为:逻辑“1”:4.99V,逻辑“0”:0.01V;TTL电平的逻辑“1”和“0”则分别为2.4V和0.4V。因此在用RS-232C总线进行串行通信时需外接电路实现电平转换。在发送端用驱动器将TTL或CMOS电平转换为RS-232C电平,在接收端用接收器将RS—232C电平再转换为TTL或CMOS电平。<BR>
这里选用了MAXIM公司的MAX202E来作电平转换。MAX202E属于MAXIM公司的通用串行接收/发送驱动器芯片。其外围电路简单,只需外接四个0.1μF的电容即可,如图1所示。</SPAN></P></FONT>
<P align=justify><FONT lang=ZH-CN></FONT><FONT face=楷体_GB2312><IMG
alt="images/yyjq8101.GIF (2374 bytes)"
src="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/yyjq8101.gif"></FONT></P>
<P align=center><FONT lang=ZH-CN></FONT><FONT face=v><SPAN
style="FONT-SIZE: 9pt">图1 接口原理图</SPAN></FONT></P><FONT
lang=ZH-CN></FONT>
<P align=justify><B><FONT lang=ZH-CN><FONT
lang=ZH-CN></FONT></FONT></B><B><SPAN style="FONT-SIZE: 9pt"><FONT
color=#800080 lang=ZH-CN>3 PIC16F84单片机内通信程序的设计</FONT></SPAN></B></P>
<P align=justify> </P></TD>
<TD height=482 vAlign=top width="53%">
<P align=right><FONT face=楷体_GB2312><IMG alt="jc1.GIF (4938 bytes)"
src="上海齐济电子-应用技巧-PIC16系列单片机与PC机串行通信的软硬件实现.files/yyjq8102.gif"></FONT></P>
<P align=center><FONT face=v><SPAN style="FONT-SIZE: 9pt">图2
接收子程序框图
图3发送子程序框图</SPAN></FONT></P></TD></TR></TBODY></P></TABLE></SPAN></TD>
<TD rowSpan=4 width="10%"></TD></TR>
<TR>
<TD vAlign=top width="80%">
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%"><FONT
lang=ZH-CN>
<TBODY>
<TR>
<TD colSpan=3 height=18 width="76%">
<P align=justify><SPAN style="FONT-SIZE: 9pt">
图2和图3分别是串行发送和接收的子程序流程框图。发送时,通过使数据发送端DX为低电平并保持B秒(9600波特率时为104μs)来发送起始位。随后每B秒钟通过置位或清零DX端把数据发送出去。这里的B是指一位所持续的时间(B=1/波特率)。接收时,数据接收端DR大约要每B/2秒(9600波特率时为52μs)查询一次以检测起始位,如果检测到起始位,则在大约1.5B秒(9600波特率时为156μs)后检测第一位数据位,随后每B秒钟检测一次其它的数据位。<BR>
相应的源程序如下: </SPAN></P></TD></TR></FONT>
<TR><FONT lang=ZH-CN></FONT>
<TD height=18 width="16%"><SPAN style="FONT-SIZE: 9pt"><FONT
lang=ZH-CN>;接收子程序</FONT></SPAN></TD>
<TD height=18 width="15%"></TD>
<TD height=18 width="45%"></TD><FONT lang=ZH-CN></FONT></TR>
<TR>
<TD height=20 width="16%"><SPAN style="FONT-SIZE: 9pt"><FONT
lang=ZH-CN>Rcvr</FONT></SPAN></TD>
<TD height=20 width="15%"></TD>
<TD height=20 width="45%"></TD><FONT lang=ZH-CN></FONT></TR>
<TR>
<TD height=20 width="16%">
<P align=left><SPAN style="FONT-SIZE: 9pt"><FONT
lang=ZH-CN>
clrwdt </FONT></SPAN></P></TD>
<TD height=20 width="15%"></TD>
<TD height=20 width="45%"><SPAN style="FONT-SIZE: 9pt"><FONT
lang=ZH-CN>;清片内看门狗</FONT></SPAN></TD><FONT lang=ZH-CN></FONT></TR>
<TR>
<TD height=18 width="16%"></TD>
<TD height=18 width="15%"></TD>
<TD height=18 width="45%"><SPAN style="FONT-SIZE: 9pt"><FONT
lang=ZH-CN>;定时器</FONT></SPAN></TD><FONT lang=ZH-CN></FONT></TR>
<TR>
<TD height=20 width="16%">
<P align=center><SPAN style="FONT-SIZE: 9pt"><FONT
lang=ZH-CN>btfsc</FONT></SPAN></P></TD>
<TD height=20 width="15%"><SPAN style="FONT-SIZE: 9pt"><FONT
lang=ZH-CN>RA,DR</FONT></SPAN></TD>
<TD height=20 width="45%"><SPAN style="FONT-SIZE: 9pt"><FONT
lang=ZH-CN>;检测起始位</FONT></SPAN></TD><FONT lang=ZH-CN></FONT></TR>
<TR>
<TD height=20 width="16%">
<P align=center><SPAN style="FONT-SIZE: 9pt"><FONT lang=ZH-CN>goto
</FONT></SPAN></P></TD>
<TD height=20 width="15%"><SPAN style="FONT-SIZE: 9pt"><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -