⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pc的rs232控制led燈.htm

📁 通过本实验学习PC机串口与AVR单片机串口之间相互通讯的基本硬件接口电路和软件编程方法
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!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>-&gt; <A class=type 
            href="http://www.cndzz.com/infosort/119_1.htm">微机单片机</A>-&gt; <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>&nbsp;</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>&nbsp;</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 + -