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

利用PC的RS232口控制LED燈

發布時間:2011-6-22 11:51    發布者:circuit_share
關鍵詞: LED燈 , RS232


AVR單片機串口程序的編寫

Atmega8單片機的串口具支持多種數據幀結構、有三個完全獨立的中斷(接收完成、發送完成、發送數據寄存器空)等特點,同時也支持多機通訊模式。本實驗就以Atmega8為例來介紹AVR單片機串口的編程。

單片機串口在使用前必須對其進行初始化。初始化內容如下:

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

2.串口中斷工作方式的設置:如果需要串口工作于中斷方式,則要根據需要設置USART的中斷設置,如果工作于查詢方式,那么中斷設置就沒有必要了。本實驗中串口設置為響應接收完成中斷,即接收器接收到一個完整的數據幀后,將觸發一次接收完成中斷。

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

4.數據幀結構設置:本實驗設置為8位數據位+1位停止位。

因此,本實驗的串口初始化程序如下:

void UART_init(void)
{
UCSRB = BIT(RXCIE)| BIT(RXEN) |BIT(TXEN); //允許串口發送和接收,并響應接收完成中斷
UBRR = 51; //設置串口波特率為9600
UCSRC = BIT(URSEL)|BIT(UCSZ1)|BIT(UCSZ0); //幀結構為8位數據+1位stop位
}

如果你對AVR單片機串口的設置還不是太熟悉的話,也可以使用ICC編譯器中的應用向導直接生成串口的相關代碼。操作方法如下:

1.在ICC中新建一個文件;

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



3.點擊上面界面中的UART菜單,出現下面界面。然后按下圖選項選擇使能接收和發送、波特率9600、數據位8位、接收完成中斷。



4.點擊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自動生成的代碼和我們自己編寫的代碼中UCSRC、UBRR、UCSRB是不是一樣的呢?

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

為了保證單片機和PC機的正常可靠的通訊,避免系統出現誤動作,我們需要制訂一個簡單的通訊協議,同時還要定義能夠讓PC和單片機理解的命令。這里我們簡單定義如下:

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

其中s和p字符用于數據的簡單校驗,也就是說當單片機收到的串口數據中如果第一位是“s”第四位是“p”,則單片機接收到的命令有效,否則指令無效。

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

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

其中“t”為校驗碼。S2為單片機地址碼,S1、S0對應繼電器編碼。返回指令用于PC機判斷單片機是否執行了發出的指令。S1S0的二進制數據中,每一位對應一個繼電器的狀態,如果為1表示繼電器吸合,為0表示繼電器釋放。

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

此后,PC機還會每隔5秒鐘自動請求一次繼電器狀態,并且按鍵對繼電器進行操作以后,控制板也會主動向PC機發送狀態字。

4.軟件升級指令。當需要升級單片機軟件時,PC機發送該指令讓單片機進入BOOT load程序區,準備更新軟件版本。該指令格式為“su” S0 “p”,S0為單片機地址碼。

當單片機進入BOOT區后,向PC機發送S0 “upd”指令,S0為單片機地址碼,通知PC機軟件升級已經準備好。然后PC機關閉串口,提示您打開ISP下載軟件進行升級。

5.單片機復位指令。當單片機在線升級完成以后,PC機可以通過發送復位指令讓單片機復位重新進入應用程序區。

Atmega8的IAP應用我們將在后面進行闡述。

后臺PC程序及使用介紹

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

4.點擊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自動生成的代碼和我們自己編寫的代碼中UCSRC、UBRR、UCSRB是不是一樣的呢?

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

為了保證單片機和PC機的正常可靠的通訊,避免系統出現誤動作,我們需要制訂一個簡單的通訊協議,同時還要定義能夠讓PC和單片機理解的命令。這里我們簡單定義如下:

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

其中s和p字符用于數據的簡單校驗,也就是說當單片機收到的串口數據中如果第一位是“s”第四位是“p”,則單片機接收到的命令有效,否則指令無效。

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

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

其中“t”為校驗碼。S2為單片機地址碼,S1、S0對應繼電器編碼。返回指令用于PC機判斷單片機是否執行了發出的指令。S1S0的二進制數據中,每一位對應一個繼電器的狀態,如果為1表示繼電器吸合,為0表示繼電器釋放。

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

此后,PC機還會每隔5秒鐘自動請求一次繼電器狀態,并且按鍵對繼電器進行操作以后,控制板也會主動向PC機發送狀態字。

4.軟件升級指令。當需要升級單片機軟件時,PC機發送該指令讓單片機進入BOOT load程序區,準備更新軟件版本。該指令格式為“su” S0 “p”,S0為單片機地址碼。

當單片機進入BOOT區后,向PC機發送S0 “upd”指令,S0為單片機地址碼,通知PC機軟件升級已經準備好。然后PC機關閉串口,提示您打開ISP下載軟件進行升級。

5.單片機復位指令。當單片機在線升級完成以后,PC機可以通過發送復位指令讓單片機復位重新進入應用程序區。

Atmega8的IAP應用我們將在后面進行闡述。

后臺PC程序及使用介紹

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



界面中的每一個小按鈕控制實驗板上的每一個LED和繼電器。如果串口通訊正常的話,按一下,實驗板上對應的LED將點亮繼電器吸合,再按一下,LED又被關閉繼電器釋放。而全開按則控制實驗板上所有的LED和繼電器開或者關。

下面的PC指令框是顯示PC機發出的每一個控制指令,而返回結果框將顯示實驗板返回的執行結果。

最下面的軟件升級按鈕是執行實驗板的在線升級控制。如果需要對單片機進行軟件升級,我們這里就沒有必要再使用ISP下載程序了。點擊軟件升級,單片機獲得升級指令后將會返回升級準備好的命令,程序就會自動關閉串口,然后提示你使用SL的下載軟件下載程序。

當軟件升級完畢后,CPU是不會自動進入應用程序區的,這是你可以復位單片機或者點擊前臺復位按鍵讓CUP自動復位進入應用程序區。

實際應用

在本實驗的實際應用中,增加了繼電器控制電路和鍵盤電路。既可以通過PC機來控制也可以用過按鍵來控制電器的開關
本文地址:http://m.qingdxww.cn/thread-69289-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • FPGA設計流程培訓教程
  • 無線充電基礎知識及應用培訓教程
  • Chiptorials ——使用ATECC608 TrustFLEX實現基本非對稱身份驗證
  • Chiptorials——如何使用ATECC608 TrustFLEX實現公鑰輪換
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女特黄一级全版视频 | 久久这里只有精品久久 | 国产精品国产三级国产an | 毛片在线视频 | 精品国产一区二区三区国产馆 | 老子影院午夜理伦手机不卡 | 国内精品一区视频在线播放 | 国产开嫩苞视频 | 日本欧美一区二区三区视频麻豆 | 成人午夜视频在线 | 91香蕉国产在线观看免费永久 | 免费久草 | 毛片免费全部完整播放 | 青青青久热国产精品视频 | 青青青免费在线视频 | 天堂网站| 精品福利一区3d动漫 | 蓝月战士奥特曼免费看 | 国产成人精品一区二区三区 | 天天摸天天操天天射 | 国产精品一区二区欧美视频 | 欧美性free极品另类 | 欧美大片在线观看 | 天堂一区二区在线观看 | 国产一级一片免费播放刺激 | 欧美三级网站在线观看 | 日本黄大片在线观看 | 我不卡神马 | 欧美区亚洲区 | 夜夜春影院播放器 | 一区三区三区不卡 | 狠狠色伊人亚洲综合第8页 狠狠色网站 | 99精品久久秒播无毒不卡 | 欧美首页 | 欧美一区=区三区 | 日韩天堂在线观看 | 欧美成人午夜做受视频 | 欧洲成人在线 | 操美女影院 | 日本不卡二卡三卡四卡无卡免费 | 国产精品v欧美精品∨日韩 国产精品va在线观看一 |