版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、pc機(jī)與pic單片機(jī)串行通訊的實(shí)現(xiàn)隨著計(jì)算機(jī)應(yīng)用技術(shù)和微機(jī)網(wǎng)絡(luò)技術(shù)的進(jìn)展,計(jì)算機(jī)與其外部設(shè)備之間的數(shù)據(jù)傳輸更加顯得重要。而串行通訊技術(shù)是實(shí)現(xiàn)這一功能的有效途徑,他具有用法便利、數(shù)據(jù)傳輸牢靠、適用于遠(yuǎn)距離通訊的特點(diǎn),在工業(yè)監(jiān)控、數(shù)據(jù)采集、檢測(cè)等系統(tǒng)中有著廣泛的應(yīng)用。1 異步串行通訊的原理及硬件的實(shí)現(xiàn)11 異步串行通訊的原理在異步通訊中,數(shù)據(jù)是一幀一幀傳送的,在幀格式中,一個(gè)字符由4部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。首先是一個(gè)起始位"o",然后是58位數(shù)據(jù)(規(guī)定低位在前,高位在后),接下來(lái)是奇偶校驗(yàn)位(可省略),最后是停止位"1"。起始位&quo
2、t;o"信號(hào)只占用1 位,用來(lái)通知接收設(shè)備一個(gè)待接收的字符開頭到來(lái)。線路上在不傳送字符時(shí)應(yīng)保持為"廣。接收端不斷檢測(cè)線路的狀態(tài),若延續(xù)為"1"以后又檢測(cè)到一個(gè)"o",就知道發(fā)來(lái)一個(gè)新字符,應(yīng)馬上預(yù)備接收。12 硬件電路的實(shí)現(xiàn)pc機(jī)與l6c711之間的串行異步通訊采納rs232接口電路實(shí)現(xiàn),利用計(jì)算機(jī)的串行接口舉行數(shù)據(jù)傳輸。由于rs232規(guī)律對(duì)地是對(duì)稱的,與tti。,規(guī)律電平徹低不同。規(guī)律"1"電平為一515v之間,規(guī)律電平"0"為+ 515v之間,其與單片機(jī)的規(guī)律電平不全都,必需舉行電子轉(zhuǎn)換,采
3、納mcl488和mcl489芯片可分離實(shí)現(xiàn)ttl-rs232和rs232-ttl 之間的電平轉(zhuǎn)換。接口2所示。2 pc機(jī)通訊程序的編制利用vc+60在windows 98以上的環(huán)境下運(yùn)行,vc實(shí)現(xiàn)串行通訊有3種途徑:(1)利用mscomm控件,他是microsoh公司提供的簡(jiǎn)化windows串行通訊編程的activex控件,他為應(yīng)用程序提供了處理串行通訊的2種辦法:數(shù)據(jù)驅(qū)動(dòng)法和查詢法;(2)利用cseria1pont類舉行串口通訊,他適合于需要用法多個(gè)串口時(shí)的通訊;(3)用win api函數(shù)對(duì)串口舉行操作。本文以vc+60調(diào)用win api函數(shù)為例編程實(shí)現(xiàn)。win api函數(shù)對(duì)串口舉行操作不是
4、對(duì)端口挺直舉行讀寫,而是把全部的設(shè)備都看成文件,從而舉行相應(yīng)的文件操作。第1步,在mainformcpp定義全局變量handle hcom;預(yù)備打開的串口的句柄handleh comm watchthread;輔助線程的全局函數(shù)第2步,打開串口,設(shè)置串口hcom=createfile(coml, generic_readgeneric_write,null, open_existing, file_ flag_overlapped,null);這里,我們用法file_flag_overlapped結(jié)構(gòu),這正是用法api函數(shù)實(shí)現(xiàn)非堵塞通訊的關(guān)鍵所在。assert(hcom! invalid ha
5、ndle value);檢測(cè)打開串口操作是否勝利setcommmask(hcom,evrxchar ievtxempty);設(shè)置大事驅(qū)動(dòng)的類型setupcomm(hcom,1024,512); 設(shè)置輸入緩沖區(qū)的大小purgecomm (hcom, purge txabort purge rxabortpurgetxclearpurge rxclear);清理輸入輸出緩沖區(qū)commtimeouts comm丁imeouts;定義超時(shí)結(jié)構(gòu),井填寫該結(jié)構(gòu)setcommtimeouts (hcom,&commtimesouts);設(shè)置讀寫操作所允許的超時(shí)dcb dcb; 設(shè)置數(shù)據(jù)控制快的結(jié)構(gòu)d
6、cbbaudrate9600; 設(shè)置波特率dcbbytesze=8;dcbstopbitsonestopbit;dcbfbinarytrue; 二進(jìn)制通訊格式dcbfpar北y:false;setcommstate(hcom,&dcb) 串口參數(shù)配置第3步,啟動(dòng)一個(gè)輔助線程,用于串口大事的處理。這里用他來(lái)監(jiān)視串口狀態(tài),主線程則可用心舉行數(shù)據(jù)處理。hcommwatchthread createthread (lpsecurity_attributes) null, (lptheard_ start - routine) commwatchproc, getsafehwnd ( ),&am
7、p;dwthreadid);assert(hcommwatchthread! =null);第4步,要為輔助線程寫一個(gè)全局函數(shù),主要完成數(shù)據(jù)接收的工作。unit commwatchproc(hwnd hsendwnd)dword dwevtmask=0;setcommmask(hcom,ev_rxcharev_ _txempty);有哪些串口大事需要監(jiān)視waitcommevent(hcom,&dwevmask,os);等待串口通訊大事的發(fā)生if(dwevtmask&ev_rxchar)= =ev_rxchar)緩沖區(qū)中有數(shù)據(jù)到達(dá)comstart comstari;dword d
8、wlenlgth;clearcommerror(hcom,&dwerrorflags,&comstart);dwlength=comstatcbinquei ; 輸入緩沖區(qū)有多少數(shù)據(jù)if(dwlenltth0)bool freadstarifreadstat = =readfile (hcom, 1pbuffer,dwlength,&dwbytesread,&read_os(npttyinfo);讀數(shù)據(jù)由于用法1poverlapped結(jié)構(gòu),readfile()立刻返回false;if(! freadstat)if(getlasterror()= =error_i
9、o_pendin)while (! getoverlappedreault (hcom,&read_os(opttyinfo),&dwnytesread,true)dwerror=getlasterror();if(dwerrorerror_io_incomplete)continue; 緩沖區(qū)數(shù)據(jù)沒有讀完,繼續(xù) postmessage ( hwnd ) hsendwnd, wmnotifyprocess,0,0); 通知主線程,串口接到數(shù)據(jù)第5步,在主線程中發(fā)送下行指令:bool f writestat;char szbuffercount;預(yù)備好發(fā)送的數(shù)據(jù),放在szbuff
10、er中fwrirtestarwritefile(hcom,szbuffer,dwbytestowrite,&dwbyteswritten&write_os(npttyinof);int err=getlasterror();if(!fwritestat)if(getlasterror()= =error_io_pending)while (! getoverlappedresult (hcom,&write os(npttyinfo),&dwbyteswritten,true)dwerror=getlasrerror();if(dwerror= =error_i
11、o_incomplete)dwbytessent+dwbyteswritten;continue;)3 pic"c711單片機(jī)串行通訊的實(shí)現(xiàn)本文以單片機(jī)對(duì)溫度dsl820舉行數(shù)據(jù)采集為例,實(shí)現(xiàn)單片機(jī)與pc機(jī)的通訊。限于篇幅,給出傳送一個(gè)dsl820信號(hào)到串口的主要部分程序:a2 equ 2 ra2接收數(shù)據(jù)端a1 equ 1 ral發(fā)送數(shù)據(jù)rcvreg equ 26r-count equ 27 接收數(shù)據(jù)計(jì)數(shù)器t-count equ 28 發(fā)送數(shù)據(jù)計(jì)數(shù)器msb equ 7num equ 6b 設(shè)置下位機(jī)序號(hào)67num-addr equ 2a 存儲(chǔ)本機(jī)號(hào)碼的地址sen-code equ 3
12、9 傳感器信號(hào)存放地址main call sub-init 初始化程序call sub-rec 調(diào)用接收子程序call sub_ comp 對(duì)接收的數(shù)據(jù)舉行處理callsub_trans 發(fā)送數(shù)據(jù)子程序gotoexitsub_initclrf rabcf status,rp0movlw b'00001101' 初始化movwftrisamovlw nummovwf numreturnsub-recrcvr btfscra,a2 檢測(cè)起始位goto rcvr 未檢測(cè)到movl w2 接收的數(shù)據(jù)位數(shù)movwf r_counr_nextcall delay 調(diào)用延時(shí)程序bcf sta
13、tus,crrf rcvregbtfsc ra,a2bsf rcvreg,msbcall delaydecfsz r_countgoto r_nextreturnsub_compmovlw 6amovwf contmovfcont,wxorwf num_addr,1 movlw1 ;addwf num_addr,1 decfsznum-addr,1goto exitnopovernopreturnsub_transmovlw 3 發(fā)送的數(shù)據(jù)位數(shù)movwf t_ countmovlw 2amovwf sen_codebcf ra,a1 設(shè)置發(fā)送起始位0t_nextcall delayrrf sen_codebtfsc status,cbsf ra,a1 發(fā)送數(shù)據(jù)位"1"btfss status,cbcf ra,a1 發(fā)送數(shù)據(jù)位"0"decfs2t_countgoto t_nextcall delaybsf ra,a1 發(fā)送停止位returnexitnopend4 結(jié) 語(yǔ)本文所論述的通訊辦法曾在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度門衛(wèi)室安保人員福利保障合同范本3篇
- 2025年度個(gè)人期房買賣合同(智能家居系統(tǒng)安全性能保障)2篇
- 2025年度外墻石材裝飾工程承攬合同4篇
- 2025年度大學(xué)兼職教師教學(xué)質(zhì)量考核合同
- 二零二五年度城市公園綠化苗木批發(fā)合同范本3篇
- 2025年度農(nóng)業(yè)現(xiàn)代化種植基地承包合同4篇
- 2025年度模具加工綠色制造與節(jié)能減排合同3篇
- 2025年木跳板生產(chǎn)項(xiàng)目投資合作采購(gòu)合同4篇
- 2025年度個(gè)人信用卡透支及還款管理合同8篇
- 標(biāo)準(zhǔn)合同:2025年廣東交通行業(yè)勞務(wù)派遣人員勞動(dòng)合同3篇
- 中級(jí)半導(dǎo)體分立器件和集成電路裝調(diào)工技能鑒定考試題庫(kù)(含答案)
- 2024年江西生物科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)帶解析答案
- 橋本甲狀腺炎-90天治療方案
- (2024年)安全注射培訓(xùn)課件
- 2024版《建設(shè)工程開工、停工、復(fù)工安全管理臺(tái)賬表格(流程圖、申請(qǐng)表、報(bào)審表、考核表、通知單等)》模版
- 部編版《道德與法治》六年級(jí)下冊(cè)教材分析萬(wàn)永霞
- 粘液腺肺癌病理報(bào)告
- 酒店人防管理制度
- 油田酸化工藝技術(shù)
- 上海高考英語(yǔ)詞匯手冊(cè)列表
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)五 其他內(nèi)容類型的生產(chǎn)
評(píng)論
0/150
提交評(píng)論