国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

利用PC的RS232口控制LED燈

發(fā)布時(shí)間:2011-6-22 11:51    發(fā)布者:circuit_share
關(guān)鍵詞: LED燈 , RS232


AVR單片機(jī)串口程序的編寫

Atmega8單片機(jī)的串口具支持多種數(shù)據(jù)幀結(jié)構(gòu)、有三個(gè)完全獨(dú)立的中斷(接收完成、發(fā)送完成、發(fā)送數(shù)據(jù)寄存器空)等特點(diǎn),同時(shí)也支持多機(jī)通訊模式。本實(shí)驗(yàn)就以Atmega8為例來(lái)介紹AVR單片機(jī)串口的編程。

單片機(jī)串口在使用前必須對(duì)其進(jìn)行初始化。初始化內(nèi)容如下:

1.串口接收器和發(fā)送器的使能設(shè)置:首先我們要根據(jù)需要,使能M8串口的接收器或者發(fā)射器,這樣I/O口(PD1:TXD,PD2:RXD)才能為USART工作。

2.串口中斷工作方式的設(shè)置:如果需要串口工作于中斷方式,則要根據(jù)需要設(shè)置USART的中斷設(shè)置,如果工作于查詢方式,那么中斷設(shè)置就沒有必要了。本實(shí)驗(yàn)中串口設(shè)置為響應(yīng)接收完成中斷,即接收器接收到一個(gè)完整的數(shù)據(jù)幀后,將觸發(fā)一次接收完成中斷。

3.波特率設(shè)置:也就是設(shè)置串口的數(shù)據(jù)傳輸速率,兩個(gè)串口之間要正常通訊就必須要保證波特率相同。本實(shí)驗(yàn)設(shè)置的波特率為9600,系統(tǒng)使用內(nèi)置8MHZ時(shí)鐘源,可以直接查表(《Atmega8原理及應(yīng)用手冊(cè)》129頁(yè))得到UBRR=51。

4.數(shù)據(jù)幀結(jié)構(gòu)設(shè)置:本實(shí)驗(yàn)設(shè)置為8位數(shù)據(jù)位+1位停止位。

因此,本實(shí)驗(yàn)的串口初始化程序如下:

void UART_init(void)
{
UCSRB = BIT(RXCIE)| BIT(RXEN) |BIT(TXEN); //允許串口發(fā)送和接收,并響應(yīng)接收完成中斷
UBRR = 51; //設(shè)置串口波特率為9600
UCSRC = BIT(URSEL)|BIT(UCSZ1)|BIT(UCSZ0); //幀結(jié)構(gòu)為8位數(shù)據(jù)+1位stop位
}

如果你對(duì)AVR單片機(jī)串口的設(shè)置還不是太熟悉的話,也可以使用ICC編譯器中的應(yīng)用向?qū)е苯由纱诘南嚓P(guān)代碼。操作方法如下:

1.在ICC中新建一個(gè)文件;

2.點(diǎn)擊Tools菜單中的Application Builder子菜單,將彈出以下界面,然后根據(jù)需要選擇CPU為M8,晶振頻率為8MHZ。



3.點(diǎn)擊上面界面中的UART菜單,出現(xiàn)下面界面。然后按下圖選項(xiàng)選擇使能接收和發(fā)送、波特率9600、數(shù)據(jù)位8位、接收完成中斷。



4.點(diǎn)擊OK后,在剛才新建的文件中即生成了完整代碼,其中串口初始化的代碼如下:

//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x33; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x98;
}

大家看看使用ICC自動(dòng)生成的代碼和我們自己編寫的代碼中UCSRC、UBRR、UCSRB是不是一樣的呢?

通訊協(xié)議及命令(2004-10-29)

為了保證單片機(jī)和PC機(jī)的正常可靠的通訊,避免系統(tǒng)出現(xiàn)誤動(dòng)作,我們需要制訂一個(gè)簡(jiǎn)單的通訊協(xié)議,同時(shí)還要定義能夠讓PC和單片機(jī)理解的命令。這里我們簡(jiǎn)單定義如下:

1.PC機(jī)發(fā)送的繼電器控制指令采用4個(gè)字符組成的字符串格式“s” S1S0 “p”,如“s00p”。

其中s和p字符用于數(shù)據(jù)的簡(jiǎn)單校驗(yàn),也就是說(shuō)當(dāng)單片機(jī)收到的串口數(shù)據(jù)中如果第一位是“s”第四位是“p”,則單片機(jī)接收到的命令有效,否則指令無(wú)效。

S1是單片機(jī)地址識(shí)別,如果單片機(jī)接收到的S1字符等于自己的地址碼,則單片機(jī)執(zhí)行命令,否則無(wú)效。通過(guò)這個(gè)字符我們就可以通過(guò)一個(gè)PC機(jī)串口和多個(gè)單片機(jī)進(jìn)行通訊,這種通訊方式的設(shè)置我們會(huì)在后面闡述。S0對(duì)應(yīng)繼電器編碼,指定相應(yīng)繼電器的吸合或者釋放,如果S0=“a”,則該板的所有繼電器全部吸合,如果是“b”則全部釋放。

2.單片機(jī)返回給PC機(jī)的指令也同樣采用4個(gè)字符串格式S2S1S0 “t”,如“000t”。

其中“t”為校驗(yàn)碼。S2為單片機(jī)地址碼,S1、S0對(duì)應(yīng)繼電器編碼。返回指令用于PC機(jī)判斷單片機(jī)是否執(zhí)行了發(fā)出的指令。S1S0的二進(jìn)制數(shù)據(jù)中,每一位對(duì)應(yīng)一個(gè)繼電器的狀態(tài),如果為1表示繼電器吸合,為0表示繼電器釋放。

3.通訊檢測(cè)。當(dāng)后臺(tái)程序啟動(dòng)后,PC機(jī)先發(fā)送“s00t”命令,如果PC機(jī)在6秒以內(nèi)能夠收到單片機(jī)返回的繼電器狀態(tài)(該狀態(tài)是讀取控制繼電器的I/O口的電平獲得的),則PC機(jī)判斷通訊正常,可以正常使用,否則PC機(jī)提示串口通訊不正常。

此后,PC機(jī)還會(huì)每隔5秒鐘自動(dòng)請(qǐng)求一次繼電器狀態(tài),并且按鍵對(duì)繼電器進(jìn)行操作以后,控制板也會(huì)主動(dòng)向PC機(jī)發(fā)送狀態(tài)字。

4.軟件升級(jí)指令。當(dāng)需要升級(jí)單片機(jī)軟件時(shí),PC機(jī)發(fā)送該指令讓單片機(jī)進(jìn)入BOOT load程序區(qū),準(zhǔn)備更新軟件版本。該指令格式為“su” S0 “p”,S0為單片機(jī)地址碼。

當(dāng)單片機(jī)進(jìn)入BOOT區(qū)后,向PC機(jī)發(fā)送S0 “upd”指令,S0為單片機(jī)地址碼,通知PC機(jī)軟件升級(jí)已經(jīng)準(zhǔn)備好。然后PC機(jī)關(guān)閉串口,提示您打開ISP下載軟件進(jìn)行升級(jí)。

5.單片機(jī)復(fù)位指令。當(dāng)單片機(jī)在線升級(jí)完成以后,PC機(jī)可以通過(guò)發(fā)送復(fù)位指令讓單片機(jī)復(fù)位重新進(jìn)入應(yīng)用程序區(qū)。

Atmega8的IAP應(yīng)用我們將在后面進(jìn)行闡述。

后臺(tái)PC程序及使用介紹

后臺(tái)程序使用VB6.0編寫,其中利用VB的MSComm控件完成PC和單片機(jī)的通訊。界面如下:

4.點(diǎn)擊OK后,在剛才新建的文件中即生成了完整代碼,其中串口初始化的代碼如下:

//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x33; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x98;
}

大家看看使用ICC自動(dòng)生成的代碼和我們自己編寫的代碼中UCSRC、UBRR、UCSRB是不是一樣的呢?

通訊協(xié)議及命令(2004-10-29)

為了保證單片機(jī)和PC機(jī)的正常可靠的通訊,避免系統(tǒng)出現(xiàn)誤動(dòng)作,我們需要制訂一個(gè)簡(jiǎn)單的通訊協(xié)議,同時(shí)還要定義能夠讓PC和單片機(jī)理解的命令。這里我們簡(jiǎn)單定義如下:

1.PC機(jī)發(fā)送的繼電器控制指令采用4個(gè)字符組成的字符串格式“s” S1S0 “p”,如“s00p”。

其中s和p字符用于數(shù)據(jù)的簡(jiǎn)單校驗(yàn),也就是說(shuō)當(dāng)單片機(jī)收到的串口數(shù)據(jù)中如果第一位是“s”第四位是“p”,則單片機(jī)接收到的命令有效,否則指令無(wú)效。

S1是單片機(jī)地址識(shí)別,如果單片機(jī)接收到的S1字符等于自己的地址碼,則單片機(jī)執(zhí)行命令,否則無(wú)效。通過(guò)這個(gè)字符我們就可以通過(guò)一個(gè)PC機(jī)串口和多個(gè)單片機(jī)進(jìn)行通訊,這種通訊方式的設(shè)置我們會(huì)在后面闡述。S0對(duì)應(yīng)繼電器編碼,指定相應(yīng)繼電器的吸合或者釋放,如果S0=“a”,則該板的所有繼電器全部吸合,如果是“b”則全部釋放。

2.單片機(jī)返回給PC機(jī)的指令也同樣采用4個(gè)字符串格式S2S1S0 “t”,如“000t”。

其中“t”為校驗(yàn)碼。S2為單片機(jī)地址碼,S1、S0對(duì)應(yīng)繼電器編碼。返回指令用于PC機(jī)判斷單片機(jī)是否執(zhí)行了發(fā)出的指令。S1S0的二進(jìn)制數(shù)據(jù)中,每一位對(duì)應(yīng)一個(gè)繼電器的狀態(tài),如果為1表示繼電器吸合,為0表示繼電器釋放。

3.通訊檢測(cè)。當(dāng)后臺(tái)程序啟動(dòng)后,PC機(jī)先發(fā)送“s00t”命令,如果PC機(jī)在6秒以內(nèi)能夠收到單片機(jī)返回的繼電器狀態(tài)(該狀態(tài)是讀取控制繼電器的I/O口的電平獲得的),則PC機(jī)判斷通訊正常,可以正常使用,否則PC機(jī)提示串口通訊不正常。

此后,PC機(jī)還會(huì)每隔5秒鐘自動(dòng)請(qǐng)求一次繼電器狀態(tài),并且按鍵對(duì)繼電器進(jìn)行操作以后,控制板也會(huì)主動(dòng)向PC機(jī)發(fā)送狀態(tài)字。

4.軟件升級(jí)指令。當(dāng)需要升級(jí)單片機(jī)軟件時(shí),PC機(jī)發(fā)送該指令讓單片機(jī)進(jìn)入BOOT load程序區(qū),準(zhǔn)備更新軟件版本。該指令格式為“su” S0 “p”,S0為單片機(jī)地址碼。

當(dāng)單片機(jī)進(jìn)入BOOT區(qū)后,向PC機(jī)發(fā)送S0 “upd”指令,S0為單片機(jī)地址碼,通知PC機(jī)軟件升級(jí)已經(jīng)準(zhǔn)備好。然后PC機(jī)關(guān)閉串口,提示您打開ISP下載軟件進(jìn)行升級(jí)。

5.單片機(jī)復(fù)位指令。當(dāng)單片機(jī)在線升級(jí)完成以后,PC機(jī)可以通過(guò)發(fā)送復(fù)位指令讓單片機(jī)復(fù)位重新進(jìn)入應(yīng)用程序區(qū)。

Atmega8的IAP應(yīng)用我們將在后面進(jìn)行闡述。

后臺(tái)PC程序及使用介紹

后臺(tái)程序使用VB6.0編寫,其中利用VB的MSComm控件完成PC和單片機(jī)的通訊。界面如下:



界面中的每一個(gè)小按鈕控制實(shí)驗(yàn)板上的每一個(gè)LED和繼電器。如果串口通訊正常的話,按一下,實(shí)驗(yàn)板上對(duì)應(yīng)的LED將點(diǎn)亮繼電器吸合,再按一下,LED又被關(guān)閉繼電器釋放。而全開按則控制實(shí)驗(yàn)板上所有的LED和繼電器開或者關(guān)。

下面的PC指令框是顯示PC機(jī)發(fā)出的每一個(gè)控制指令,而返回結(jié)果框?qū)@示實(shí)驗(yàn)板返回的執(zhí)行結(jié)果。

最下面的軟件升級(jí)按鈕是執(zhí)行實(shí)驗(yàn)板的在線升級(jí)控制。如果需要對(duì)單片機(jī)進(jìn)行軟件升級(jí),我們這里就沒有必要再使用ISP下載程序了。點(diǎn)擊軟件升級(jí),單片機(jī)獲得升級(jí)指令后將會(huì)返回升級(jí)準(zhǔn)備好的命令,程序就會(huì)自動(dòng)關(guān)閉串口,然后提示你使用SL的下載軟件下載程序。

當(dāng)軟件升級(jí)完畢后,CPU是不會(huì)自動(dòng)進(jìn)入應(yīng)用程序區(qū)的,這是你可以復(fù)位單片機(jī)或者點(diǎn)擊前臺(tái)復(fù)位按鍵讓CUP自動(dòng)復(fù)位進(jìn)入應(yīng)用程序區(qū)。

實(shí)際應(yīng)用

在本實(shí)驗(yàn)的實(shí)際應(yīng)用中,增加了繼電器控制電路和鍵盤電路。既可以通過(guò)PC機(jī)來(lái)控制也可以用過(guò)按鍵來(lái)控制電器的開關(guān)
本文地址:http://m.qingdxww.cn/thread-69289-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久免费视频 | 日韩欧美一区二区不卡 | 欧美在线免费看 | 我不卡影视 | 日日日日操 | 国产99色 | 天天操夜夜拍 | 日本中文字幕一区二区高清在线 | www.夜夜骑.com| 日本高清中文字幕一区二区三区 | 韩国专线1区 | 久久精品综合免费观看 | h动漫免费观看 | 色花堂国产精品第一页 | 日韩精品视频一区二区三区 | 天天色踪合合 | 热99在线视频 | 婷婷欧美 | 天天夜夜狠狠 | 精品视频在线观看一区二区 | 日本视频久久 | 国产精品手机网站 | 成年男人的天堂 | 两个人的视频在线观看www免费 | 男人社区天堂 | a色视频| 日本网络视频www色高清免费 | 国产精品免费播放 | 在线观看 日韩 | 香蕉在线精品视频在线观看6 | 粉嫩在线| 日日射视频 | 日日摸狠狠的摸夜夜摸 | 这里只有久久精品 | 加勒比综合| 亚洲色图男人天堂 | 在线观看一区二区精品视频 | 亚洲高清在线视频 | 夜夜操天天摸 | 麻豆网站在线播放 | 高清毛片免费看 |