假定從8位AD中讀取數據(如果是更高位的AD可定義數據類型為int),子程序為get_ad(); 1、限幅濾波法(又稱程序判斷濾波法) A、方法: 根據經驗判斷,確定兩次采樣允許的最大偏差值(設為A) 每次檢測到新值時判斷: 如果本次值與上次值之差<=A,則本次值有效 如果本次值與上次值之差>A,則本次值無效,放棄本次值,用上次值代替本次值 B、優點: 能有效克服因偶然因素引起的脈沖干擾 C、缺點 無法抑制那種周期性的干擾 平滑度差 /* A值可根據實際情況調整 value為有效值,new_value為當前采樣值 濾波程序返回有效的實際值 */ #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; } 2、中位值濾波法 A、方法: 連續采樣N次(N取奇數) 把N次采樣值按大小排列 取中間值為本次有效值 B、優點: 能有效克服因偶然因素引起的波動干擾 對溫度、液位的變化緩慢的被測參數有良好的濾波效果 C、缺點: 對流量、速度等快速變化的參數不宜 /* N值可根據實際情況調整 排序采用冒泡法*/
上傳時間: 2014-12-26
上傳用戶:nanshan
Digitemp Jr. is a device that is designed to measure and report ambient temperature. When connected to an RS-232 port on any PC, it will periodically measure and report in ASCII form the ambient temperature in degrees Celsius. These temperature readings can be monitored with any terminal program. If the terminal program supports capture to disk, the temperature readings can be saved to disk for further analysis with a spreadsheet program or other data analysis tool. The simple ASCII output format of Digitemp Jr. makes it relatively easy to write custom software for receiving, recording, and analyzing ambient temperature data. Best of all, Digitemp Jr. requires no external power supplies or batteries. It is powered directly by the RS-232 port.
上傳時間: 2013-10-20
上傳用戶:Maple
以C8051F020為核心處理器,設計無線傳感器網絡數據采集系統。系統采用SZ05-ADV型無線通訊模塊組建Zigbee無線網絡,結合嵌入式系統的軟硬件技術,完成終端節點的8路傳感器信號的數據采集?,F場8路信號通過前端處理后,分別送入C8051F020的12位A/D轉換器進行轉換。經過精確處理、存儲后的現場數據,通過Zigbee無線網絡傳送到上位機,系統可達到汽車試驗中無線測試的目的。 Abstract: This paper designs a wireless sensor network system for data acquisition with C8051F020 as core processors.The system used SZ05-ADV wireless communication module,set up a Zigbee wireless network, combined with hardware and software technologies of embedded systems,completed the end-node 8-locale sensor signal data acquisition.Eight locale signals were sent separately into the 12-bit ADC of C8051F020 for conversion through front treatment.After accurate processing and storage,the locale data was transmitted to the host computer through Zigbee wireless.The system achieves the purpose of wireless testing in vehicle trial.
標簽: C8051F020 Zigbee 汽車測試 系統設計
上傳時間: 2013-11-23
上傳用戶:dsgkjgkjg
針對目前汽車追尾事件頻發問題,提出一種防汽車車前和車后追尾的安全裝置設計。該設計以高性能、低功耗的8位AVR微處理器ATmega8L為核心,結合霍爾式車速傳感器、激光雷達測距裝置和MMA7260QT加速度傳感器,能夠兼顧車前和車后,摒棄以往設計中只考慮車前或車后單一性缺點,尤其適用于高速、夜晚或新手行車。 Abstract: Aiming at the high frequency of vehicle rear-end collision,a safe device design of anti-vehicle rear-end collision is presented.In the design,the high-performance,low-power8-bit AVR microprocessor ATmega8L is utilized as a core combined with Hall-type speed sensor,laser-radar ranging devices and the acceleration sensor MMA7260QT.The design considers both the front and back of a car,and overcomes the drawbacks of former designs in which only the front or the back of the car is considered,so it is especially suitable for high-speed,night or the beginner’s driving.
上傳時間: 2013-10-14
上傳用戶:GavinNeko
針對盤山路存在的轉彎盲區,即在轉彎時司機無法得知彎路對面是否有車輛通過,設計一種基于C8051F310的山路轉彎預防警示系統。該系統利用一階濾波算法檢測山路轉彎時是否有車輛通過。運用該算法可增強系統檢測的實時性,提高檢測機動車輛的靈敏度,同時大大減少環境溫度對檢測的干擾。試驗表明該系統能夠正確指示出在山路轉彎時是否有車輛通過,目前該系統已安裝在盤山路上,可大大減少事故的發生率。 Abstract: Aiming at passing hilly road,there is a turn blind spot.Motormen usually do not know if the passing of vehicles pass the road.So a system of defending accident on hilly road is designed,which is based on MCU C8051F310.The sys-tem uses the first-order filter algorithm to detect whether there are passing vehicles.This algorithm enhances the real-time detection and improves the sensitivity of detection vehicles.Meanwhile,it reduces the detection interference of environmen-tal temperature.The experimental results show that this system can exactly indicate if there are passing vehicles.At present,the system has been successfully applied to hilly road.The system can greatly decrease accident.
上傳時間: 2013-10-10
上傳用戶:歸海惜雪
針對材料試驗機等設備中要求測量或控制材料拉伸或壓縮的位移,一般采用光電軸角編碼器檢測位置信號,輸出正交編碼脈沖信號。若采用其他方法檢測位置信號,必然導致電路設計復雜,可靠性降低。因此,提出一種基于LS7266R1的電子式萬能材料試驗機設計方案。給出了試驗機中的控制器工作原理,LS7266R1與單片機的接口硬件設計,以及主程序軟件流程圖。巧妙地把力量傳感器,位移傳感器等機械運動狀態的壓力或拉力以及位置坐標,變成了電壓信號和電脈沖數字信號,供A/D測量和LS7266R1計數,從而實現了獨立完成材料試驗控制或通過PC機串口命令完成材料試驗控制。 Abstract: Aiming at the requirement that the displacement of the tension and compression always be tested and controlled in the equipement such as material testing machine. The position signal was tested by photoelectric axial angle coder. Therefore, the paper proposes the design of electronic universal testing machine design based on LS7266R1. If the position signal detected by other methods, will inevitably lead to the circuit design complexity, reliability decreased. The work theory of the controller, the hardware interface design between LS7266R1 and single chip, and the flow chart of main program, are presented in this paper. The signal of the compression or tension power and displacement at working, which tested by power sensor and displacement sensor especially, is changed into electric voltage and electric pulse numerical signals. And these signals can be tested by A/D and counted by LS7266R1. Finally the test of the material properties can be controlled by itself, or controlled by the COM command of PC.
上傳時間: 2013-11-02
上傳用戶:yl1140vista
以S3C825A為例介紹三星公司SAM8系列單片機的內部結構及其軟件開發環境,詳細描述采用混合編程法來對SAM8系列單片機進行軟件設計的一般方法,最后給出用混合編程法對S3C825A進行軟件設計的具體應用實例。 Abstract: With S3C825A,this paper firstly introduces the SAM8 series single-chip microcontrollers and their software development environment, then introduces mixed programming technology for SAM8 series single-chip microcontrollers. In the end, the application program is also given.
上傳時間: 2013-12-09
上傳用戶:ZZJ886
在冶金、化工,機械等各類工業控制中,電加熱爐都得到了廣泛的應用。目前國內的電加熱爐溫度控制器大多還停留在國際60年代水平,仍在使用繼電一接觸器控制或常規PID控制,自動化程度低,動態控制精度差,滿足不了日益發展的工藝技術要求。電加熱爐的溫度是生產工藝的一項重要指標,溫度控制的好壞將直接影響產品的質量。電加熱爐由電阻絲加熱,溫度控制具有非線性、大滯后、大慣性、時變性、升溫尊向性等特點。而且,在實際應用和研究中,電加熱爐溫度控制遇到了很多困難:第一,很難建立精確的數學模型:第二,不能很好地解決非線性、大滯后等問題。以精確數學模型為基礎地經典控制理論和現代控制論在解決這些問題時遇到了極大地困難,而以語言規則模型(IF—THEN)為基礎的模糊控制理論卻是解決上述問題的有效途徑和方法。國內現有的一些模糊設計方法大多存在不同缺點,而且真正把理論研究應用到實際系統的也較少。所以,深入研究在電加熱爐系統控制中具體模糊控制設計理論是十分必要的。本文針對電加熱爐這一控制對象,以Ts.94—1型號的箱形電加熱爐為參考對象,分別采用工業控制中普遍使用的PID控制、經常見到的模糊控制策略,如基本模糊控制,對其進行仿真實驗,比較,并進行了理論分析。針對上述電加熱爐控制中存在的問題,本文設計了雙模糊控制器。雙模糊控制器在參數自整定模糊控制理論的基礎上,對比例因子進行調整,克服原算法復雜麗不實用的特點,根據電加熱爐不同的工作狀態采用不同的模糊控制器,提高了控制精度,改善了控制效果。本文把模糊控制與神經網絡技術相結合,利用神經網絡很強的學習能力和自適應能力,建立了自適應神經模糊推理系統。把不依賴精確數學模型的模糊控制系統與有價值的經驗數據或參考模型相結合,彌補了模糊控制的不足,使模糊控制系統更能發揮其強大優勢,控制效果理想。在實踐應用方面,以電加熱爐為控制對象,開發了89C51單片機模糊控制器,主要進行了硬件和軟件的設計。
上傳時間: 2013-10-28
上傳用戶:yuanwenjiao
The CAT28LV64 is a low voltage, low power, CMOS Parallel EEPROM organized as 8K x 8−bits. It requires a simple interface for in−system programming. On−chip address and data latches, self−timed write cycle with auto−clear and VCC power up/down write protection eliminate additional timing and protection hardware. DATA Polling and Toggle status bit signal the start and end of the self−timed write cycle. Additionally, the CAT28LV64 features hardware and software write protection.
上傳時間: 2013-11-16
上傳用戶:浩子GG
單片機入門基礎知識大全免費下載 單片機第八課(尋址方式與指令系統) 通過前面的學習,我們已經了解了單片機內部的結構,并且也已經知道,要控制單片機,讓它為我們干學,要用指令,我們已學了幾條指令,但很零散,從現在開始,我們將要系統地學習8051的指令部份。 一、概述 1、指令的格式 我們已知,要讓計算機做事,就得給計算機以指令,并且我們已知,計算機很“笨”,只能懂得數字,如前面我們寫進機器的75H,90H,00H等等,所以指令的第一種格式就是機器碼格式,也說是數字的形式。但這種形式實在是為難我們人了,太難記了,于是有另一種格式,助記符格式,如MOV P1,#0FFH,這樣就好記了。 這兩種格式之間的關系呢,我們不難理解,本質上它們完全等價,只是形式不一樣而已。 2、匯編 我們寫指令使用匯編格式,而計算機只懂機器碼格式,所以要將我們寫的匯編格式的指令轉換為機器碼格式,這種轉換有兩種方法:手工匯編和機器匯編。手工匯編實際上就是查表,因為這兩種格式純粹是格式不同,所以是一一對應的,查一張表格就行了。不過手工查表總是嫌麻煩,所以就有了計算機軟件,用計算機軟件來替代手工查表,這就是機器匯編。 二、尋址 讓我們先來復習一下我們學過的一些指令:MOV P1,#0FFH,MOV R7,#0FFH這些指令都是將一些數據送到相應的位置中去,為什么要送數據呢?第一個因為送入的數可以讓燈全滅掉,第二個是為了要實現延時,從這里我們可以看出來,在用單片機的編程語言編程時,經常要用到數據的傳遞,事實上數據傳遞是單片機編程時的一項重要工作,一共有28條指令(單片機共111條指令)。下面我們就從數據傳遞類指令開始吧。 分析一下MOV P1,#0FFH這條指令,我們不難得出結論,第一個詞MOV是命令動詞,也就是決定做什么事情的,MOV是MOVE少寫了一個E,所以就是“傳遞”,這就是指令,規定做什么事情,后面還有一些參數,分析一下,數據傳遞必須要有一個“源”也就是你要送什么數,必須要有一個“目的”,也就是你這個數要送到什么地方去,顯然在上面那條指令中,要送的數(源)就是0FFH,而要送達的地方(目的地)就是P1這個寄存器。在數據傳遞類指令中,均將目的地寫在指令的后面,而將源寫在最后。 這條指令中,送給P1是這個數本身,換言之,做完這條指令后,我們可以明確地知道,P1中的值是0FFH,但是并不是任何時候都可以直接給出數本身的。例如,在我們前面給出的延時程序例是這樣寫的: MAIN: SETB P1.0 ??;(1) LCALL DELAY ;(2) CLR P1.0 ;(3) LCALL DELAY ;(4) AJMP MAIN ;(5) ;以下子程序 DELAY: MOV R7,#250 ??;(6) D1: MOV R6,#250 ??;(7) D2: DJNZ R6,D2 ?。唬ǎ福? DJNZ R7,D1 ??;(9) RET ?。唬ǎ保埃? END ;(11) 表1 MAIN: SETB P1.0 ?。唬ǎ保? MOV 30H,#255 LCALL DELAY ; CLR P1.0 ;(3) MOV 30H,#200 LCALL DELAY ??;(4) AJMP MAIN ??;(5) ;以下子程序 DELAY: MOV R7,30H ;(6) D1: MOV R6,#250 ??;(7) D2: DJNZ R6,D2 ?。唬ǎ福? DJNZ R7,D1 ??;(9) RET ?。唬ǎ保埃? END ?。唬ǎ保保?表2 這樣一來,我每次調用延時程序延時的時間都是相同的(大致都是0.13S),如果我提出這樣的要求:燈亮后延時時間為0.13S燈滅,燈滅后延時0.1秒燈亮,如此循環,這樣的程序還能滿足要求嗎?不能,怎么辦?我們可以把延時程序改成這樣(見表2):調用則見表2中的主程,也就是先把一個數送入30H,在子程序中R7中的值并不固定,而是根據30H單元中傳過來的數確定。這樣就可以滿足要求。 從這里我們可以得出結論,在數據傳遞中要找到被傳遞的數,很多時候,這個數并不能直接給出,需要變化,這就引出了一個概念:如何尋找操作數,我們把尋找操作數所在單元的地址稱之為尋址。在這里我們直接使用數所在單元的地址找到了操作數,所以稱這種方法為直接尋址。除了這種方法之外,還有一種,如果我們把數放在工作寄存器中,從工作寄存器中尋找數據,則稱之為寄存器尋址。例:MOV A,R0就是將R0工作寄存器中的數據送到累加器A中去。提一個問題:我們知道,工作寄存器就是內存單元的一部份,如果我們選擇工作寄存器組0,則R0就是RAM的00H單元,那么這樣一來,MOV A,00H,和MOV A,R0不就沒什么區別了嗎?為什么要加以區分呢?的確,這兩條指令執行的結果是完全相同的,都是將00H單元中的內容送到A中去,但是執行的過程不同,執行第一條指令需要2個周期,而第二條則只需要1個周期,第一條指令變成最終的目標碼要兩個字節(E5H 00H),而第二條則只要一個字節(E8h)就可以了。 這么斤斤計較!不就差了一個周期嗎,如果是12M的晶振的話,也就1個微秒時間了,一個字節又能有多少? 不對,如果這條指令只執行一次,也許無所謂,但一條指令如果執行上1000次,就是1毫秒,如果要執行1000000萬次,就是1S的誤差,這就很可觀了,單片機做的是實時控制的事,所以必須如此“斤斤計較”。字節數同樣如此。 再來提一個問題,現在我們已知,尋找操作數可以通過直接給的方式(立即尋址)和直接給出數所在單元地址的方式(直接尋址),這就夠了嗎? 看這個問題,要求從30H單元開始,取20個數,分別送入A累加器。 就我們目前掌握的辦法而言,要從30H單元取數,就用MOV A,30H,那么下一個數呢?是31H單元的,怎么取呢?還是只能用MOV A,31H,那么20個數,不是得20條指令才能寫完嗎?這里只有20個數,如果要送200個或2000個數,那豈不要寫上200條或2000條命令?這未免太笨了吧。為什么會出現這樣的狀況?是因為我們只會把地址寫在指令中,所以就沒辦法了,如果我們不是把地址直接寫在指令中,而是把地址放在另外一個寄存器單元中,根據這個寄存器單元中的數值決定該到哪個單元中取數據,比如,當前這個寄存器中的值是30H,那么就到30H單元中去取,如果是31H就到31H單元中去取,就可以解決這個問題了。怎么個解決法呢?既然是看的寄存器中的值,那么我們就可以通過一定的方法讓這里面的值發生變化,比如取完一個數后,將這個寄存器單元中的值加1,還是執行同一條指令,可是取數的對象卻不一樣了,不是嗎。通過例子來說明吧。 MOV R7,#20 MOV R0,#30H LOOP:MOV A,@R0 INC R0 DJNZ R7,LOOP 這個例子中大部份指令我們是能看懂的,第一句,是將立即數20送到R7中,執行完后R7中的值應當是20。第二句是將立即數30H送入R0工作寄存器中,所以執行完后,R0單元中的值是30H,第三句,這是看一下R0單元中是什么值,把這個值作為地址,取這個地址單元的內容送入A中,此時,執行這條指令的結果就相當于MOV A,30H。第四句,沒學過,就是把R0中的值加1,因此執行完后,R0中的值就是31H,第五句,學過,將R7中的值減1,看是否等于0,不等于0,則轉到標號LOOP處繼續執行,因此,執行完這句后,將轉去執行MOV A,@R0這句話,此時相當于執行了MOV A,31H(因為此時的R0中的值已是31H了),如此,直到R7中的值逐次相減等于0,也就是循環20次為止,就實現了我們的要求:從30H單元開始將20個數據送入A中。 這也是一種尋找數據的方法,由于數據是間接地被找到的,所以就稱之為間址尋址。注意,在間址尋址中,只能用R0或R1存放等尋找的數據。 二、指令 數據傳遞類指令 1) 以累加器為目的操作數的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 第一條指令中,Rn代表的是R0-R7。第二條指令中,direct就是指的直接地址,而第三條指令中,就是我們剛才講過的。第四條指令是將立即數data送到A中。 下面我們通過一些例子加以說明: MOV A,R1 ;將工作寄存器R1中的值送入A,R1中的值保持不變。 MOV A,30H ;將內存30H單元中的值送入A,30H單元中的值保持不變。 MOV A,@R1 ;先看R1中是什么值,把這個值作為地址,并將這個地址單元中的值送入A中。如執行命令前R1中的值為20H,則是將20H單元中的值送入A中。 MOV A,#34H ;將立即數34H送入A中,執行完本條指令后,A中的值是34H。 2)以寄存器Rn為目的操作的指令 MOV Rn,A MOV Rn,direct MOV Rn,#data 這組指令功能是把源地址單元中的內容送入工作寄存器,源操作數不變。
上傳時間: 2013-10-13
上傳用戶:3294322651