?? 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 + -