📄 pc的rs232控制led燈.htm
字号:
<P class=font_black_10pt
align=left>其中s和p字符用于数据的简单校验,也就是说当单片机收到的串口数据中如果第一位是“s”第四位是“p”,则单片机接收到的命令有效,否则指令无效。</P>
<P class=font_black_10pt
align=left>S1是单片机地址识别,如果单片机接收到的S1字符等于自己的地址码,则单片机执行命令,否则无效。通过这个字符我们就可以通过一个PC机串口和多个单片机进行通讯,这种通讯方式的设置我们会在后面阐述。S0对应继电器编码,指定相应继电器的吸合或者释放,如果S0=“a”,则该板的所有继电器全部吸合,如果是“b”则全部释放。</P>
<P class=font_black_10pt
align=left>2.单片机返回给PC机的指令也同样采用4个字符串格式S2S1S0+“t”,如“000t”。</P>
<P class=font_black_10pt
align=left>其中“t”为校验码。S2为单片机地址码,S1、S0对应继电器编码。返回指令用于PC机判断单片机是否执行了发出的指令。S1S0的二进制数据中,每一位对应一个继电器的状态,如果为1表示继电器吸合,为0表示继电器释放。</P>
<P class=font_black_10pt
align=left>3.通讯检测。当后台程序启动后,PC机先发送“s00t”命令,如果PC机在6秒以内能够收到单片机返回的继电器状态(该状态是读取控制继电器的I/O口的电平获得的),则PC机判断通讯正常,可以正常使用,否则PC机提示串口通讯不正常。</P>
<P class=font_black_10pt
align=left>此后,PC机还会每隔5秒钟自动请求一次继电器状态,并且按键对继电器进行操作以后,控制板也会主动向PC机发送状态字。</P>
<P class=font_black_10pt
align=left>4.软件升级指令。当需要升级单片机软件时,PC机发送该指令让单片机进入BOOT
load程序区,准备更新软件版本。该指令格式为“su”+S0+“p”,S0为单片机地址码。</P>
<P class=font_black_10pt
align=left>当单片机进入BOOT区后,向PC机发送S0+“upd”指令,S0为单片机地址码,通知PC机软件升级已经准备好。然后PC机关闭串口,提示您打开ISP下载软件进行升级。</P>
<P class=font_black_10pt
align=left>5.单片机复位指令。当单片机在线升级完成以后,PC机可以通过发送复位指令让单片机复位重新进入应用程序区。</P>
<P class=font_black_10pt
align=left>Atmega8的IAP应用我们将在后面进行阐述。</P></BLOCKQUOTE>
<P class=font_red_9pt align=left>后台PC程序及使用介绍</P>
<BLOCKQUOTE>
<P
align=left>后台程序使用VB6.0编写,其中利用VB的MSComm控件完成PC和单片机的通讯。界面如下:</P></BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE>
<P align=left>4.点击OK后,在刚才新建的文件中即生成了完整代码,其中串口初始化的代码如下:</P>
<BLOCKQUOTE>
<P align=left>//UART0 initialize<BR>// desired baud rate:
9600<BR>// actual: baud rate:9615 (0.2%)<BR>// char size: 8
bit<BR>// parity: Disabled<BR>void
uart0_init(void)<BR>{<BR>UCSRB = 0x00; //disable while setting
baud rate<BR>UCSRA = 0x00;<BR>UCSRC = BIT(URSEL) |
0x06;<BR>UBRRL = 0x33; //set baud rate lo<BR>UBRRH = 0x00;
//set baud rate hi<BR>UCSRB =
0x98;<BR>}</P></BLOCKQUOTE></BLOCKQUOTE>
<P
align=left>大家看看使用ICC自动生成的代码和我们自己编写的代码中UCSRC、UBRR、UCSRB是不是一样的呢?<BR></P></BLOCKQUOTE>
<P class=font_red_9pt align=left>通讯协议及命令(2004-10-29)</P>
<BLOCKQUOTE>
<P align=left></P>
<P class=font_black_10pt
align=left>为了保证单片机和PC机的正常可靠的通讯,避免系统出现误动作,我们需要制订一个简单的通讯协议,同时还要定义能够让PC和单片机理解的命令。这里我们简单定义如下:</P>
<P class=font_black_10pt
align=left>1.PC机发送的继电器控制指令采用4个字符组成的字符串格式“s”+S1S0+“p”,如“s00p”。</P>
<P class=font_black_10pt
align=left>其中s和p字符用于数据的简单校验,也就是说当单片机收到的串口数据中如果第一位是“s”第四位是“p”,则单片机接收到的命令有效,否则指令无效。</P>
<P class=font_black_10pt
align=left>S1是单片机地址识别,如果单片机接收到的S1字符等于自己的地址码,则单片机执行命令,否则无效。通过这个字符我们就可以通过一个PC机串口和多个单片机进行通讯,这种通讯方式的设置我们会在后面阐述。S0对应继电器编码,指定相应继电器的吸合或者释放,如果S0=“a”,则该板的所有继电器全部吸合,如果是“b”则全部释放。</P>
<P class=font_black_10pt
align=left>2.单片机返回给PC机的指令也同样采用4个字符串格式S2S1S0+“t”,如“000t”。</P>
<P class=font_black_10pt
align=left>其中“t”为校验码。S2为单片机地址码,S1、S0对应继电器编码。返回指令用于PC机判断单片机是否执行了发出的指令。S1S0的二进制数据中,每一位对应一个继电器的状态,如果为1表示继电器吸合,为0表示继电器释放。</P>
<P class=font_black_10pt
align=left>3.通讯检测。当后台程序启动后,PC机先发送“s00t”命令,如果PC机在6秒以内能够收到单片机返回的继电器状态(该状态是读取控制继电器的I/O口的电平获得的),则PC机判断通讯正常,可以正常使用,否则PC机提示串口通讯不正常。</P>
<P class=font_black_10pt
align=left>此后,PC机还会每隔5秒钟自动请求一次继电器状态,并且按键对继电器进行操作以后,控制板也会主动向PC机发送状态字。</P>
<P class=font_black_10pt
align=left>4.软件升级指令。当需要升级单片机软件时,PC机发送该指令让单片机进入BOOT
load程序区,准备更新软件版本。该指令格式为“su”+S0+“p”,S0为单片机地址码。</P>
<P class=font_black_10pt
align=left>当单片机进入BOOT区后,向PC机发送S0+“upd”指令,S0为单片机地址码,通知PC机软件升级已经准备好。然后PC机关闭串口,提示您打开ISP下载软件进行升级。</P>
<P class=font_black_10pt
align=left>5.单片机复位指令。当单片机在线升级完成以后,PC机可以通过发送复位指令让单片机复位重新进入应用程序区。</P>
<P class=font_black_10pt
align=left>Atmega8的IAP应用我们将在后面进行阐述。</P></BLOCKQUOTE>
<P class=font_red_9pt align=left>后台PC程序及使用介绍</P>
<BLOCKQUOTE>
<P
align=left>后台程序使用VB6.0编写,其中利用VB的MSComm控件完成PC和单片机的通讯。界面如下:</P></BLOCKQUOTE><IMG
src="PC的RS232控制LED燈.files/200412291151225.jpg"><BR><BR>
<P class=font_black_10pt
align=left>界面中的每一个小按钮控制实验板上的每一个LED和继电器。如果串口通讯正常的话,按一下,实验板上对应的LED将点亮继电器吸合,再按一下,LED又被关闭继电器释放。而全开按则控制实验板上所有的LED和继电器开或者关。</P>
<P class=font_black_10pt
align=left>下面的PC指令框是显示PC机发出的每一个控制指令,而返回结果框将显示实验板返回的执行结果。</P>
<P class=font_black_10pt
align=left>最下面的软件升级按钮是执行实验板的在线升级控制。如果需要对单片机进行软件升级,我们这里就没有必要再使用ISP下载程序了。点击软件升级,单片机获得升级指令后将会返回升级准备好的命令,程序就会自动关闭串口,然后提示你使用SL的下载软件下载程序。</P>
<P class=font_black_10pt
align=left>当软件升级完毕后,CPU是不会自动进入应用程序区的,这是你可以复位单片机或者点击前台复位按键让CUP自动复位进入应用程序区。</P>
<P class=font_red_9pt align=left>实际应用</P>
<BLOCKQUOTE>
<P class=font_black_10pt
align=left>在本实验的实际应用中,增加了继电器控制电路和键盘电路。既可以通过PC机来控制也可以用过按键来控制电器的开关</P>
<P class=font_black_10pt align=left>线路:<IMG
src="PC的RS232控制LED燈.files/pdf.gif" border=0><A
href="http://www.cndzz.com/news_uploadimg/200412291546258.pdf"
target=_blank>gdfgdff.pdf</A></P>
<P class=font_black_10pt align=left>应用程序:<IMG
src="PC的RS232控制LED燈.files/rar.gif" border=0><A
href="http://www.cndzz.com/news_uploadimg/200412291610359.rar"
target=_blank>fsfe.rar</A></P>
<P class=font_black_10pt align=left>boot程序:<IMG
src="PC的RS232控制LED燈.files/rar.gif" border=0><A
href="http://www.cndzz.com/news_uploadimg/200412291640510.rar"
target=_blank>dsadas.rar</A></P>
<P align=left><A class=link_blue_no_line
href="http://www.cndzz.com/rar/NIH232CP.pdf"><U><FONT
color=#800080>NIH232CP资料下载</FONT></U></A></P>
<P align=left><A class=link_blue_no_line
href="http://www.cndzz.com/rar/MAX232CPE.pdf"><U><FONT
color=#800080>MAX232CPE资料下载
</FONT></U></A></P></BLOCKQUOTE></TD></TR></TBODY></TABLE><IMG height=1
src="PC的RS232控制LED燈.files/down_info.htm" width=1 border=0></TD></TR>
<TR>
<TD vAlign=top>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV align=center>页数:<A class=page
href="http://www.cndzz.com/info/635-1.htm">[1]</A> </DIV></TD></TR></TBODY></TABLE>
<TABLE class=docParameter cellSpacing=0 cellPadding=4 width="100%"
border=0>
<TBODY>
<TR>
<TD>
<DIV align=center><A href="javascript:window.print()"><IMG height=18
alt=打印 src="PC的RS232控制LED燈.files/printer.gif" width=49
border=0></A> <A href="javascript:this.location.reload()"><IMG
height=18 alt=刷新 src="PC的RS232控制LED燈.files/reload.gif" width=49
border=0></A><SPAN class=weby><FONT color=#2c5810> </FONT></SPAN>
<A href="javascript:window.scroll(0,0)"><IMG height=18 alt=返回顶部
src="PC的RS232控制LED燈.files/top.gif" width=49 border=0></A> <A
href="javascript:window.close()"><IMG height=18 alt=关闭
src="PC的RS232控制LED燈.files/close.gif" width=49 border=0></A>
</DIV></TD></TR></TBODY></TABLE>
<P align=center>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-9859792551683075";
google_alternate_ad_url = "http://www.cndzz.com";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "DFF2FD";
google_color_bg = "DFF2FD";
google_color_link = "0000CC";
google_color_url = "008000";
google_color_text = "000000";
//--></SCRIPT>
<SCRIPT src="PC的RS232控制LED燈.files/show_ads.js" type=text/javascript>
</SCRIPT>
</P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><STRONG>相关文章:</STRONG></TD></TR>
<TR>
<TD><SPAN class=text></SPAN></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=780 align=center border=0>
<TBODY>
<TR>
<TD class=p6 align=middle height=87>
<DIV align=center><A href="http://www.cndzz.com/about/about.asp">网站简介</A>
- <A href="http://www.cndzz.com/about/tel.asp">联系方法</A> - <A
href="http://www.cndzz.com/about/ad.asp" target=_blank>广告服务</A> - <A
href="http://www.cndzz.com/about/thanks.asp">求助和感谢</A> - <A
href="http://www.cndzz.com/about/faq.asp" target=_blank>意见反馈</A><BR><SPAN
class=style6>WWW.CNDZZ.COM WWW.7805.CN ©2004-2005</SPAN>
<BR></DIV></TD></TR></TBODY></TABLE>
<P align=center>
<SCRIPT language=javascript src=""></SCRIPT>
<SCRIPT language=JavaScript src="PC的RS232控制LED燈.files/click.htm"
type=text/javascript></SCRIPT>
</P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -