新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)典型案例開發(fā)(四)

單片機(jī)典型案例開發(fā)(四)

作者: 時(shí)間:2012-05-28 來源:網(wǎng)絡(luò) 收藏

  (1) void ip_send(UCHAR xdata*outbuf,ULONG ipaddr, UCHAR proto_ id,DINT len)//發(fā)送IP 數(shù)據(jù);該子程序用來創(chuàng)建一個(gè)發(fā)送數(shù)據(jù)報(bào)。

  (2) void ip_rcve(UCHAR xdata *inbuf) //接收IP 數(shù)據(jù);該子程序檢測(cè)一個(gè)外來數(shù)據(jù)包,并對(duì)數(shù)據(jù)包作相應(yīng)的處理。

  3.3.3 TCP 協(xié)議的實(shí)現(xiàn)

  1.使用TCP 狀態(tài)機(jī):TCP 協(xié)議是整個(gè)TCP/IP 協(xié)議的核心,也是傳輸層中最復(fù)雜的協(xié)議。TCP 協(xié)議在兩個(gè)端點(diǎn)之間建立了等效于物理連接的邏輯連接。數(shù)據(jù)沿著這個(gè)連接雙向傳輸。連接的雙方必須對(duì)發(fā)送和接收的數(shù)據(jù)保持跟蹤,以便能夠檢測(cè)出數(shù)據(jù)流中的遺漏和重復(fù)。

  2.使用簡(jiǎn)單的確認(rèn)機(jī)制:序列號(hào)和確認(rèn)號(hào)這兩個(gè)字段用于協(xié)同完成TCP 協(xié)議中的確認(rèn)工作。對(duì)于每個(gè)接收到的數(shù)據(jù)包進(jìn)行確認(rèn)號(hào)的計(jì)算,需要從接收到的數(shù)據(jù)包中提取TCP 報(bào)文的數(shù)據(jù)部分長(zhǎng)度,并進(jìn)行計(jì)算,這增加了處理器的運(yùn)算量。但如果每次只對(duì)單個(gè)TCP 報(bào)文進(jìn)行確認(rèn)的話,并沒有太大的難度。TCP 協(xié)議主要包含的程序如下:

 ?。?) init_tcp(void) //初始化TCP 協(xié)議

 ?。?) Tcp_send(UINT flags, DINT hdr_len, UCHAR nr) //發(fā)送TCP

  (2) Tcp_retransmit(void) //重發(fā)TCP 數(shù)據(jù)

 ?。?) Tcp_inactivity(void) //停止TCP

 ?。?) Tcp_rcve(UCHAR xdata * inbuf, UINT len) //接收TCP 數(shù)據(jù)

  3.3.4 HTTP 協(xié)議簡(jiǎn)介

  HTTP 協(xié)議是TCP 協(xié)議的高層協(xié)議,HTTP 的請(qǐng)求和應(yīng)答都是一行或多行文本,它的結(jié)束標(biāo)志是一個(gè)換行符[5]。如果請(qǐng)求成功,數(shù)據(jù)就沿著該連接發(fā)送,直到發(fā)送完為止。HTTP的端口號(hào)為80.HTTP 中的命令稱呼為方法(method),其中GET 語句用來獲取文檔,POST語句用來粘貼文檔。通過判斷GET 和POST 語句后面的文件名來判斷所需要傳遞的文件的位置。

  請(qǐng)求:

  GET / HTTP/1.1

  響應(yīng):

  HTTP/1.1 200 OK

  Content-type: text/html

  ……

  《html》

  《body》

  ……

  《/body》

  《/html》

  4.應(yīng)用部分

  本 WEB 服務(wù)器系統(tǒng)幾乎可以應(yīng)用于所有對(duì)實(shí)時(shí)性要求不是很高的場(chǎng)合,只要對(duì)本系統(tǒng)的相關(guān)部分做些修改或改進(jìn),例如:客戶端的訪問權(quán)限、IP 地址的過濾等,就可應(yīng)用于諸如遠(yuǎn)程抄表、信息家電的遠(yuǎn)程控制等場(chǎng)合。下面圖7 為ping 命令測(cè)試網(wǎng)絡(luò)不通到通的連接狀態(tài),圖8 實(shí)現(xiàn)了局域網(wǎng)內(nèi)任意主機(jī)通過ip 地址形式訪問內(nèi)部存諸的網(wǎng)頁,從而實(shí)現(xiàn)對(duì)系統(tǒng)的遠(yuǎn)程監(jiān)控。

  圖7 網(wǎng)絡(luò)連接測(cè)試

  圖7 網(wǎng)絡(luò)連接測(cè)試

  圖8 遠(yuǎn)程監(jiān)控溫度

  圖8 遠(yuǎn)程監(jiān)控溫度

  5.結(jié)束語

  實(shí)現(xiàn)了基于的 TCP/IP 協(xié)議棧,使單片機(jī)控制的系統(tǒng)具有了WebServer 的功能,這樣可以使用PC 機(jī)通過因特網(wǎng)遠(yuǎn)程訪問單片機(jī)系統(tǒng),也可以使用單片機(jī)系統(tǒng)將有用的信息通過因特網(wǎng)發(fā)送到遠(yuǎn)端的PC 或其它終端上。為嵌入式設(shè)備實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)采集、遠(yuǎn)程監(jiān)控、遠(yuǎn)程診斷、遠(yuǎn)程幫助、遠(yuǎn)程升級(jí)、遠(yuǎn)程重構(gòu)等功能提供了可能,這是嵌入式系統(tǒng)發(fā)展的趨勢(shì)。

  三、基于89C52單片機(jī)的微電壓信號(hào)源設(shè)計(jì)

  1 設(shè)計(jì)原理

  被測(cè)設(shè)備要求提供0.5~50mV的可調(diào)直流模擬電壓,分辨率達(dá)10微伏,精度達(dá)±0.01mV,溫度跟隨性要好,即要求提供高精度的微電壓信號(hào)。

  如果采用單片機(jī)通過D/A轉(zhuǎn)換器輸出所需電壓,輸出范圍0~5V,LSB=0.01mV,則D/A轉(zhuǎn)換器的位數(shù):

  X=lg2(5000/0.01)≈19(Bit)

  考慮D/A轉(zhuǎn)換器的量化誤差、溫漂、噪聲和其他各種誤差的影響,至少選擇21Bit以上的D/A轉(zhuǎn)換器,但目前尚無適合本系統(tǒng)設(shè)計(jì)的D/A轉(zhuǎn)換器。因此,在考慮系統(tǒng)分辨率和輸出電壓范圍的前提下,采用如下方案:先將小于50 mV的電壓數(shù)值擴(kuò)大100倍,再用 16Bit D/A轉(zhuǎn)換器輸出,然后通過200倍的高精密分壓器和超低漂移的運(yùn)算放大器緩沖輸出。與此同時(shí),采用高位A/D轉(zhuǎn)換器組成電壓反饋回路,對(duì)輸出進(jìn)行差值補(bǔ)償,進(jìn)一步提高信號(hào)精度和穩(wěn)定性。 其原理結(jié)構(gòu)如圖1所示。

  

2 硬件設(shè)計(jì)

  2.1 電壓輸出電路

  在單片機(jī)(89C52)、D/A轉(zhuǎn)換器、分壓、運(yùn)放組成的微電壓輸出電路中,設(shè)計(jì)的要點(diǎn)是如何用單片機(jī)控制D/A轉(zhuǎn)換器的輸出。本設(shè)計(jì)采用美國(guó)BB公司生產(chǎn)的16位高精度數(shù)/模轉(zhuǎn)換器DAC714(單通道、串行通訊方式,工作電壓±12V或±15V,能實(shí)現(xiàn)±10V、±5V和0~10V的模擬電壓輸出)。圖 2是D/A轉(zhuǎn)換器與單片機(jī)的連接電路。DAC714采用 ±15V工作電壓,通過外部連接的增益(OFFS)和雙極性偏移(GADJ)電位計(jì)調(diào)整,實(shí)現(xiàn)對(duì)輸出電壓的精度要求。在調(diào)節(jié)這兩個(gè)參數(shù)時(shí),為了避免零點(diǎn)對(duì)比例調(diào)節(jié)的影響,應(yīng)注意先調(diào)整比例系數(shù),后調(diào)零點(diǎn)。其中,A0為輸入寄存器控制信號(hào),A1為D/A鎖存控制信號(hào),SDI為串行數(shù)據(jù)輸入。數(shù)據(jù)控制均為低電平有效,當(dāng)A0=0時(shí),當(dāng)前數(shù)據(jù)進(jìn)入移位寄存器;當(dāng)A1=0時(shí),數(shù)據(jù)進(jìn)入D/A鎖存。

  

  5V滿刻度的16位DAC714轉(zhuǎn)換器,1LSB對(duì)應(yīng)76μV。如果輸出端的負(fù)載電流為5mA,則60mΩ的線路和接觸電阻,就會(huì)產(chǎn)生300μV的壓降;此外,還有印刷電路板產(chǎn)生的壓降。因此,將模擬地和數(shù)字地分開,采用單點(diǎn)連接,盡量減小接地回路。模擬插釘互相靠近,有利于模擬與數(shù)字信號(hào)的隔離,而模擬信號(hào)應(yīng)該盡量遠(yuǎn)離數(shù)字信號(hào)。為了將D/A轉(zhuǎn)換器與開關(guān)電流隔離,模擬地設(shè)在D/A周圍或者在其下方的模擬信號(hào)和電源的附近,最好在DAC714轉(zhuǎn)換器的下面將DCOM與ACOM直接接地。

  2.2 電壓反饋電路

  DAC714轉(zhuǎn)換器的輸出電壓經(jīng)精密分壓電路和OPA111BM運(yùn)放組成的緩沖電路輸出后,理論上完全可達(dá)22位分辨率。但是由于溫漂和其他誤差影響,實(shí)際輸出時(shí)為19位分辨率,精度不能滿足要求,為此,設(shè)計(jì)了反饋補(bǔ)償電路。用22位A/D轉(zhuǎn)換器測(cè)量實(shí)際輸出電壓,在單片機(jī)中將實(shí)際輸出電壓與理論輸出值比較,其差值信號(hào)作為DAC714的補(bǔ)償電壓輸出,確保了電壓輸出精度。

  圖3是由ADS1212組成的電壓反饋電路。 ADS1212是美國(guó)BB公司生產(chǎn)的高精度、寬動(dòng)態(tài)特性的22位單通道Δ-Σ模擬/數(shù)字轉(zhuǎn)換器。其差動(dòng)輸入端直接與微小的電壓信號(hào)相連。由于采用了低噪聲的輸入放大器,在轉(zhuǎn)換速度為10Hz時(shí)仍可獲得20位的有效分辨率。它有一個(gè)靈活的同步串行接口,單一+5V供電,有內(nèi)/外參考電壓和內(nèi)部自校準(zhǔn)系統(tǒng)。與外部器件接口的形式有雙線制、三線制、四線制和多線制,此處采用三線制來實(shí)現(xiàn)與單片機(jī)的接口,接口信號(hào)是數(shù)據(jù)準(zhǔn)備就緒線(DRDY)、數(shù)據(jù)輸入輸出線 (SDIO)、時(shí)鐘信號(hào)線(SCLK)。

  

  2.3 溫控電路

  為了進(jìn)一步降低溫漂的影響,必須保證系統(tǒng)工作溫度變化在一個(gè)較小的范圍內(nèi),為此,設(shè)計(jì)了自動(dòng)恒溫控制電路。該電路由TMP01溫度控制芯片(AD公司)和加溫、降溫電路等組成。

  TMP01通過外接電阻值來設(shè)定高、低溫度控制點(diǎn)。當(dāng)系統(tǒng)溫度高于或低于設(shè)定值時(shí),輸出電壓控制信號(hào),啟動(dòng)加溫或降溫電路的工作。TMP01溫度控制精度達(dá)±1℃,負(fù)載能力達(dá)20mA,可直接驅(qū)動(dòng)繼電器。

  3 軟件流程

  本電壓信號(hào)源采用液晶顯示屏顯示漢字和數(shù)字,可通過按鍵直接控制輸出電壓的大小。用匯編語言編程,實(shí)現(xiàn)電壓的自動(dòng)輸出。軟件流程如圖4所示。

  

  4 結(jié)束語

  本文介紹的數(shù)字式微電壓信號(hào)源,利用精密分壓和反饋補(bǔ)償原理,實(shí)現(xiàn)了用16位D/A數(shù)模轉(zhuǎn)換器輸出19位分辨率的直流電壓的目標(biāo)。部隊(duì)實(shí)際使用表明,采用單片機(jī)控制的數(shù)字式微電壓信號(hào)源不僅電壓精度穩(wěn)定,而且成本低,體積小,提高了測(cè)試自動(dòng)化的程度。

  四、一款自制簡(jiǎn)易示波器設(shè)計(jì)

  這款簡(jiǎn)易示波器的性能如下:

  1.電壓擋位:200mV、500mV、1V、2V、5V、12.5V、25V、50V。

  2.頻率擋位:12MHz、6MHz、4MHz、3MHz、2MHz、1MHz、500kHz、250kHz、100 kHz、50kHz、25kHz、10kHz。

  3.能較好地測(cè)量300 kHz的波形。

  這次DIY的示波器性能雖然較弱,僅僅能用來測(cè)試音頻等300kHz以下頻率的周期波形。不過它還有一個(gè)實(shí)用的功能,可以用來測(cè)試+/-50V的電壓(量程是自動(dòng)切換的)。

  簡(jiǎn)易示波器

  主要零件

  編號(hào) 零件名稱 數(shù)量

  1    ATMEGA8單片機(jī) 1

  9   24MHz有源晶振 1

  8   128x64液晶屏

 ?。跾T7565控制器] 1

  2    5532運(yùn)放 2

  3   AD603壓控放大器 1

  4    TLV5618[DA] 1

  5    ADS830E[AD] 1

  6    IDT7205 1

  7    ILC7660 2

  10    1117-5.0 2

  11    1117-3.3 1

  12    79L05 1

  13       繼電器 2

  14 電容、電阻、二極管 若干

  15    三極管 2

  16    洞洞板 1

  17    按鈕 2

  電路分析

  這個(gè)版本示波器的電路原理如圖1所示。電路制作時(shí),我用了1塊16cm×10cm的萬用板,電路中僅僅使用2個(gè)按鈕來操作示波器,因?yàn)槲抑皇褂昧艘黄琈8單片機(jī)作為控制器,1個(gè)按鈕用于循環(huán)改變采樣頻率,另一個(gè)按鈕用來選擇信號(hào)的耦合方式,直流或者交流耦合。

  大家要問了,如何用一片 M8 單片機(jī)產(chǎn)生12MHz的采樣時(shí)鐘呢?呵呵,其實(shí)我對(duì)M8單片機(jī)進(jìn)行了超頻,使用24MHz的有源晶振作為它的時(shí)鐘頻率。然后,通過定時(shí)器2的比較匹配翻轉(zhuǎn)電平,以產(chǎn)生不同的時(shí)鐘。當(dāng)OCR2=0時(shí),單片機(jī)的OC2引腳就能產(chǎn)生12MHz的方波了。當(dāng)然,如果大家不想超頻,那么最高的采樣頻率就是16MHz的一半,8MHz了。因?yàn)椋琈8的技術(shù)手冊(cè)上建議最高為16MHz的時(shí)鐘,而比較匹配的最高頻率為系統(tǒng)時(shí)鐘的2分頻,即8MHz。本次制作的源代碼使用WinAVR編譯。如果使用16MHz的晶振,請(qǐng)自行修改源代碼。

  電路中,被測(cè)量的信號(hào),經(jīng)過500kΩ、480 kΩ、20 kΩ電阻串聯(lián)回路,通過繼電器進(jìn)入第1個(gè)運(yùn)放,運(yùn)放起到阻抗匹配的作用,因?yàn)锳D603的輸入電阻僅為100Ω。單片機(jī)通過繼電器選擇合適的衰減倍數(shù),在默認(rèn)情況下,為1/2倍的衰減。在測(cè)量較大的電壓時(shí),單片機(jī)會(huì)選擇1/50 的衰減。選擇衰減的目的是為了方便后期的2次放大。后期放大使用了一片AD603,它是壓控放大器。通過改變GPOS(第1腳)與GNEG(第2腳)之間的電壓差,即可控制它的放大倍數(shù)。AD603的GPOS(第1腳)的電壓通過一片DA5618控制,它是12位串口DA,它的參考電壓為1.25V,由2個(gè)電阻分壓而得。整個(gè)電路的運(yùn)放可以使用NE5532、AD8066、LM6172等,它們的引腳都是兼容的。由于采樣的速度比較快,遠(yuǎn)大于M8單片機(jī)的讀取及處理速度,所以通過IDT7205來緩沖高速采樣的電平數(shù)據(jù)。最后,單片機(jī)讀取采樣的數(shù)據(jù),并在128×64的液晶上顯示。

手機(jī)電池相關(guān)文章:手機(jī)電池修復(fù)


單片機(jī)相關(guān)文章:單片機(jī)教程


單片機(jī)相關(guān)文章:單片機(jī)視頻教程


單片機(jī)相關(guān)文章:單片機(jī)工作原理


晶振相關(guān)文章:晶振原理

上一頁 1 2 3 下一頁

評(píng)論


相關(guān)推薦

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

關(guān)閉