<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計應(yīng)用 > 基于單片機(jī)應(yīng)用系統(tǒng)的串行通信設(shè)計

          基于單片機(jī)應(yīng)用系統(tǒng)的串行通信設(shè)計

          作者: 時間:2012-07-20 來源:網(wǎng)絡(luò) 收藏

          標(biāo)簽: 紅外成像

          本文引用地址:http://www.ex-cimer.com/article/154345.htm

          1 引 言

          在紅外成像技術(shù)的電力設(shè)備狀態(tài)檢測系統(tǒng)中,AT89C51,采用美國雷態(tài)公司的型號為3iLRL3的非接觸式紅外測溫儀。該測溫儀采用的是RS232C標(biāo)準(zhǔn)接口,該接口在很多設(shè)備中通用,目前與PC機(jī)的直接通信也是RS 232C接口。盡管RS232C性能指標(biāo)并非很好,但還是有廣泛的市場支持。就可以方便的在2個數(shù)字設(shè)備之間進(jìn)行信息的交換,實現(xiàn)全雙工的傳送數(shù)據(jù),硬件成本低。而且通用性好。

          2 串行通信的硬件

          串行通信是指 使用一條數(shù)據(jù)線,將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個固定的時間長度。其只需要少數(shù)幾條線就可以在系統(tǒng)間交換信息,特別使用于計算機(jī)與計算機(jī)、計算機(jī)與外設(shè)之間的遠(yuǎn)距離通信。

          在所開發(fā)的系統(tǒng)中。紅外測溫儀將檢測電力沒備的工作和環(huán)境溫度,通過RS 232C串口傳給,同時由控制檢測裝置的在線工作組態(tài),紅外檢測裝置的工作組態(tài)的制訂和選擇是由上位PC機(jī)來完成的,這樣,以單片機(jī)為核心組成的控制電路是數(shù)據(jù)的中轉(zhuǎn)站,上位PC機(jī)下傳紅外測溫儀的在線工作組態(tài)。在這里單片機(jī)與PC機(jī)的串行通信接口還是RS 232C的標(biāo)準(zhǔn)通信。AT89C51單片機(jī)僅有一個串口,這就要解決另一個串口外擴(kuò)問題,系統(tǒng)利用的通用串行通信接口芯片8251A來擴(kuò)展。該系統(tǒng)的串行通信的硬件電路如圖1所示。

          串行通信接口電路圖

          RS-232是EIA(Electronics Industries Association)電平。信號電平采用負(fù)邏輯,邏輯1=一12V,邏輯0=+12V。這與單片機(jī)的TTL信號電平不兼容,所以RS232C與89C51單片機(jī)的串口RXD(串行接收口)和TXD(串行發(fā)送口)不能直接連接,需要跨接一個轉(zhuǎn)換器在RS232C與TTL電路之間進(jìn)行電平轉(zhuǎn)換。輸出RS 232C電平。MC1489是接收RS 232C電平,輸出TTL電平,該電平轉(zhuǎn)換接口的不便之處是需要±12V工作電壓,并且功耗較大。不適用于低功耗的系統(tǒng)。

          在系統(tǒng)中,紅外測溫儀與PC機(jī)2個串行口,而89C51只有1個串口,利用可編程通用串行接口芯片8251A實現(xiàn)與上位Pc機(jī)通信,由于8251A串口芯片的片選端CS接到74LS138譯碼器的Y2。因此8251A的口地址為OA000H,RXCLK和TXCLK接收和發(fā)送時鐘都連接51的T1口,利用T1作為波特率發(fā)生器[1]。

          3 軟件

          AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。

          主要特性:

          ·與MCS-51 兼

          128×8位內(nèi)部RAM

          ·32可編程I/O線

          ·兩個16位定時器/計數(shù)器

          ·5個中斷源

          ·可編程串行通道

          ·低功耗的閑置和掉電模式

          ·片內(nèi)振蕩器和時鐘電路

          紅外測溫儀的串口通過MAX232直接與89C15連接,所以紅外掃描傳感頭按給定的掃描策略掃描電力設(shè)備,讀入溫度掃描信號,做最大值、最小值、平均值及異常剔除處理,單片機(jī)記錄掃描時間和溫度值,等待PC機(jī)命令。向PC機(jī)發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)流程如圖2所示。紅外傳感器通過Pc機(jī)下傳的在線工作組態(tài)控制檢測電力設(shè)備的狀態(tài),其接收數(shù)據(jù)的流程如圖3所示。單片機(jī)與PC機(jī)之間的串行通信通過825lA,所以在通信程序中首先對825lA進(jìn)行初始化編程,設(shè)置串口通信方式,確定通信協(xié)議。這些是通信程序的關(guān)鍵點。

          發(fā)送數(shù)據(jù)流程

          單片機(jī)向PC機(jī)發(fā)送數(shù)據(jù)流程圖

          (1)串口的工作方式設(shè)置

          通過對單片機(jī)的串口控制寄存器(SCON)的設(shè)置來完成,由于采用一幀11位的數(shù)據(jù)格式,所以89C51的串口的工作方式只能設(shè)置成方式2和方式3,數(shù)據(jù)傳輸?shù)牟ㄌ芈视卸〞r器控制,本系統(tǒng)采用方式3,單片機(jī)的串行接收的l幀數(shù)據(jù)中,奇偶校驗位由SCON的TB8和RB8(第9位數(shù)據(jù))來完成校驗功能。

          (2)串口波特率的設(shè)定

          通過此公式的計算可以進(jìn)一步驗證在設(shè)計系統(tǒng)選用的晶振的頻率為11.0592MHz時計算出來的T1初值沒有誤差。

          (3)握手信號的規(guī)定

          請求信號定為FFH、應(yīng)答信號定為FEH、錯誤信號定為FDH、結(jié)束信號定為FCH。

          (4)數(shù)據(jù)傳送方式

          利用RS 232C的2根傳輸線實現(xiàn)全雙工的發(fā)送和接收數(shù)據(jù)。

          (5)通信方式

          異步通信方式,以字為單位傳送數(shù)據(jù),由于發(fā)送與接收雙方使用各自的時鐘,所以在異步通信中嚴(yán)格規(guī)定數(shù)據(jù)幀的格式。

          (6)數(shù)據(jù)幀的格式

          一幀數(shù)據(jù)為11位,包括起始位、數(shù)據(jù)位、奇偶檢驗位、停止位,數(shù)據(jù)格式如下[2]:

          所以8251A初始化方式控制字為7DH。

          PC機(jī)采用Visual basic編程,VB支持面向?qū)ο蟮某绦蛟O(shè)計,具有結(jié)構(gòu)化的事件驅(qū)動編程模式并可以使用無限擴(kuò)增的控件,而且可以十分簡便地做出良好的人機(jī)界面。在標(biāo)準(zhǔn)的串口通信方面,在發(fā)送或接收數(shù)據(jù)的過程中觸發(fā)onComm事件,通過編程訪問CommEvent屬性了解通信事件的類型,分別各自的處理。VB串行初始化通信軟件如下[3]:


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();