傳感器課程設(shè)計(jì)心得
1、C51編程:C語言在進(jìn)入main函數(shù)前會(huì)有一個(gè)對(duì)單片機(jī)內(nèi)存單元的初始化,另外運(yùn)用浮點(diǎn)乘除運(yùn)算時(shí)程序龐大,使用循環(huán)加或者循環(huán)減時(shí)會(huì)大大的減少程序,對(duì)于浮點(diǎn)數(shù)的顯示可以將其乘以10的整數(shù)冪(這個(gè)乘是人編程時(shí)設(shè)定計(jì)算的參數(shù)是設(shè)好的,并不需要單片機(jī)去計(jì)算),這樣就可以將浮點(diǎn)運(yùn)算轉(zhuǎn)化為整數(shù)運(yùn)算,進(jìn)一步簡化程序,對(duì)于它的顯示可以在固定位置設(shè)置小數(shù)點(diǎn)(利用或者||,由數(shù)碼管類型決定),這個(gè)方法同樣適用于匯編,且可以使匯編更簡單。在涉及到對(duì)硬件的控制時(shí),可以使用C語言的賦值語句,根據(jù)外圍硬件的工作時(shí)序設(shè)定賦值的順序,不過由于C編譯后的具體指令組成并不清楚,很可能出現(xiàn)意想不到的情況(只是設(shè)想,還需證實(shí)),由于C語言對(duì)硬件的控制并不是很強(qiáng),所以可以使用嵌套或調(diào)用匯編的方法,不過這種方法不夠好,可以根據(jù)C生成 SRC文件,對(duì)其進(jìn)行改變,從而變成匯編。用C編程的時(shí)候注意不要受匯編的干擾,注意指針的使用(這次用C編寫出錯(cuò)的一個(gè)最重要的原因)
2、AD的使用:一般單片機(jī)的時(shí)鐘輸出并不能滿足AD的時(shí)鐘頻率要求,通常需要進(jìn)行分頻,利用計(jì)數(shù)器(例如74LS192)可以做出分頻器,首先計(jì)數(shù)器進(jìn)制應(yīng)為分頻器分頻數(shù)的二倍,或門(或非門)的一段接分頻數(shù)的輸出端,另一端接計(jì)數(shù)器的清除端(MR),這樣門輸出即為分頻后的時(shí)鐘頻率。在鎖存通道、啟動(dòng)AD 轉(zhuǎn)換、允許AD輸出轉(zhuǎn)換值時(shí),在匯編中通常使用MOVX指令,但是由于使用MOVX時(shí)WR、RD變化時(shí)間是很短的,可能會(huì)在數(shù)據(jù)沒有準(zhǔn)備好時(shí)就已經(jīng)操作了,從而造成數(shù)據(jù)錯(cuò)誤,也有可能MOVX的電平維持時(shí)間不夠長,從而造成并不能使AD進(jìn)入我們需要的狀態(tài)。解決的辦法是我們按照AD的工作時(shí)序,對(duì)特定的引腳進(jìn)行電平變換,即可控制電平的時(shí)間,從而保證數(shù)據(jù)傳輸?shù)恼_性。在使用中斷(定時(shí)器或者其他)啟動(dòng)AD轉(zhuǎn)換后,要在盡可能短的時(shí)間內(nèi)退出該中斷,因?yàn)闉榱吮WC對(duì)AD的操作不被中斷(中斷后可能不能再繼續(xù)),在對(duì)AD進(jìn)行操作的中斷中不允許其他中斷,這樣我們必須盡快開啟中斷允許并退出中斷,當(dāng)然也可以在啟動(dòng)AD后打開中斷允許,這樣也可以保證轉(zhuǎn)換值能夠及時(shí)被讀取,不過會(huì)出現(xiàn)中斷嵌套,可能對(duì)程序的運(yùn)行不利。
3、Keil與proteus的聯(lián)調(diào):使用Keil和proteus聯(lián)調(diào),可以單步運(yùn)行Keil,通過proteus即可觀察到每一條程序的運(yùn)行結(jié)果,同樣可以了解到每一句C語言對(duì)應(yīng)的匯編以及運(yùn)行的結(jié)果。
4、單片機(jī)控制數(shù)碼管的顯示時(shí),尤其是多個(gè)時(shí),要使用驅(qū)動(dòng)電路,因?yàn)閿?shù)碼管的驅(qū)動(dòng)電流一般為10mA,單片機(jī)輸出驅(qū)動(dòng)不夠,驅(qū)動(dòng)電路可以是三極管,也可以使用專門的數(shù)碼管驅(qū)動(dòng)芯片,可以減少對(duì)單片機(jī)資源的占用,例如LM8186,MAX7219等。
5、壓電蜂鳴器的信號(hào)輸出阻抗很高,使用一般的信號(hào)采集電路并不能將信號(hào)采集進(jìn)來??梢允褂秒姾煞糯笃?,一是輸入阻抗大,二是靈敏度較高,不過由于電荷放大器的頻響較高,如果沒有好的屏蔽措施極容易引進(jìn)干擾。另一個(gè)辦法是,可以使用高輸入阻抗運(yùn)放接成電壓跟隨器形式,既可以作為前置放大器的輸入端提高輸入阻抗,又可以起到隔離電路的作用。運(yùn)放可以選用LM102,輸入阻抗高達(dá)1012歐姆,不過供電電源為 正負(fù)12到15,并不是很好,不過可以選用其他運(yùn)放,例如CA3130(高達(dá)1.5T)等。
6、氣壓表壓指示燈部分是無意中發(fā)現(xiàn)的現(xiàn)象,具體原理還需要進(jìn)一步找答案
7、還有一點(diǎn)忘了,數(shù)碼管動(dòng)態(tài)顯示的操作順序:關(guān)地址,賦段碼,打開地址,每個(gè)的刷新時(shí)間間隔為1ms左右,時(shí)間越長,數(shù)碼管亮度越高,不過使用延時(shí)時(shí)間較長的話,一是可能會(huì)閃爍,二是單片機(jī)灌電流較大,對(duì)單片機(jī)不利,這次使用的是400微秒的刷新時(shí)間,120歐姆的限流電阻,顯示穩(wěn)定,亮度也好,不過感覺限流電阻小了一些,耗電功率較大。
分頻器相關(guān)文章:分頻器原理 蜂鳴器相關(guān)文章:蜂鳴器原理
評(píng)論