第一階段
是先瀏覽教科書里的硬件部分,大至了解單片機(jī)的硬件結(jié)構(gòu)。如ROM、RAM、地址、I/O口等,以及看一些廠家的MCU資料(Data Sheet),來加強(qiáng)MCU所提供各項(xiàng)資源的印象。
第二階段
就是了解二進(jìn)位數(shù)字、十六進(jìn)位數(shù)和軟件方面的內(nèi)容。盡管有很多高級(jí)語言可用于單片機(jī)的編程,但我覺得初學(xué)還是以匯編語言為好,更有利于和硬件結(jié)合,掌握硬件結(jié)構(gòu)。知道匯編語言、機(jī)器語言、
指令、
程序等概念后,就從MOV指令開始,學(xué)習(xí)匯編語言和編程,在此如51的MCU匯編語言系統(tǒng)有111條指令,簡(jiǎn)單又好理解它們?cè)?/font>
樣和硬件聯(lián)系,更有助于一般學(xué)習(xí)單片機(jī)的指令整合與運(yùn)用.因此其方法可先了
解幾條基本的MOV指令和它的機(jī)器語言,大致建立起單片機(jī)的硬件和軟件概念,
來知道單片機(jī)的硬件是由指令控制指揮的。
第三階段
按照編程環(huán)境的使用手冊(cè),熟悉使用編程環(huán)境。現(xiàn)在的編程環(huán)境一般都和電腦相連,只要具備基本電腦知識(shí)的人都可很快掌握操作步驟。
第四階段
我現(xiàn)在僅對(duì)規(guī)則采樣法了解一點(diǎn),公式如下:
脈寬=aTcsin(wTd) Tc為載波頻率,a為調(diào)制度,w為正弦波角頻率, Td為脈沖所在的時(shí)間。這個(gè)公式算出的結(jié)果用兩個(gè)IO輸出,當(dāng)一個(gè)IO輸出一個(gè)半波的PWM時(shí),此時(shí)另一個(gè)輸出為無效電平。
我用單片機(jī)實(shí)現(xiàn)這個(gè)公式的想法:
用查表的方法。把0.5Tcsin(wTd)算出做一個(gè)表格,用一個(gè)八位的A/D來采樣輸出電壓的變化,計(jì)算后得到a值,再根據(jù)下面的式子算出實(shí)際的脈寬:0.5aTcsin(wTd)/128,這僅是我一點(diǎn)單純的思路,希望大家積極發(fā)表意見,特別是如果我的想法有不對(duì)的地方,
以下內(nèi)容含腳本,或可能導(dǎo)致頁面不正常的代碼 |
---|
說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運(yùn)行. |
在工業(yè)儀表中,通常增加到12位。12位D/A的價(jià)格目前比單片機(jī)的價(jià)格要高得多,占用的接口線數(shù)量也多。尤其是在需隔離的場(chǎng)合時(shí),所需的光電耦合器數(shù)量與接口線相當(dāng),造成元器件數(shù)量大批增加,使體積和造價(jià)隨之升高。如果在單片機(jī)控制的儀表里用PWM方式完成D/A輸出,將會(huì)使成本降低到12位D/A芯片的十分之一左右。我們?cè)赟系列流量儀表中采用了這種方式,使用效果非常理想。下面介紹一下PWM方式D/A的構(gòu)成原理。
二 電路原理
一般12位D/A轉(zhuǎn)換器在手冊(cè)中給出的精度為±1/2LSB,溫度漂移的綜合指標(biāo)在20—50ppm/℃,上述兩項(xiàng)指標(biāo)在0.2級(jí)儀表中是可以滿足要求的,下面給出的電路可以達(dá)到上述兩項(xiàng)指標(biāo)。
圖1中的T是固定寬度,τ的寬度是可變的。τ分為5000份,每份2us。所以τ的最大值τmax=2×5000=10000us,這就是T的寬度。當(dāng)τ=T時(shí),占空比為1,Vo=5.000V,τ=0時(shí),Vo=0V。這種脈沖電壓經(jīng)過兩級(jí)RC濾波后得到的電壓可由下式表示:
VM必須是精密電壓源。Vo與占空比成正比,且線性較好,這種方式在理論上是很成熟的,但實(shí)際應(yīng)用上還存在一些問題。圖2是實(shí)際線路,其中單片機(jī)可用8098或8031兩種常用芯片,VM的數(shù)值為5.000V±2mV,D/A與單片機(jī)必須是電氣隔離的。否則數(shù)字脈沖電流產(chǎn)生的干擾會(huì)影響D/A精度,從示波器可以看到高達(dá)50mV的干擾毛刺電壓,因此有必要加光電隔離。經(jīng)隔離后的脈沖驅(qū)動(dòng)模擬開關(guān)CD4053。CD4053是三組兩觸點(diǎn)模擬開關(guān),由PWM脈沖控制開關(guān)的公共接點(diǎn)使之與+5.000V和地接通,在VI得到與單片機(jī)輸出相一致的PWM波形。該波形經(jīng)兩級(jí)RC濾波后由運(yùn)放構(gòu)成的電壓跟隨器輸出Vo。其中RC的時(shí)間常數(shù)一般取RC≥2T,這樣兩級(jí)RC加起來就會(huì)得到紋波小于3mV的直流電壓,本電路中RC=220ms,如果想進(jìn)一步減小紋波,可適當(dāng)提高RC的乘積,但電路的響應(yīng)速度也會(huì)放慢。
用運(yùn)放做RC濾波器輸出的緩沖大有益處。它不僅提高了濾波電路帶載能力,而且使線性度得到了提高。通過實(shí)驗(yàn)可知,這一級(jí)運(yùn)放的的緩沖作用是保證整個(gè)D/A精度和線性度的重要環(huán)節(jié)。盡管RC濾波器無負(fù)載,處在非常理想的條件下工作,但Vo并不完全與占空比成正比。經(jīng)測(cè)試,Vo與理想值有一些誤差,如圖3所示。
圖中的曲線1表示理想值,曲線2表示實(shí)測(cè)值。由圖中可見,曲線2的根部不太理想。這是因?yàn)樗褂玫碾娙莶皇羌冸娙荩渲泻幸欢ǖ碾姼小T谡伎毡葮O小時(shí),由于脈沖非常窄,它產(chǎn)生的高次諧波的頻率很高,電感對(duì)高次諧波的感抗較大,因此在脈沖沿的位置上,盡管電壓變化很大,但實(shí)際實(shí)際給電容充電卻很小。這樣就在窄脈沖時(shí)產(chǎn)生非線性。當(dāng)采用無感電容時(shí),這種非線性有較大改善,但仍不能完全吻合。由于無感電容容量太小,價(jià)格也較高,所以在大時(shí)間常數(shù)濾波電路中沒有實(shí)際意義。在實(shí)際使用中解決這一問題的方法是舍棄根部非線性部分,只用線性部分,在工業(yè)儀表中,標(biāo)準(zhǔn)的信號(hào)一般為1—5V或4—20mA。而曲線2的非線性部分在0.4V以下,所以當(dāng)采用1—5V輸出信號(hào)時(shí),精度為0.03%完全滿足12位D/A要求。
除精度滿足要求外,溫度特性也必須滿足要求。影響溫度特性的原因主要是5V精密電源和運(yùn)算放大器的溫度特性。為不使價(jià)格太高,選用2DW232精密穩(wěn)壓二極管,運(yùn)放的電阻與濾波電阻要匹配且溫度系數(shù)≤25ppm。運(yùn)算放大器選擇溫漂≤10uV/℃的均可,一般廉價(jià)低溫漂運(yùn)放都可滿足這個(gè)指標(biāo)。采用上述措施后D/A的總溫度漂為33ppm/℃。
三 實(shí)測(cè)數(shù)據(jù)
由于這個(gè)線路是在0.2級(jí)精密儀表中使用的,因此要求線性度和溫度特性必須滿足要求,另外,這個(gè)數(shù)據(jù)是測(cè)量V/I轉(zhuǎn)換后4-20mA電源值與給定電流值之間的誤差。這個(gè)誤差還包含了V/I轉(zhuǎn)換的誤差。因此實(shí)際的D/A自身的誤差比總誤差要小。
由以上數(shù)據(jù)可知,滿量程的線性度為0.04%,滿量程的溫度漂移為0.033%/10℃,系統(tǒng)響應(yīng)時(shí)間約為2.2s,輸出信號(hào)與標(biāo)準(zhǔn)值相差0.1%時(shí)所用的時(shí)間為11s。
四 結(jié)束語
上面所介紹的D/A電路結(jié)構(gòu)簡(jiǎn)單,原理易懂,在8098及8031單片機(jī)上都可以應(yīng)用,筆者采用8098單片機(jī)的四路高速輸入輸出同時(shí)控制四路精密D/A輸出。后面加一級(jí)V/I轉(zhuǎn)換電路,構(gòu)成標(biāo)準(zhǔn)的4—20mA電流輸出,電路經(jīng)一年多的現(xiàn)場(chǎng)實(shí)際應(yīng)用,效果很好,適于目前0.2級(jí)儀表的全部要求。
]]>飛利浦(Philips)的IIC,物美價(jià)廉啊!才2條線搞定一切。不錯(cuò)、不錯(cuò)。所以,EEPROM呀,I/O擴(kuò)展啊,什么A/D D/A啊,外加LED驅(qū)動(dòng)、日歷時(shí)鐘芯片等等全用它。好多mcu自帶IIC控制器,不過我們常玩的51系列不怎么咬它,還好對(duì)于主從固定的模式(51為主,其他IIC器件為從),我們可以用軟件實(shí)現(xiàn)主對(duì)從的雙向讀寫
如圖 我們首先的 有 啟動(dòng)IIC器件的函數(shù) start(),和停止IIC器件的函數(shù) stop(),由于要對(duì)其進(jìn)行寫地址(SAR/W),和寫寄存器地址,得有個(gè)寫1字節(jié)的函數(shù) write_byte(),然后就是連續(xù)寫的函數(shù)write(),和連續(xù)讀read(),外加2個(gè)檢驗(yàn)是否聽話的標(biāo)志位 ack(),ACK,nck(),NCK。
這個(gè)只要注意SAW、SAR 就能用在任意IIC了,但連讀和連寫 當(dāng)n > 1 時(shí),還有個(gè)致命的小問題,書上有,給懶人留點(diǎn)發(fā)揮的空間吧,反正問題容易解決,只是完全不看書的話,一定出事而已
]]>2 相關(guān)理論研究
2.1信息家電
信息家電是所有能夠通過網(wǎng)絡(luò)系統(tǒng)交互信息的家電產(chǎn)品,也就是說信息家電是將數(shù)字技術(shù)和網(wǎng)絡(luò)技術(shù)集成在電冰箱、洗衣機(jī)等傳統(tǒng)家用電器上并以此為基礎(chǔ)建立家庭網(wǎng)絡(luò)環(huán)境,信息家電具有以下特點(diǎn):(1)通過有線或無線方式相連,能相互識(shí)別并協(xié)同工作與網(wǎng)絡(luò)化;(2)能夠遵循一定的協(xié)議,通過家庭網(wǎng)關(guān)或直接與外部網(wǎng)絡(luò)進(jìn)行信息交互;(3)功能單一[1]集中并且使用簡(jiǎn)單;(4)具有實(shí)時(shí)化、數(shù)字化與智能化的特點(diǎn);(5)應(yīng)用嵌入式
2.2家庭網(wǎng)關(guān)
單個(gè)的信息家電也可以具有與Internet直接連接上網(wǎng)的功能,但是借助現(xiàn)有的計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),將家庭內(nèi)各種家電和設(shè)備連網(wǎng),通過家庭網(wǎng)絡(luò)為人們提供各種豐富、多樣化、個(gè)性化、方便、舒適、安全和高效的服務(wù),把所有的信息家電連接起來形成一個(gè)家庭網(wǎng)絡(luò),再把接入Internet的功能移至到家庭網(wǎng)關(guān),由家庭網(wǎng)關(guān)承擔(dān)起與Internet進(jìn)行信息交互的責(zé)任,這不僅會(huì)減少信息家電的負(fù)載、降低成本,而且對(duì)家庭網(wǎng)絡(luò)化也是一種促進(jìn),因?yàn)榧彝ゾW(wǎng)絡(luò)內(nèi)部可以使用不同的協(xié)議,從而更具靈活性。因此,實(shí)現(xiàn)家庭網(wǎng)絡(luò)與外部信息的交換需要設(shè)計(jì)一個(gè)理想的家庭網(wǎng)關(guān)。家庭網(wǎng)關(guān)應(yīng)具備的兩個(gè)主要功能是:(1)作為家庭內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)連接的一種物理接口;(2)使住宅用戶可以獲得各種家庭服務(wù)(包括現(xiàn)有的服務(wù)和未來可能出現(xiàn)的服務(wù),譬如經(jīng)過授權(quán)能打開朋友家的影碟機(jī)進(jìn)行影片觀看等)的平臺(tái)。
家庭網(wǎng)關(guān)接口的有效的解決方案,當(dāng)前比較統(tǒng)一的觀點(diǎn)是開發(fā)一個(gè)集中式網(wǎng)關(guān),它將提供一個(gè)最有效的橋接外部網(wǎng)絡(luò)和家庭網(wǎng)絡(luò)或設(shè)備的解決方案。另外,以PC作為家庭網(wǎng)關(guān),體積過大,環(huán)境適應(yīng)能力差,而且還必須安裝兩個(gè)網(wǎng)絡(luò)適配器(一個(gè)用于連接 Internet,一個(gè)用于連接內(nèi)部網(wǎng)絡(luò)),總的費(fèi)用也比一臺(tái)專用網(wǎng)關(guān)要高。因此,設(shè)計(jì)專用網(wǎng)關(guān)是完全有必要的。鑒于家庭網(wǎng)關(guān)的功能特點(diǎn),其邏輯結(jié)構(gòu)應(yīng)如圖1所示。
圖1家庭網(wǎng)關(guān)邏輯結(jié)構(gòu)
3 硬件選型
3.1 SX52的特點(diǎn)
如何利用單片機(jī)本身有限的資源對(duì)信息進(jìn)行TCP/IP協(xié)議處理,使之變成可以在互聯(lián)網(wǎng)上傳輸?shù)腎P數(shù)據(jù)包,目前有兩種方案:一種是PC網(wǎng)關(guān)+專用網(wǎng),缺點(diǎn)是要增加布線和第三方協(xié)議轉(zhuǎn)換軟件;另一種是32位MCU+RTOS,弊端是開發(fā)難,成本極高。而用軟件方法實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議比采用集成網(wǎng)絡(luò)協(xié)議的芯片,具有節(jié)省空間、降低成本的優(yōu)點(diǎn),更重要的是可以隨意配置甚至修改各種協(xié)議,且能通過軟件升級(jí)方式跟隨未來的發(fā)展。通過美國Ubicom公司的SX52微控器進(jìn)行網(wǎng)絡(luò)控制就具備這個(gè)優(yōu)勢(shì),其主要特點(diǎn)有:(1)速度快,在100MHz頻率下能達(dá)到100MIPS;(2)現(xiàn)成的網(wǎng)絡(luò)協(xié)議模塊供套用,可以通過虛擬外設(shè)功能來運(yùn)行網(wǎng)絡(luò)協(xié)議棧,例如TCP、IP、HTTP以及SMTP等;(3)強(qiáng)大的虛擬外設(shè)功能,即通過軟件對(duì)I/O口進(jìn)行靈活的配置,CPU執(zhí)行虛擬軟件模塊就可以驅(qū)動(dòng)普通的I/O口來模擬外設(shè)的功能,比如UART、SPI、IIC和FSK等。采用其成功的網(wǎng)絡(luò)協(xié)議模塊和一些適用于小型嵌入式系統(tǒng)的做法構(gòu)筑現(xiàn)場(chǎng)控制是非常合適的做法。 <!-- 2008-9-16 20:11:55-->
]]>據(jù)這位師弟的意思是:在沒有按下按鍵的時(shí)候,端口上是低電平,按下按鍵的時(shí)候端口上接上了高電平.
事實(shí)上,電路是不工作的.
問題比較多:
首先,將電源直接接到端口上是絕對(duì)不可以的.當(dāng)按下按鍵的時(shí)候,會(huì)有很大的電流進(jìn)入單片機(jī).在工程上,這種往往應(yīng)該加限流電阻的.一般選擇1K的就可以.如果選擇太大的電阻也不好,因?yàn)殡娮枭厦鎵航堤?造成輸入比應(yīng)有的高電平低,造成錯(cuò)誤.
其次,就算加了限流,這個(gè)電路也是不能工作的.檢查AT89C51的DataSheet就會(huì)發(fā)現(xiàn).技術(shù)手冊(cè)中說:P0口是沒有上拉電阻的端口;P1,P2,P3口帶有上拉電阻.問題就出在這里,什么是上拉電阻,來看看圖:
上面這個(gè)圖,是紅外線接收的電路圖,看上面的這個(gè)電阻,就是上拉電阻.我們可以試圖理解一下51單片機(jī)P2口的這個(gè)上拉電阻為這種形式:
其中的R就是上拉電阻.如果像我的那個(gè)師弟那樣設(shè)計(jì)電路,電路就成了以下這種形式了:
看,從這個(gè)電路上,我們可以清晰的看出,不管你按鍵是否按下,IO端口上都是高電平.問題就在這里,我讓我的這個(gè)師弟測(cè)測(cè)IO端口的電平在按下按鍵前后的變化,結(jié)果果然不出所料:不管他是否按下按鍵,都是高電平!!
從這里我們可以看出:DataSheet還是有用的,在設(shè)計(jì)的時(shí)候,有很多細(xì)節(jié),需要注意,否則,可能功虧一簣.
]]>