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

📄 usart串口使用范例.htm

📁 avr硬件软件开发的一些总结 用AVR单片机模拟的串口程序 AVR基本硬件线路设计与分析 等等
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0044)http://www.avrvi.com/avr_examples/usart.html -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>usart串口使用范例</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="AVR 新手入门 单片机 AVR与虚拟仪器网站提供" name=description>
<META content="古欣 guxin[at]mail.sdu.edu.cn" name=author>
<META content="AVR 单片机 新手入门 手把手教程 avr程序 avr范例" name=keywords>
<STYLE title=css_design_by_guxin type=text/css media=all>@import url( ../inc/article.css );
</STYLE>
<LINK media=all href="usart串口使用范例.files/article.css" type=text/css 
rel=stylesheet>
<META content="MSHTML 6.00.2900.3199" name=GENERATOR></HEAD>
<BODY>
<DIV class=m>
<H1 class=c>AVR与虚拟仪器 www.avrvi.com</H1></DIV>
<DIV class=m>
<DIV id=head>
<P class=c>AVR与虚拟仪器致力于提供最优质的AVR和labview技术服务,最全的技术资料,最好的开发板方案。</P>
<P class=c>我们将以AVR DB-CORE Ver2.3 Atmega16开发板为平台,一步一步,教会大家AVR单片机编程。</P>
<P class=c>本站所有范例都采用ICC编写,ICC编译器加AVR Studio下载调试,下载器为JTAG&amp;ISP下载编程器。 
</P></DIV></DIV>
<DIV class=m>
<DIV id=now>你现在的位置:<A href="http://www.avrvi.com/">AVR与虚拟仪器</A>&gt;&gt;<A 
href="http://www.avrvi.com/index_avr_examples.html">AVR使用范例</A>&gt;&gt;usart串口使用范例<SPAN><A 
title=AVR与虚拟仪器论坛 href="http://bbs.avrvi.com/">论坛</A></SPAN></DIV></DIV>
<DIV class=m>
<H3>AVR使用范例--usart串口使用范例</H3>
<DIV class=pad10>
<P>本页关键词:usart 什么是usart usb usart usart接口 usb to usart usb usart 驱动 usb usart tx 
line usart串口 usart 芯片 </P>
<P>下载<A 
href="http://www.avrvi.com/down.php?file=software/chuankou.exe">超好用的串口调试助手</A>【绿色免安装版】,下载<A 
href="http://www.avrvi.com/down.php?file=examples/usart.rar">结构化的uart驱动程序与范例</A></P>
<P class=title>usart简介:</P>
<UL>
  <LI>通用同步和异步串行接收器和转发器(USART) 是一个高度灵活的串行通讯设备。主要特点为:<BR>全双工操作( 
  独立的串行接收和发送寄存器)<BR>异步或同步操作<BR>主机或从机提供时钟的同步操作<BR>高精度的波特率发生器<BR>支持5, 6, 7, 8, 或9 
  个数据位和1 个或2 
  个停止位<BR>硬件支持的奇偶校验操作<BR>数据过速检测<BR>帧错误检测<BR>噪声滤波,包括错误的起始位检测,以及数字低通滤波器<BR>三个独立的中断:发送结束中断, 
  发送数据寄存器空中断,以及接收结束中断<BR>多处理器通讯模式<BR>倍速异步通讯模式 </LI></UL>
<P class=title>调试结果与实物图</P>
<P class=c><IMG height=447 alt=使用调试助手调试的结果 src="usart串口使用范例.files/uart_2.jpg" 
width=641></P>
<P class=c>&nbsp;</P>
<P>串口硬件电路采用的是MAX232cse,硬件连接电路图,<A 
href="http://www.avrvi.com/start/guide_avr_hardware_design.html">详见开发板电路的详细介绍</A>。</P>
<P class=c><IMG height=321 alt=AVR开发板实物图 src="usart串口使用范例.files/uart_1.jpg" 
width=675></P>
<P>在labview中用程序调试串口的结果,labview串口使用范例见:<A 
href="http://bbs.avrvi.com/read.php?fid=8&amp;tid=497&amp;toread=1">http://bbs.avrvi.com/read.php?fid=8&amp;tid=497&amp;toread=1</A></P>
<P class=c><IMG height=413 alt=labview调试的结果 src="usart串口使用范例.files/uart_3.jpg" 
width=444></P>
<P class=c>&nbsp;</P>
<P class=title>电路图:</P>
<P class=c><IMG height=402 alt=MAX232应用电路 
src="usart串口使用范例.files/avrdb_core_05.jpg" width=775></P>
<P>串口使用一个max232芯片。</P>
<P class=title>数据读写 官方解释</P>
<UL>
  <LI>USART的初始化<BR>void USART_Init( unsigned int baud )<BR>{<BR>/* 
  设置波特率*/<BR>UBRRH = (unsigned char)(baud&gt;&gt;8);<BR>UBRRL = (unsigned 
  char)baud;<BR>/* 接收器与发送器使能*/<BR>UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<BR>/* 
  设置帧格式: 8 个数据位, 2 个停止位*/<BR>UCSRC = 
  (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<BR>} 
  <LI>数据发送【发送5 到8 位数据位的帧】<BR>void USART_Transmit( unsigned char data 
  )<BR>{<BR>/* 等待发送缓冲器为空 */<BR>while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) 
  )<BR>;<BR>/* 将数据放入缓冲器,发送数据 */<BR>UDR = data;<BR>} 
  <LI>数据发送【发送9 位数据位的帧】<BR>void USART_Transmit( unsigned int data )<BR>{<BR>/* 
  等待发送缓冲器为空 */<BR>while ( !( UCSRA &amp; (1&lt;&lt;UDRE))) )<BR>;<BR>/* 将第9 
  位复制到TXB8 */<BR>UCSRB &amp;= ~(1&lt;&lt;TXB8);<BR>if ( data &amp; 0x0100 
  )<BR>UCSRB |= (1&lt;&lt;TXB8);<BR>/* 将数据放入缓冲器,发送数据 */<BR>UDR = data;<BR>} 
  <LI>数据接收【以5 到8 个数据位的方式接收数 据帧】<BR>unsigned char USART_Receive( void 
  )<BR>{<BR>/* 等待接收数据*/<BR>while ( !(UCSRA &amp; (1&lt;&lt;RXC)) )<BR>;<BR>/* 
  从缓冲器中获取并返回数据*/<BR>return UDR;<BR>} 
  <LI>数据接收【以9 个数据位的方式接收帧】<BR>unsigned int USART_Receive( void )<BR>{<BR>unsigned 
  char status, resh, resl;<BR>/* 等待接收数据*/<BR>while ( !(UCSRA &amp; 
  (1&lt;&lt;RXC)) )<BR>;<BR>/* 从缓冲器中获得状态、第9 位及数据*/<BR>/* from buffer 
  */<BR>status = UCSRA;<BR>resh = UCSRB;<BR>resl = UDR;<BR>/* 如果出错,返回-1 */<BR>if 
  ( status &amp; (1&lt;&lt;FE)|(1&lt;&lt;DOR)|(1&lt;&lt;PE) )<BR>return 
  -1;<BR>/* 过滤第9 位数据,然后返回*/<BR>resh = (resh &gt;&gt; 1) &amp; 0x01;<BR>return 
  ((resh &lt;&lt; 8) | resl);<BR>} </LI></UL>
<P class=title>结构化的驱动程序与范例 <A 
href="http://www.avrvi.com/down.php?file=examples/usart.rar">下载所有相关文件</A></P>
<UL>
  <LI>首先包含sio.h和相关头文件。 
  <LI>调用<SPAN class=red>Com_init()</SPAN>; //串行口初始化 
  <LI>主程序<BR>void main(void)<BR>{<BR>uint8 SIO_buff[4]; 
  //定义串口数据缓冲区<BR>init_devices();<BR>//指示单片机正常开始工作,一亮,二亮,都亮,都灭<BR>PORTA = 0x02; 
  //1脚为高,0脚为低,0脚灯亮<BR>Delay(); //延时<BR>PORTA = 0x01; 
  //0脚为高,1脚为低,1脚灯亮<BR>Delay(); //延时<BR>PORTA = 0x00; //同时亮<BR>Delay(); 
  //延时<BR>PORTA = 0x03; //同时灭<BR><BR>Com_putstring ("ww",2,&amp;RTbuf_UART0); 
  //输出一个字符串到串行口<BR>while(1)<BR>{<BR>if(Com_R_count(&amp;RTbuf_UART0)!=0)<BR>{<BR>Com_getstring 
  (SIO_buff,1,&amp;RTbuf_UART0);<BR>Com_Rbuf_Clear(&amp;RTbuf_UART0); 
  //清空buffer<BR>if(SIO_buff[0]==1) //接收到一个一<BR>{<BR>Com_putstring 
  ("ok!!",4,&amp;RTbuf_UART0); //输出一个字符串到串行口<BR>PORTA = 0x00; //同时亮<BR>Delay(); 
  //延时<BR>PORTA = 0x03; //同时灭<BR>}<BR>} //end of 
  if(Com_R_count(&amp;RTbuf_UART0)!=0)<BR>Delay();//延时<BR>Com_putstring 
  ("ww00",4,&amp;RTbuf_UART0); //输出一个字符串到串行口<BR>}<BR>} </LI></UL>
<P>串口调试经验谈:</P>
<P>1、确保你的串口连线正常,有的串口的接法,9针串口线的7针和第八针要交叉,本站最小系统板的V2.3需要交叉,V2.5不需要交叉。</P>
<P>2、确保你的MAX232工作正常,方法:在本开发小板上把跳线JP2的1和3短接,2和4不接,通过串口调试助手发什么数据就可以收到什么数据。</P>
<P>3、最容易出现的一个问题是,晶振的选择,本程序要求晶振是7.3728M外部晶振,为什么使用7.3728的特殊晶振,因为它可以产生标准的波特率,如果你收到的是乱码或者根本无法收到,请检查你的晶振的相关熔丝位设置是否正确,这里看看<A 
href="http://www.avrvi.com/start/guide_fuse.html">熔丝位快速入门</A>。</P></DIV></DIV>
<DIV class=m>
<H4 id=link><A href="http://www.avrvi.com/">AVR 与虚拟仪器</A>欢迎交换链接,请与小古联系 
avrvi【at】163.com </H4>
<SCRIPT src="usart串口使用范例.files/links.js" type=text/javascript></SCRIPT>

<SCRIPT src="usart串口使用范例.files/footer.js" type=text/javascript></SCRIPT>
</DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -