国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
零成本學(xué)Arduino單片機(jī)之串行通訊 來自 宜昌城老張的博客
零成本學(xué)Arduino單片機(jī)之串行通訊  2012-11-22 18:06
分享到:
一、前言
串口通信(Serial Communications)的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。
進(jìn)行串行通信,一般應(yīng)該有兩個(gè)計(jì)算機(jī),兩個(gè)程序,利用一條串行通信電纜,互相“全雙工”的傳送信息。
利用 PROTEUS 軟件,做串行通信實(shí)驗(yàn)會(huì)很方便,Proteus仿真可以把一個(gè)或者兩臺(tái)計(jì)算機(jī)的硬件功能仿真出來,除了一臺(tái)PC機(jī)運(yùn)行仿真軟件,不用任何其它硬件投入了,就可以進(jìn)行RS232協(xié)議下的通訊實(shí)驗(yàn)。
二、Proteus界面中的虛擬終端與Arduino單片機(jī)之間串行通訊的仿真方法
PROTEUS 軟件中,含有多種虛擬儀器,其中有一個(gè)稱為“虛擬終端”設(shè)備,這個(gè)設(shè)備可以和Arduino單片機(jī)進(jìn)行全雙工的通信。這個(gè)“虛擬終端”設(shè)備不需要編寫一行程序,就可以完成收發(fā)字符任務(wù),有點(diǎn)像我們常用的串口助手軟件的作用。
其實(shí),用兩個(gè) “虛擬終端”,連接上線路,它們也可以通信了。請(qǐng)看下圖:
(雙擊圖片,都可以放大觀看!)
圖1 “虛擬終端”功能演示
這是個(gè)最簡(jiǎn)單的“單工”串行通信系統(tǒng),在這個(gè)系統(tǒng)里面并不需要單片機(jī),不用裝載程序。
點(diǎn)擊Proteus ISIS仿真界面左下方的“播放”按鈕,就會(huì)彈出兩個(gè)“虛擬終端”的對(duì)話窗口,在左邊的,只能鍵入字符,不能顯示字符,剛鍵入的字符,將會(huì)傳輸?shù)挠疫叴翱谥?,在右邊顯示出來。
通過單工通信的例子介紹了“虛擬終端”的功能,接著通過一個(gè)實(shí)例了解下“虛擬終端”如何配合Arduino單片機(jī)做通訊實(shí)驗(yàn)的。
Arduino串行通訊實(shí)例任務(wù)是:調(diào)節(jié)電位計(jì)滑動(dòng)抽頭與地之間的電壓,并把電壓值顯示在一個(gè)“虛擬終端”里。同時(shí),通過另一個(gè)“虛擬終端”輸入字符'a',發(fā)送到Arduino單片機(jī),讓與之相連的LED燈點(diǎn)亮,輸入字符'b',讓LED燈熄滅。如圖2所示。
任務(wù)的仿真全景圖:
圖2 “虛擬終端”與Arduino單片機(jī)串行通訊演示
任務(wù)的仿真視頻:
全屏觀看,點(diǎn)擊網(wǎng)址:
 http://www.tudou.com/v/7MECzdalcz4/&rpid=96368873&resourceId=96368873_04_05_99/v.swf
上面圖片和視頻展示的是“虛擬終端”與Arduino單片機(jī)之間的串行通訊,兩者都在同一個(gè)仿真界面中。同樣的任務(wù)也可以采用另一種“上下位機(jī)”的方式來仿真。
三、Arduino IDE編程界面中的串口監(jiān)視器與Proteus仿真圖中的Arduino單片機(jī)之間串行通訊的仿真方法
現(xiàn)在,進(jìn)一步研究,上下位機(jī)的串行通訊仿真,上位機(jī)軟件采用Arduino IDE編程環(huán)境的串口監(jiān)視器,下位機(jī)是Proteus ISIS仿真界面中的Arduino單片機(jī),上下位機(jī)串行通訊仿真實(shí)驗(yàn)全景圖如下。
圖 3  Arduino IDE中的串口監(jiān)視器與Proteus中的Arduino單片機(jī)串口通訊演示
視頻:
全屏觀看,點(diǎn)擊網(wǎng)址:http://www.tudou.com/v/dUFtwvQrnTE/&rpid=96368873&resourceId=96368873_04_05_99/v.swf。
Proteus界面中的下位機(jī)Arduino單片機(jī)與上位機(jī)軟件進(jìn)行串行通訊,并沒有硬件連接,需要通過某種軟件虛擬出兩個(gè)相互連接的串口,一個(gè)串口分配給Arduino單片機(jī),另一個(gè)串口分配給上位機(jī)串口監(jiān)控軟件,在虛擬環(huán)境下,讓兩者能夠完成上下位機(jī)的串行通訊。這種軟件就是VSPD虛擬串口驅(qū)動(dòng)軟件。如下圖所示。
圖 4    VSPD虛擬串口驅(qū)動(dòng)軟件使用方法
VSPD虛擬串口驅(qū)動(dòng)軟件請(qǐng)下載:http://115.com/file/eizd0usu。
下載和安裝軟件,添加補(bǔ)丁,然后運(yùn)行程序,出現(xiàn)上圖界面。在界面的First選項(xiàng)中選擇COM7,在Second選項(xiàng)中選擇COM8(當(dāng)然也可以選擇其它串口號(hào)配對(duì),前提是被選串口原先是閑置的串口,沒有被占有),然后單擊Add pair 按鈕,這兩個(gè)串口會(huì)立即出現(xiàn)界面左側(cè)的Vitual Port目錄下,且會(huì)有“串口線”將它們連接起來。這時(shí),如果打開PC的設(shè)備管理器,你會(huì)發(fā)現(xiàn)多出了兩個(gè)串口,如下圖所示。
圖5 虛擬串口在PC的設(shè)備管理器中的顯示
在設(shè)備管理器看到了虛擬出的兩個(gè)串口了,問題是具體如何把串口COM7分配給Arduino單片機(jī),如何把COM8分配給Arduino IDE編程軟件的串口監(jiān)視器。
要把串口COM7分配給Proteus仿真環(huán)境下的Arduino單片機(jī),需要用到COMPIM串口連接器組件,這個(gè)組件可以從Proteus的元件模式庫里找到。如下圖。
圖6 COMPIM串口連接器組件的提取方法
先選擇元件模式庫,再點(diǎn)擊“P”按鈕,打開元件查詢提取對(duì)話框,可以在對(duì)話框左上方的關(guān)鍵字輸入欄里輸入元件名稱:COMPIM,回車后,在結(jié)果中可以很容易地找到所需組件。找到后雙擊COMPIM組件,就可以把它提取到Proteus ISIS界面左側(cè)的DEVICES欄中,供電路圖繪制時(shí)隨時(shí)選用,
點(diǎn)選DEVICES欄的COMPIM組件,放置到電氣原理圖中,然后雙擊它,隨之出現(xiàn)COMPIM組件的編輯元件窗口,在窗口中就可以把COM7虛擬串口關(guān)聯(lián)到Arduino單片機(jī)電路中了。下圖中我用紅色矩形框標(biāo)注了,COM7串口設(shè)置在編輯元件窗口中的位置。
圖7 虛擬串口COM7分配給Proteus環(huán)境下Arduino單片機(jī)的方法
然后,介紹如何把COM8分配給Arduino IDE編程軟件的串口監(jiān)視器。打開Arduino IDE編程軟件,點(diǎn)擊菜單欄中的Tools菜單選項(xiàng),在下拉菜單欄選擇Serial→COM8,這樣就可以把COM8串口與Arduino IDE編程軟件的串口監(jiān)視器關(guān)聯(lián)起來了。
圖8 虛擬串口COM8分配給Arduino IDE編程界面下串口監(jiān)視器的方法
雙擊Arduino IDE工具欄的“Serial Monitor”工具圖標(biāo),會(huì)打開串口監(jiān)視器窗口。如果運(yùn)行圖3所示任務(wù)的程序,在窗口中,會(huì)看到電位計(jì)的電壓值實(shí)時(shí)變化,你在“Send”輸入欄里,輸入‘a(chǎn)’字符,Proteus仿真圖的LED燈會(huì)點(diǎn)亮,輸入‘b’字符,LED會(huì)熄滅。這說明COM7和COM8這兩個(gè)虛擬串口能正確仿真串行通訊,就好像兩個(gè)物理串口在通訊一樣。
圖9 Arduino IDE編程界面的串口監(jiān)視器
對(duì)于Arduino IDE編程界面的串口監(jiān)視器,你不需要為它編寫程序,它本身就可以實(shí)現(xiàn)字符收發(fā)的功能,你用Arduino編程界面編寫的程序是Proteus仿真圖中Arduino單片機(jī)的串行通訊程序,以及電位計(jì)電壓值采集和LED燈亮滅輸出的程序。程序如下。
/*任務(wù):調(diào)節(jié)電位計(jì)滑動(dòng)抽頭與地之間的電壓,并把
電壓值顯示在上位機(jī)Arduino IDE編程環(huán)境的串口監(jiān)視器里。
同時(shí),通過串口監(jiān)視器輸入字符'a',發(fā)送到Proteus環(huán)境下的
下位機(jī)Arduino單片機(jī),讓與之相連的LED燈熄滅。
*/
int led=9;     //把LED連在Arduino數(shù)字端口9
int potpin = 0; //把電位計(jì)連在Arduino模擬端口0
//初始化
void setup()
{
Serial.begin(9600);  //啟動(dòng)串行通訊,波特率為9600b/s
pinMode(led,OUTPUT);  //申明數(shù)字端口9為輸出端口
digitalWrite(led,HIGH); //初始化LED燈為熄滅狀態(tài)
}
//主程序
void loop()
{
float sensorValue = analogRead(potpin); //讀取電位計(jì)采樣值
float voltage=sensorValue/1023*5;//采樣值0-1024轉(zhuǎn)換為0-5V電壓值
Serial.print("voltage = ");//在Arduino IDE的串口監(jiān)視器實(shí)時(shí)顯示電壓值
Serial.print(voltage);
Serial.println(" V");
char val;//定義變量val,用于暫存上位機(jī)發(fā)送來的字符
if(Serial.available()>0)//如果上位機(jī)發(fā)送來了字符
{
val=Serial.read(); //讀取上位機(jī)發(fā)來的字符,并保存到val
Serial.println(val); //顯示接受到的字符
if(val=='a')//如果上位機(jī)發(fā)送字符'a',
{
digitalWrite(led,LOW); //點(diǎn)亮LED燈
}
if(val=='b')//如果上位機(jī)發(fā)送字符'b',
{
digitalWrite(led,HIGH);//熄滅LED燈
}
}
delay(100);//延時(shí)100ms
}
把兩個(gè)計(jì)算機(jī)的串口波特率都設(shè)置為9600b/s,COM7和COM8正確分配給上、下位計(jì)算機(jī),再運(yùn)行以上程序,就會(huì)看到視頻中展示得那樣的實(shí)驗(yàn)現(xiàn)象。
文章中介紹的兩個(gè)仿真項(xiàng)目的Proteus仿真圖供下載(Proteus 7.6版本):Proteus仿真圖下載.zip。
四、結(jié)束語
單看這篇文章應(yīng)該理解Arduino單片機(jī)串行通訊仿真流程,但按照文章內(nèi)容照著做仿真實(shí)驗(yàn),應(yīng)該還需要了解些Arduino單片機(jī)仿真的基礎(chǔ)知識(shí),例如hex機(jī)器碼文件如何加載,Arduino單片機(jī)的工作參數(shù)如何設(shè)置等,這需要參看《零成本學(xué)Arduino單片機(jī)之入門》 一文,文章地址:http://www.eefocus.com/zhang700309/blog/12-10/287570_57f22.html 。
Arduino在國(guó)外創(chuàng)客界十分流行,但在國(guó)內(nèi)才剛剛起步,所以如何讓越來越多的DIY愛好者進(jìn)入Arduino大門,就需要降低這扇大門的門檻。降低門檻不僅僅是Arduino的易學(xué)好用和豐富網(wǎng)絡(luò)共享,還有就是要降低初學(xué)者的硬件成本投入,如何解決少花錢,而多學(xué)習(xí)Arduino,Proteus仿真是一個(gè)很好的途徑。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于Protues的Arduino學(xué)習(xí)筆記01
proteus仿真arduino,實(shí)現(xiàn)共陽數(shù)碼管顯示數(shù)字0到9
簡(jiǎn)單的邏輯電路實(shí)驗(yàn)(三)
proteus與keil Cx51的單片機(jī)仿真(串行口輸出擴(kuò)展)
Proteus通過虛擬串口程序仿真51單片機(jī)串口的實(shí)現(xiàn)
51單片機(jī)串口通信使用類似printf函數(shù)的兩種辦法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服