📄 pc的rs232控制led燈.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0035)http://www.cndzz.com/info/635-1.htm -->
<HTML><HEAD><TITLE>利用PC的RS232口控制LED灯-电子电路图站-电子家园-电路大全-电子制作-555电路-电子资料-电路原理图-开关电源电路-充电路电路</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="PC的RS232控制LED燈.files/config.css" type=text/css rel=stylesheet>
<META content=电子电路图站,电子制作,中国电子网,电子联盟站,电子资料下载,电路大全,电路原理 name=description>
<META content=电子电路图站,电子制作网,中国电子网,电子联盟站,电子资料下载,电路大全,电路原理 name=keywords>
<STYLE type=text/css>BODY {
MARGIN: 0px
}
BODY {
FONT-SIZE: 12px
}
TD {
FONT-SIZE: 12px
}
TH {
FONT-SIZE: 12px
}
.style2 {
COLOR: #ff0000
}
A:link {
TEXT-DECORATION: none
}
A:visited {
TEXT-DECORATION: none
}
A:hover {
TEXT-DECORATION: underline
}
A:active {
TEXT-DECORATION: none
}
.style5 {
FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: #ff6600
}
.style6 {
COLOR: #6a89c4
}
.style7 {
COLOR: #ff6600
}
</STYLE>
<META content="MSHTML 6.00.2900.2873" name=GENERATOR></HEAD>
<BODY>
<TABLE cellSpacing=0 cellPadding=0 width=780 align=center border=0>
<TBODY>
<TR>
<TD colSpan=2><IMG height=63 src="PC的RS232控制LED燈.files/banner.jpg"
width=780></TD></TR>
<TR>
<TD colSpan=2 height=3></TD></TR>
<TR>
<TD bgColor=#88a7e1 colSpan=2 height=1></TD></TR>
<TR>
<TD colSpan=2 height=3></TD></TR>
<TR>
<TD align=middle width=617 background=PC的RS232控制LED燈.files/tlinkback.gif
height=21>
<DIV align=center><A class=anl href="http://www.cndzz.com/index.htm"><B>首
页</B></A> | <A class=anl
href="http://www.cndzz.com/down/index.htm"><STRONG>资料下载</STRONG></A> | <A
class=anl href="http://www.cndzz.com/down/index.htm"
target=_blank><B>VIP下载</B></A> | <A class=anl
href="http://www.cndzz.com/tech/Article/index.html"
target=_blank><B>技术中心</B></A> | <A class=anl href="http://cndzz.com/bbs"
target=_blank><STRONG>电子家园论坛</STRONG></A> | <A class=anl
href="http://www.cndzz.com/user/upload_list.asp"
target=_blank><STRONG>资料共享</STRONG></A> | <A class=anl
href="http://www.cndzz.com/about/faq.asp"><B>问题反馈</B></A></DIV></TD>
<TD align=middle width=163 background=PC的RS232控制LED燈.files/tlinkback.gif>
<DIV class=style2 align=center>www.cndzz.com</DIV></TD></TR>
<TR>
<TD colSpan=2 height=3></TD></TR>
<TR>
<TD bgColor=#88a7e1 colSpan=2 height=1></TD></TR></TBODY></TABLE>
<TABLE class=cndzz cellSpacing=8 cellPadding=0 width=780 align=center
border=0><TBODY>
<TR>
<TD vAlign=top height=299>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD bgColor=#f0f0f0>你的位置: <A
href="http://www.cndzz.com/index.htm">首页</A>-> <A class=type
href="http://www.cndzz.com/infosort/119_1.htm">微机单片机</A>-> <A
class=type
href="http://www.cndzz.com/infosort/120_1.htm">单片机制作</A></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=45>
<DIV align=center><SPAN class=style5>利用PC的RS232口控制LED灯
<SCRIPT language=JavaScript
src="PC的RS232控制LED燈.files/ViewFileScript.js"></SCRIPT>
</SPAN></DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=20><FONT color=#000000>作者:</FONT><SPAN
class=style7>未知</SPAN><FONT color=#000000> 来源:未知 添加日期: <FONT
color=#000000>2004-12-29 </FONT></FONT><SPAN class=style2>1396<SPAN
class=style5><A href="http://www.cndzz.com/user/login.asp"
target=_blank><IMG height=40 src="PC的RS232控制LED燈.files/add.gif"
width=180 border=0></A></SPAN></SPAN></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=1 width="90%" align=center border=0>
<TBODY>
<TR>
<TD></TD></TR>
<TR>
<TD
style="TABLE-LAYOUT: fixed; FONT-SIZE: 14px; LINE-HEIGHT: 160%; WORD-WRAP: break-word"
vAlign=top width=580><BR>
<P>通过本实验学习PC机串口与AVR单片机串口之间相互通讯的基本硬件接口电路和软件编程方法,并且达到使用PC机来控制LED的简单应用。<IMG
src="PC的RS232控制LED燈.files/2004122911449692.jpg"><IMG height=242
src="PC的RS232控制LED燈.files/2004122911451212.jpg" width=537><BR></P>
<BLOCKQUOTE>
<P
align=left>PC机串口大家都不会陌生了吧!我们可以使用串口电缆直接连接两台PC机的串口,实现两台PC机的串口通讯。但是PC机和单片机的通讯却不能够用电缆直接进行连接,原因是PC机RS232串口的电平标准和单片机的TTL电平不一致,因此单片机和PC机之间的串口通讯必须要有一个RS232/TTL电平转换电路。通常这个电路都选择专用的RS232接口电平转换集成电路进行设计,如MAX232、HIN232等。本实验采用NIH232CP芯片来完成串口接口电路,NIH232和MAX232可以直接互换。</P>
<P
align=left>当然,我们也可以使用分立元件来搭建RS232电平转换电路以供我们实验使用,下图给出了一个常见电路,只要器件完好,电路焊接完毕后即可正常工作,经实际使用,效果良好。</P></BLOCKQUOTE>
<P><BR><IMG src="PC的RS232控制LED燈.files/2004122911454201.jpg"></P>
<P> </P>
<P class=font_red_9pt align=left>AVR单片机串口程序的编写</P>
<BLOCKQUOTE>
<P
align=left>Atmega8单片机的串口具支持多种数据帧结构、有三个完全独立的中断(接收完成、发送完成、发送数据寄存器空)等特点,同时也支持多机通讯模式。本实验就以Atmega8为例来介绍AVR单片机串口的编程。</P>
<P align=left>单片机串口在使用前必须对其进行初始化。初始化内容如下:</P>
<BLOCKQUOTE>
<P
align=left>1.串口接收器和发送器的使能设置:首先我们要根据需要,使能M8串口的接收器或者发射器,这样I/O口(PD1:TXD,PD2:RXD)才能为USART工作。</P>
<P
align=left>2.串口中断工作方式的设置:如果需要串口工作于中断方式,则要根据需要设置USART的中断设置,如果工作于查询方式,那么中断设置就没有必要了。本实验中串口设置为响应接收完成中断,即接收器接收到一个完整的数据帧后,将触发一次接收完成中断。</P>
<P
align=left>3.波特率设置:也就是设置串口的数据传输速率,两个串口之间要正常通讯就必须要保证波特率相同。本实验设置的波特率为9600,系统使用内置8MHZ时钟源,可以直接查表(《Atmega8原理及应用手册》129页)得到UBRR=51。</P>
<P align=left>4.数据帧结构设置:本实验设置为8位数据位+1位停止位。</P></BLOCKQUOTE>
<P align=left>因此,本实验的串口初始化程序如下:</P>
<BLOCKQUOTE>
<P align=left>void UART_init(void)<BR>{<BR>UCSRB = BIT(RXCIE)|
BIT(RXEN) |BIT(TXEN); //允许串口发送和接收,并响应接收完成中断<BR>UBRR = 51;
//设置串口波特率为9600 <BR>UCSRC = BIT(URSEL)|BIT(UCSZ1)|BIT(UCSZ0);
//帧结构为8位数据+1位stop位<BR>}</P></BLOCKQUOTE>
<P
align=left>如果你对AVR单片机串口的设置还不是太熟悉的话,也可以使用ICC编译器中的应用向导直接生成串口的相关代码。操作方法如下:</P>
<BLOCKQUOTE>
<P align=left>1.在ICC中新建一个文件;</P>
<P align=left>2.点击Tools菜单中的Application
Builder子菜单,将弹出以下界面,然后根据需要选择CPU为M8,晶振频率为8MHZ。</P></BLOCKQUOTE></BLOCKQUOTE>
<P><IMG src="PC的RS232控制LED燈.files/2004122911457694.jpg"><BR></P>
<P>3.点击上面界面中的UART菜单,出现下面界面。然后按下图选项选择使能接收和发送、波特率9600、数据位8位、接收完成中断。</P>
<P> </P>
<P><IMG src="PC的RS232控制LED燈.files/2004122911459864.jpg"><BR></P>
<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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -