




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章 常用應(yīng)用程序設(shè)計(jì) 3.1 數(shù)字濾波3.2 標(biāo)度變換3.3 越限報(bào)警3.4 鍵盤控制程序3.5 顯示程序設(shè)計(jì)3.1 數(shù)字濾波數(shù)字濾波 所謂所謂數(shù)字濾波數(shù)字濾波,就是在計(jì)算機(jī)中用某種計(jì)算方法對輸,就是在計(jì)算機(jī)中用某種計(jì)算方法對輸入的信號進(jìn)行數(shù)學(xué)處理,以便減少干擾在有用信號中的比入的信號進(jìn)行數(shù)學(xué)處理,以便減少干擾在有用信號中的比重,提高信號的真實(shí)性。重,提高信號的真實(shí)性。 這種濾波方法不需要增加硬件設(shè)備,只需根據(jù)預(yù)定的這種濾波方法不需要增加硬件設(shè)備,只需根據(jù)預(yù)定的濾波算法編制相應(yīng)的程序即可達(dá)到信號濾波的目的。濾波算法編制相應(yīng)的程序即可達(dá)到信號濾波的目的。 數(shù)字濾波可以對各種干擾信號,甚至極低
2、頻率的信號數(shù)字濾波可以對各種干擾信號,甚至極低頻率的信號進(jìn)行濾波。進(jìn)行濾波。 數(shù)字濾波由于穩(wěn)定性高,濾波參數(shù)修改也方便,一種數(shù)字濾波由于穩(wěn)定性高,濾波參數(shù)修改也方便,一種濾波子程序可以被各控制回路調(diào)用,因此得到廣泛的應(yīng)用濾波子程序可以被各控制回路調(diào)用,因此得到廣泛的應(yīng)用。3.1 數(shù)字濾波數(shù)字濾波3.1.1 程序判斷濾波程序判斷濾波 程序判斷濾波的方法,是程序判斷濾波的方法,是根據(jù)生產(chǎn)經(jīng)驗(yàn),確定出兩次采根據(jù)生產(chǎn)經(jīng)驗(yàn),確定出兩次采樣輸入信號可能出現(xiàn)的最大偏差樣輸入信號可能出現(xiàn)的最大偏差y。若超過此偏差值,則表明該輸入信號是干擾信號,應(yīng)該去若超過此偏差值,則表明該輸入信號是干擾信號,應(yīng)該去掉;掉;如
3、小于此偏差值,可將信號作為本次采樣值。如小于此偏差值,可將信號作為本次采樣值。 當(dāng)采樣信號由于當(dāng)采樣信號由于隨機(jī)干擾隨機(jī)干擾,如大功率用電設(shè)備的啟動(dòng)或,如大功率用電設(shè)備的啟動(dòng)或停止,造成電流的尖峰干擾或誤檢測,以及變送器不穩(wěn)定而停止,造成電流的尖峰干擾或誤檢測,以及變送器不穩(wěn)定而引起的嚴(yán)重失真等,使得采樣數(shù)據(jù)偏離實(shí)際值太遠(yuǎn),可采用引起的嚴(yán)重失真等,使得采樣數(shù)據(jù)偏離實(shí)際值太遠(yuǎn),可采用程序判斷濾波。程序判斷濾波。3.1 數(shù)字濾波數(shù)字濾波1限幅濾波限幅濾波當(dāng)當(dāng)| Y(n)-Y(n-1)|Y時(shí),則取時(shí),則取Y(n)= Y(n),),取本取本次采樣值次采樣值當(dāng)當(dāng)| Y(n)-Y(n-1)|Y時(shí),則取時(shí),
4、則取Y(n)= Y(n-1),),取取上次采樣值上次采樣值 Y(n)第第n次采樣值;次采樣值; Y(n-1)第第n-1次采樣值;次采樣值; Y相鄰兩次采樣值所允許的最大偏差相鄰兩次采樣值所允許的最大偏差,它的大小取決,它的大小取決于采樣周期于采樣周期T及被測參數(shù)及被測參數(shù)Y應(yīng)有的正常變化率。應(yīng)有的正常變化率。 一定要按照實(shí)際情況來確定一定要按照實(shí)際情況來確定Y Y,否則非但達(dá)不到濾波效,否則非但達(dá)不到濾波效果,反而會(huì)降低控制品質(zhì)。果,反而會(huì)降低控制品質(zhì)。Y Y通常可根據(jù)經(jīng)驗(yàn)數(shù)據(jù)獲得,必通??筛鶕?jù)經(jīng)驗(yàn)數(shù)據(jù)獲得,必要時(shí),也可由實(shí)驗(yàn)得出。要時(shí),也可由實(shí)驗(yàn)得出。 程序流程圖程序流程圖3.1 數(shù)字濾波數(shù)
5、字濾波 設(shè)設(shè)Y存放在存放在LIMIT單元,兩次采樣值單元,兩次采樣值Y(n-1)、)、Y(n)存)存放在放在DATA1、DATA2中,濾波結(jié)果存放在中,濾波結(jié)果存放在DATA單元中,單元中,限幅濾波程序如下:限幅濾波程序如下: PUSHPSW;保護(hù)現(xiàn)場PUSHA CLRC;進(jìn)位標(biāo)志位清零MOVDATA, DATA1MOVA, DATA2SUBBA, DATA;求Y(n)Y(n-1)JNCCOMPARE;如果Y(n)- Y(n-1)0,轉(zhuǎn)COMPARECPLA;如果Y(n)- Y(n-1)Y, DATA1DATAOVER:POPA;恢復(fù)現(xiàn)場POPPSWRET;返回LIMITEQU30HDATA1
6、 EQU31HDATA2 EQU32HDATAEQU33H 限幅濾波能有效地克服因偶然因素引起的脈沖干限幅濾波能有效地克服因偶然因素引起的脈沖干擾,但無法抑制周期性的干擾且平滑度差。擾,但無法抑制周期性的干擾且平滑度差。51程序程序BEGIN: MOV AX,DATA1 MOV BX,AX MOV AX,DATA2 SUB AX, BX JG CHECK1 NEG AX CHECK1: CMP AX , LIMIT JG DONE MOV AX,DATA2 JMP OVERDONE: MOV AX,DATA1OVER: MOV DATA ,AX 設(shè)設(shè)上次采樣值存在上次采樣值存在DATA1單元,
7、本次采樣值存放在單元,本次采樣值存放在DATA2中,濾波結(jié)果存放在中,濾波結(jié)果存放在DATA單元中,限幅濾波程序如下:單元中,限幅濾波程序如下:8086程序程序3.1 數(shù)字濾波數(shù)字濾波2限速濾波限速濾波 設(shè)順序采樣時(shí)刻設(shè)順序采樣時(shí)刻tn-1、tn、tn+1所采集的參數(shù)分別為所采集的參數(shù)分別為Y(n-1)、)、Y(n)、)、Y(n+1),那么),那么| ( )(1)|1 |1|1|11|1|2Y nY nYY nY nY nYY nY nY nY nYY nY nY nY nY nY當(dāng)時(shí),( )輸入計(jì)算機(jī)當(dāng) ( ) ()時(shí),( )不采用,但仍保留,繼續(xù)采樣取得()當(dāng) () ( )時(shí),()輸入計(jì)算
8、機(jī)( ) ()當(dāng) () ( )時(shí),則取輸入計(jì)算機(jī)3.1 數(shù)字濾波數(shù)字濾波 限速濾波是一種折衷的方法,既照顧了采樣的實(shí)時(shí)性,限速濾波是一種折衷的方法,既照顧了采樣的實(shí)時(shí)性,又顧及了采樣值變化的連續(xù)性。又顧及了采樣值變化的連續(xù)性。 缺點(diǎn)缺點(diǎn): 第一是第一是Y的確定不夠靈活,必須根據(jù)現(xiàn)場的情況不的確定不夠靈活,必須根據(jù)現(xiàn)場的情況不斷更換新值;斷更換新值; 第二是不能反映采樣點(diǎn)數(shù)第二是不能反映采樣點(diǎn)數(shù)n3時(shí)各采樣數(shù)值受干擾情時(shí)各采樣數(shù)值受干擾情況。因此,它的應(yīng)用受到一定的限制。況。因此,它的應(yīng)用受到一定的限制。 在實(shí)際使用中,可用在實(shí)際使用中,可用 取代取代Y,這樣也可基本保持限速濾波的特性,雖增加一
9、,這樣也可基本保持限速濾波的特性,雖增加一步運(yùn)算,但靈活性大為提高。步運(yùn)算,但靈活性大為提高。 (1)( )( )(1) / 2Y nY nY nY n3.1 數(shù)字濾波數(shù)字濾波程序流程圖3.1 數(shù)字濾波數(shù)字濾波3.1.2 算術(shù)平均值濾波算術(shù)平均值濾波實(shí)質(zhì)實(shí)質(zhì)-把把一個(gè)采樣周期內(nèi)對信號的一個(gè)采樣周期內(nèi)對信號的n次采樣值進(jìn)行算術(shù)平均次采樣值進(jìn)行算術(shù)平均,作為本次的輸出作為本次的輸出 ,即,即)(nYninYnnY1)(1)( n n值決定了信號平滑度和靈敏度。隨著值決定了信號平滑度和靈敏度。隨著n n的增大,平滑度提的增大,平滑度提高,靈敏度降低。高,靈敏度降低。 為方便求平均值,為方便求平均值,
10、n n值一般取值一般取4 4、8 8、1616之類的之類的2 2的整數(shù)冪,的整數(shù)冪,以使用移位來代替除法。通常流量信號取以使用移位來代替除法。通常流量信號取1212項(xiàng),壓力信號取項(xiàng),壓力信號取6 6項(xiàng),溫度、成分等緩慢變化的信號取項(xiàng),溫度、成分等緩慢變化的信號取2 2項(xiàng)甚至不平均。項(xiàng)甚至不平均。 PUSH BEGIN: XOR AX,AX MOV BX,DATA1 MOV CX,NUMBER MOV DX,NUMBERREDO: ADC AX,BX INC BX LOOP REDO ;循環(huán) DIV DX MOV DATA2,AX POP8086程序如下程序如下(采樣首地址為采樣首地址為DATA
11、1單元,單元,采樣次數(shù)為采樣次數(shù)為NUMBER,結(jié)果存于結(jié)果存于DATA2單元單元): 設(shè)8次采樣值依次存放在以DIGIT為首地址的連續(xù)單元中,求出平均值后,結(jié)果保留在SAMP單元中。計(jì)算的中間結(jié)果存放在FLAG和TEMP單元中,程序清單如下:PUSHPSW;現(xiàn)場保護(hù)PUSHAMOVFLAG, #00H;進(jìn)位位清零MOVR0, #DIGIT;設(shè)置數(shù)據(jù)存儲(chǔ)區(qū)首址MOVR7, #08H;設(shè)置采樣數(shù)據(jù)個(gè)數(shù)CLRA;清累加器LOOP: ADDA, R0;兩數(shù)相加JNCNEXT;無進(jìn)位,轉(zhuǎn)NEXTINCFLAG;有進(jìn)位,進(jìn)位位加18051程序如下程序如下NEXT: INCR0 ;數(shù)據(jù)指針加1DJNZR7
12、, LOOP;未加完,繼續(xù)加MOVR7, #03H;設(shè)置循環(huán)次數(shù)DIVIDE:MOVTEMP, A;保存累加器中的內(nèi)容MOVA,FLAG;累加結(jié)果除2CLRCRRCAMOVFLAG, A MOVA, TEMPRRCADJNZR7, DIVIDE;未結(jié)束,繼續(xù)執(zhí)行MOVSAMP,A;保存結(jié)果至SAMP中POPA;恢復(fù)現(xiàn)場POPPSWRET 算術(shù)平均值濾波主要用于對壓力、流量等周期脈動(dòng)算術(shù)平均值濾波主要用于對壓力、流量等周期脈動(dòng)的采樣值進(jìn)行平滑加工,但對偶然出現(xiàn)的脈沖性干擾的平的采樣值進(jìn)行平滑加工,但對偶然出現(xiàn)的脈沖性干擾的平滑作用尚不理想,因而它不適用于脈沖性干擾比較嚴(yán)重的滑作用尚不理想,因而它
13、不適用于脈沖性干擾比較嚴(yán)重的場合。另外該濾波方法比較浪費(fèi)場合。另外該濾波方法比較浪費(fèi)RAM。3.1 數(shù)字濾波數(shù)字濾波3.1.3 加權(quán)平均值濾波加權(quán)平均值濾波加權(quán)平均值濾波法公式為加權(quán)平均值濾波法公式為11110010nnniiiYkYkYkYkY 其中,其中,k0、k1、kn-1為加權(quán)系數(shù),體現(xiàn)了各次采樣值在為加權(quán)系數(shù),體現(xiàn)了各次采樣值在平均值中所占的比例,它們都為大于平均值中所占的比例,它們都為大于0的常數(shù)項(xiàng),且滿足的常數(shù)項(xiàng),且滿足110niik 一般采樣次數(shù)愈靠后,取的比例愈大,這樣可增加新的采一般采樣次數(shù)愈靠后,取的比例愈大,這樣可增加新的采樣值在平均值中的比例。這種濾波方法可以根據(jù)需要
14、突出信樣值在平均值中的比例。這種濾波方法可以根據(jù)需要突出信號的某一部分,抑制信號的另一部分。適用于純滯后較大的號的某一部分,抑制信號的另一部分。適用于純滯后較大的被控對象。被控對象。PUSH BEGIN: XOR AX,AX XOR BX,BX MOV SI,DATA1 MOV DI,DATA2 MOV CX,NUMBERREDO: ADC AX,SI MUL DI INC SI INC DI ADC BX,AX LOOP REDO MOV DATA,BX POP 8086程序程序如下如下(加權(quán)系數(shù)為加權(quán)系數(shù)為DATA1單元,采樣單元,采樣值存于值存于DATA2單元,個(gè)數(shù)為單元,個(gè)數(shù)為NUMB
15、ER,結(jié)果存于結(jié)果存于DATA0單元)單元): 3.1 數(shù)字濾波數(shù)字濾波3.1.4 中值濾波中值濾波 所謂中值濾波是對某一參數(shù)連續(xù)采樣所謂中值濾波是對某一參數(shù)連續(xù)采樣n次(一般次(一般n取奇取奇數(shù)),然后把數(shù)),然后把n次的采樣值從小到大或從大到小排隊(duì),再取次的采樣值從小到大或從大到小排隊(duì),再取中間值作為本次采樣值。中間值作為本次采樣值。 n n 個(gè)數(shù)據(jù)按大小順序排隊(duì)的具體做法是個(gè)數(shù)據(jù)按大小順序排隊(duì)的具體做法是: :兩兩進(jìn)行比較,兩兩進(jìn)行比較,設(shè)設(shè)R1R1為存放數(shù)據(jù)區(qū)首地址,先將(為存放數(shù)據(jù)區(qū)首地址,先將(R1R1)與()與(R1R1)+1+1)進(jìn))進(jìn)行比較,若是(行比較,若是(R1R1)()
16、(R1R1)+1+1)則不交換存放位置,)則不交換存放位置,否則將兩數(shù)位置對調(diào)。繼而再?。ǚ駝t將兩數(shù)位置對調(diào)。繼而再?。≧1R1)+1+1)與()與(R1R1)+2+2)比較,判斷方法亦然,直到最大數(shù)沉底為止。然后再重新進(jìn)行比較,判斷方法亦然,直到最大數(shù)沉底為止。然后再重新進(jìn)行比較,把次大值放到比較,把次大值放到n n-1-1位,如此做下去,則可將位,如此做下去,則可將n n個(gè)數(shù)個(gè)數(shù)從小到從小到大順序排列大順序排列。 3.1 數(shù)字濾波數(shù)字濾波 設(shè)采樣值從設(shè)采樣值從8位位A/D轉(zhuǎn)換器輸入轉(zhuǎn)換器輸入5次,存放在次,存放在SAMP為首地址的內(nèi)存為首地址的內(nèi)存單元中,其程序流程圖單元中,其程序流程圖如
17、圖如圖3-3所示所示 。3.1 數(shù)字濾波數(shù)字濾波51程序清單如下程序清單如下 :ORG8000HINTER: MOVR4, #04H;置大循環(huán)次數(shù)SORT: MOVA, R4;小循環(huán)次數(shù)R5MOVR5, AMOVR1, #SAMP;采樣數(shù)據(jù)存放首地址R1LOOP: MOVA, R1;比較INCR1MOV R2, ACLRCSUBBA, R1MOVA, R2JCDONE3.1 數(shù)字濾波數(shù)字濾波MOV A, R1;(R1)(R1)+1)DECR1XCHA, R1INCR1MOVR1, ADONE: DJNZR5, LOOP;R50,小循環(huán)繼續(xù)進(jìn)行DJNZR4, SORT;R40,大循環(huán)繼續(xù)進(jìn)行IN
18、CR1MOVR1, ARET 中值濾波對于去掉由于偶然因素引起的波動(dòng)或采樣器不穩(wěn)中值濾波對于去掉由于偶然因素引起的波動(dòng)或采樣器不穩(wěn)定而造成的誤差所引起的脈動(dòng)干擾比較有效。若變量變化比較定而造成的誤差所引起的脈動(dòng)干擾比較有效。若變量變化比較緩慢,采用中值濾波效果比較好,但對快速變化過程的參數(shù)緩慢,采用中值濾波效果比較好,但對快速變化過程的參數(shù)(如流量),則不宜采用。一般(如流量),則不宜采用。一般n n取取5 59 9次。次。3.1 數(shù)字濾波數(shù)字濾波3.1.5 去極值平均濾波去極值平均濾波 去極值平均值濾波的算法是:連續(xù)采樣去極值平均值濾波的算法是:連續(xù)采樣n次,去掉一次,去掉一個(gè)最大值,再去掉
19、一個(gè)最小值,求余下個(gè)最大值,再去掉一個(gè)最小值,求余下n-2個(gè)采樣值的平個(gè)采樣值的平均值。程序的流程圖如圖均值。程序的流程圖如圖3-4所示。所示。 為使平均濾波方便,為使平均濾波方便,n-2應(yīng)為應(yīng)為2、4、8、16,故,故n常取常取4、6、10、18。3.1 數(shù)字濾波數(shù)字濾波圖3-4 去極值平均濾波3.1 數(shù)字濾波數(shù)字濾波3.1.6 滑動(dòng)平均濾波滑動(dòng)平均濾波 滑動(dòng)平均濾波法把滑動(dòng)平均濾波法把n個(gè)測量數(shù)據(jù)看成一個(gè)隊(duì)列,隊(duì)列的長個(gè)測量數(shù)據(jù)看成一個(gè)隊(duì)列,隊(duì)列的長度固定為度固定為n,每進(jìn)行一次新的采樣,把測量結(jié)果放入隊(duì)尾,而,每進(jìn)行一次新的采樣,把測量結(jié)果放入隊(duì)尾,而去掉原來隊(duì)首的一個(gè)數(shù)據(jù),這樣在隊(duì)列中
20、始終有去掉原來隊(duì)首的一個(gè)數(shù)據(jù),這樣在隊(duì)列中始終有n個(gè)個(gè)“最新最新”的數(shù)據(jù)。然后把隊(duì)列中的的數(shù)據(jù)。然后把隊(duì)列中的n個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,就可獲個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,就可獲得新的濾波結(jié)果。得新的濾波結(jié)果。 滑動(dòng)平均值濾波對周期性干擾有良好的抑制作用,平滑度滑動(dòng)平均值濾波對周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對偶然出現(xiàn)的脈沖性干擾的抑制作用差,不高,靈敏度低;但對偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差,因此它不適用于脈易消除由于脈沖干擾引起的采樣值的偏差,因此它不適用于脈沖干擾比較嚴(yán)重的場合,而適用于高頻振蕩系統(tǒng)。沖干擾比較嚴(yán)重的場合,而適用于高頻
21、振蕩系統(tǒng)。 通常對流量信號,通常對流量信號,n取取12,壓力信號,壓力信號n取取4,液面參數(shù),液面參數(shù)n取取412,溫度信號,溫度信號n取取14。3.1 數(shù)字濾波數(shù)字濾波 假定假定n個(gè)雙字節(jié)型采樣值,個(gè)雙字節(jié)型采樣值,40H單元為采樣隊(duì)列內(nèi)存單單元為采樣隊(duì)列內(nèi)存單元首地址,元首地址,n個(gè)采樣值之和不大于個(gè)采樣值之和不大于16位。新的采樣值存于位。新的采樣值存于3EH、3FH單元,濾波值存于單元,濾波值存于60H、61H單元。單元。FARFIL為算為算術(shù)平均濾波程序。術(shù)平均濾波程序。51程序清單為:程序清單為:MOVR2, N-1;采樣個(gè)數(shù)MOVR0, 42H;隊(duì)列單元首地址MOVR1, 43H
22、LOOP: MOVA, R0;移動(dòng)低字節(jié)DECR0DECR0MOVR0, AMOVA, R0;修改低字節(jié)地址ADDA, 04HMOVR0, A3.1 數(shù)字濾波數(shù)字濾波MOVA, R1;移動(dòng)高字節(jié)DECR1DECR1MOVR1, AMOVA, R1;修改高字節(jié)地址ADDA, 04HMOVR1, ADJNZR2, LOOPMOVR0, 3EH;存新的采樣值MOVR1, 3FHACALL FARFIL;求算術(shù)平均值RET3.1 數(shù)字濾波數(shù)字濾波3.1.7 低通數(shù)字濾波低通數(shù)字濾波(慣性濾波)慣性濾波) 對于變化過程比較緩慢的隨機(jī)變量采用短時(shí)間內(nèi)連續(xù)采樣,對于變化過程比較緩慢的隨機(jī)變量采用短時(shí)間內(nèi)連續(xù)
23、采樣,然后求平均值的方法進(jìn)行濾波,其效果往往不夠理想。為了提然后求平均值的方法進(jìn)行濾波,其效果往往不夠理想。為了提高濾波效果,可以仿照模擬系統(tǒng)高濾波效果,可以仿照模擬系統(tǒng)RC低通濾波器的方法,將普低通濾波器的方法,將普通硬件通硬件RC低通濾波器的微分方程用差分方程來表示,便可以低通濾波器的微分方程用差分方程來表示,便可以用軟件算法來模擬硬件濾波器的功能。用軟件算法來模擬硬件濾波器的功能。 RC低通濾波器3.1 數(shù)字濾波數(shù)字濾波模擬低通濾波器的傳遞函數(shù)為模擬低通濾波器的傳遞函數(shù)為11)()()(ssXsYsG其中,其中, 為為RC濾波器的時(shí)間常數(shù),濾波器的時(shí)間常數(shù), 。 RC用一階向后差分法離散
24、化后,可得:用一階向后差分法離散化后,可得:Y(n)=(1-)Y(n-1)+X(n) 式中,式中,X(n)本次采樣值;本次采樣值; Y(n-1)上次的濾波輸出值;上次的濾波輸出值; 濾波系數(shù),濾波系數(shù),TT T采樣周期;采樣周期; Y(n)本次濾波的輸出值。本次濾波的輸出值。 PUSH BEGIN: XOR AX,AX MOV BX,DATA1 MOV AX,COE MUL BX PUSH DX PUSH AX MOV AX,01D SUB AX,COE MUL DATA2NEXT: POP BX ADD AX,BX POP BX ADC DX,BXOVER: POP Y(n)=(1-)Y(n
25、-1)+X(n) 3.1 數(shù)字濾波數(shù)字濾波3.1.8 復(fù)合濾波程序復(fù)合濾波程序 為了進(jìn)一步提高濾波效果,改善控制精度,有時(shí)可以把為了進(jìn)一步提高濾波效果,改善控制精度,有時(shí)可以把兩種或兩種以上有不同濾波效果的數(shù)字濾波器組合起來,形兩種或兩種以上有不同濾波效果的數(shù)字濾波器組合起來,形成復(fù)合數(shù)字濾波器,或稱多級數(shù)字濾波器。成復(fù)合數(shù)字濾波器,或稱多級數(shù)字濾波器。 例如:把中值濾波和算術(shù)平均值濾波結(jié)合起來(例如:把中值濾波和算術(shù)平均值濾波結(jié)合起來(去極去極值平均值濾波值平均值濾波),就可以結(jié)合兩者的優(yōu)點(diǎn),既可以消除周),就可以結(jié)合兩者的優(yōu)點(diǎn),既可以消除周期性的干擾信號,又可對隨機(jī)的脈沖干擾信號進(jìn)行濾波。
26、期性的干擾信號,又可對隨機(jī)的脈沖干擾信號進(jìn)行濾波。濾波步驟為:濾波步驟為: 把把n次采樣值按照從大到小或者從小到大的順序排列。次采樣值按照從大到小或者從小到大的順序排列。 采用中值濾波,去掉最大值和最小值。采用中值濾波,去掉最大值和最小值。 對其余的對其余的n-2個(gè)采樣值取算術(shù)平均值,作為濾波的輸出值。個(gè)采樣值取算術(shù)平均值,作為濾波的輸出值。3.1 數(shù)字濾波數(shù)字濾波 此外,也可以采用多重濾波的方法,把多個(gè)濾波器串聯(lián)起來,前一個(gè)數(shù)字濾波器的輸出作為后一個(gè)數(shù)字濾波器的輸入。 比如:可以把兩個(gè)低通濾波器串聯(lián)起來,形成雙重濾波,這樣濾波效果會(huì)更好些。其濾波算式可以采用迭代方法求出。 3.1 數(shù)字濾波數(shù)
27、字濾波由式第一級濾波輸出為 Y(n)=(1-)Y(n-1)+X(n) (3-9) 第二級濾波輸出為 Z(n)=(1-)Z(n-1)+Y(n) (3-10)將式(3-9)代入式(3-10)得Z(n)=(1-)Z(n-1)+(1-)Y(n-1)+2X(n) (3-11)Y(n)=(1-)Y(n-1)+X(n) 3.1 數(shù)字濾波數(shù)字濾波由式(3-10)可以求出 Y(n)= Z(n)-(1-)Z(n-1) (3-12)再用n-1代替n,可得Y(n-1)= Z(n-1)-(1-)Z(n-2) (3-13)將式(3-13)代入式(3-11),就得到兩級數(shù)字濾波算式Z(n)=2(1-)Z(n-1)-(1-)
28、2Z(n-2)+2X(n) (3-14)數(shù)字濾波方法的選取數(shù)字濾波方法的選取對于變化緩慢的參數(shù)(如溫度),可選用程序判斷濾波對于變化緩慢的參數(shù)(如溫度),可選用程序判斷濾波及慣性濾波及慣性濾波對于變化較快的信號(如壓力和流量等),可選用算術(shù)對于變化較快的信號(如壓力和流量等),可選用算術(shù)平均或加權(quán)平均濾波平均或加權(quán)平均濾波對于要求較高的系統(tǒng),可選用復(fù)合濾波對于要求較高的系統(tǒng),可選用復(fù)合濾波濾波效果相同時(shí),應(yīng)選用執(zhí)行時(shí)間短的程序?yàn)V波效果相同時(shí),應(yīng)選用執(zhí)行時(shí)間短的程序3.2 標(biāo)度變換標(biāo)度變換標(biāo)度變換:標(biāo)度變換: 在計(jì)算機(jī)控制系統(tǒng)中,生產(chǎn)中的各個(gè)參數(shù)都在計(jì)算機(jī)控制系統(tǒng)中,生產(chǎn)中的各個(gè)參數(shù)都有著不同的
29、數(shù)值和量綱,所有這些參數(shù)都經(jīng)過變送有著不同的數(shù)值和量綱,所有這些參數(shù)都經(jīng)過變送器轉(zhuǎn)換成器轉(zhuǎn)換成A/D轉(zhuǎn)換器所能接收的轉(zhuǎn)換器所能接收的05V統(tǒng)一電壓信統(tǒng)一電壓信號,又由號,又由AD轉(zhuǎn)換成轉(zhuǎn)換成00FFH(8位)的數(shù)字量。位)的數(shù)字量。為進(jìn)一步顯示、記錄、打印以及報(bào)警等,必須把這為進(jìn)一步顯示、記錄、打印以及報(bào)警等,必須把這些數(shù)字量轉(zhuǎn)換成不同的單位,以便操作人員對生產(chǎn)些數(shù)字量轉(zhuǎn)換成不同的單位,以便操作人員對生產(chǎn)過程進(jìn)行監(jiān)視和管理。這就是所謂的標(biāo)度變換。過程進(jìn)行監(jiān)視和管理。這就是所謂的標(biāo)度變換。3.2 標(biāo)度變換標(biāo)度變換3.2.1 線性參數(shù)標(biāo)度變換線性參數(shù)標(biāo)度變換 所謂線性參數(shù),指一次儀表測量值與所謂線
30、性參數(shù),指一次儀表測量值與A/D轉(zhuǎn)換結(jié)果具有線性轉(zhuǎn)換結(jié)果具有線性關(guān)系,或者說一次儀表是線性刻度的。關(guān)系,或者說一次儀表是線性刻度的。 標(biāo)度變換公式為標(biāo)度變換公式為 0000)(NNNNAAAAmxmx式中, A0 一次測量儀表的下限; Am 一次測量儀表的上限; Ax 實(shí)際測量值(工程量); N0 儀表下限對應(yīng)的數(shù)字量; Nm 儀表上限對應(yīng)的數(shù)字量; Nx 測量值所對應(yīng)的數(shù)字量。3.2 標(biāo)度變換標(biāo)度變換 為使程序簡單,一般把被測參數(shù)的起點(diǎn)A0(輸入信號為0)所對應(yīng)的A/D輸出值為0,即N0=0,這樣上式可化作00)(AAANNAmmxx(3-16) 比如:某熱處理爐溫度測量儀表的量程為2001
31、000,在某一時(shí)刻計(jì)算機(jī)采樣并經(jīng)數(shù)字濾波后的數(shù)字量為0CDH,設(shè)儀表量程為線性的,求出此時(shí)溫度值。A0=200 ,Am=1000 ,Nx=0CDH=(205)D,Nm=0FFH=(255)D,根據(jù)式(3-16)可得此時(shí)溫度為843200)2001000(255205)(00AAANNAmmxx3.2 標(biāo)度變換標(biāo)度變換 有時(shí),工程量的實(shí)際值還需經(jīng)過一次變換。如電壓測量值是電壓互感器的二次側(cè)的電壓,則其一次側(cè)的電壓還有一個(gè)互感器的變比問題,這時(shí)上式應(yīng)再乘上一個(gè)比例系數(shù),即)(00AAANNkAmmxx(3-17) 3.2 標(biāo)度變換標(biāo)度變換3.2.2 非線性參數(shù)標(biāo)度變換非線性參數(shù)標(biāo)度變換比如比如:在
32、過程控制中,最常見的非線性關(guān)系是差壓變送器信號在過程控制中,最常見的非線性關(guān)系是差壓變送器信號P與流量與流量Q的關(guān)系的關(guān)系PkQ(3-18) 式中,Q流量; k流量系數(shù),與流體的性質(zhì)及節(jié)流裝置的尺寸有關(guān);P節(jié)流裝置前后的差壓。3.2 標(biāo)度變換標(biāo)度變換據(jù)此,可得測量流量時(shí)的標(biāo)度變換式為 0000NkNkNkNkQQQQmxmx整理得0000)(QQQNNNNQmmxx (3-19) 式中式中 Q0流量儀表的下限值;流量儀表的下限值; Qm流量儀表的上限值;流量儀表的上限值; Qx被測量的流量值;被測量的流量值; N0差壓變送器下限所對應(yīng)的數(shù)字量;差壓變送器下限所對應(yīng)的數(shù)字量; Nm差壓變送器上限
33、所對應(yīng)的數(shù)字量;差壓變送器上限所對應(yīng)的數(shù)字量; Nx差壓變送器所測得的差壓值(數(shù)字量)。差壓變送器所測得的差壓值(數(shù)字量)。3.2 標(biāo)度變換標(biāo)度變換 對于流量測量儀表,一般下限取0,此時(shí)Q0=0,N0=0,故上式變?yōu)閙xmxNNQQ0000)(QQQNNNNQmmxx3.3 越限報(bào)警越限報(bào)警 在計(jì)算機(jī)控制系統(tǒng)中,為了安全生產(chǎn),對于一些重要的參數(shù)或系統(tǒng)部位,都設(shè)有上、下限檢查及報(bào)警系統(tǒng),以便提醒操作人員注意或采取相應(yīng)的措施。其方法就是把計(jì)算機(jī)采集的數(shù)據(jù)經(jīng)計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理、數(shù)字濾波、標(biāo)度變換之后,與該參數(shù)上、下限給定值進(jìn)行比較,如果高于(或低于)上限(或下限),則進(jìn)行報(bào)警,否則就作為采樣的正常值
34、,以便進(jìn)行顯示和控制。 報(bào)警系統(tǒng)一般為聲光報(bào)警信號,在某些系統(tǒng)中,需要增加功能,還帶有打印輸出,如記下報(bào)警的參數(shù)、時(shí)間等,并能自動(dòng)進(jìn)行處理,如自動(dòng)切換到手動(dòng),切斷閥門或自動(dòng)撥出電話號碼等。3.3 越限報(bào)警越限報(bào)警報(bào)警程序的設(shè)計(jì)方法主要有兩種: 一種是軟件報(bào)警。這種方法的基本作法是把被測參數(shù)如溫度、壓力、流量、速度、成分等參數(shù),經(jīng)傳感器、變送器、AD轉(zhuǎn)換送入計(jì)算機(jī)后,再與規(guī)定的上、下限值進(jìn)行比較,根據(jù)比較的結(jié)果進(jìn)行報(bào)警或處理,整個(gè)過程都由軟件實(shí)現(xiàn)。 另一種是直接報(bào)警?;咀鞣ㄊ潜粶y參數(shù)與給定值的比較在傳感器中進(jìn)行,如果被測參數(shù)超過給定值,就會(huì)通過硬件向CPU提出中斷請求,CPU響應(yīng)中斷后,會(huì)產(chǎn)生
35、報(bào)警信號。不論是軟件報(bào)警,還是直接報(bào)警,都需要經(jīng)過以下三個(gè)步驟: 對被測參數(shù)進(jìn)行采樣。 將采樣值與給定值的上、下限值進(jìn)行比較。 根據(jù)比較結(jié)果執(zhí)行相應(yīng)的報(bào)警處理程序。3.3 越限報(bào)警越限報(bào)警3.3.1 軟件報(bào)警程序設(shè)計(jì)軟件報(bào)警程序設(shè)計(jì) 假設(shè)被測參數(shù)的采樣值為Ux,設(shè)定該參數(shù)的上、下限值分別為Umax、Umin。要求若被測參數(shù)Ux Umax時(shí),則上限報(bào)警;若被測參數(shù)Ux Umax嗎ALARM1:CJNE A, 31H, BB;Ux Umax,轉(zhuǎn)AOUT1AJMPALARM1BB:JCAOUT2;Ux Umin,轉(zhuǎn)AOUT2AJMPDONEAOUT1:SETB00H;置Ux超上限報(bào)警標(biāo)志AJMPDO
36、NEAOUT2:SETB01H;置Ux越下限報(bào)警標(biāo)志AJMPDONE3.3 越限報(bào)警越限報(bào)警3.3.2 直接報(bào)警程序直接報(bào)警程序 這種報(bào)警方法的前提條件是被測參數(shù)與給定值的比較是在傳感器中進(jìn)行的。當(dāng)檢測值超過上限或低于下限時(shí),結(jié)點(diǎn)開關(guān)閉合,從而產(chǎn)生報(bào)警信號。 圖中,圖中,SL1和和SL2分別為被測參數(shù)的分別為被測參數(shù)的上、下限報(bào)警結(jié)點(diǎn)。當(dāng)被測參數(shù)處于正上、下限報(bào)警結(jié)點(diǎn)。當(dāng)被測參數(shù)處于正常范圍時(shí),常范圍時(shí),P1.0和和P1.1均為高電平,當(dāng)參均為高電平,當(dāng)參數(shù)超過上限或低于下限時(shí),其中的一個(gè)數(shù)超過上限或低于下限時(shí),其中的一個(gè)結(jié)點(diǎn)就會(huì)閉合,這樣就會(huì)由高電平變?yōu)榻Y(jié)點(diǎn)就會(huì)閉合,這樣就會(huì)由高電平變?yōu)榈碗?/p>
37、平,向低電平,向CPU發(fā)出中斷請求。發(fā)出中斷請求。CPU響響應(yīng)中斷后,讀入報(bào)警狀態(tài)應(yīng)中斷后,讀入報(bào)警狀態(tài)P1.0和和P1.1,然,然后從后從P1.4和和P1.5輸出報(bào)警信號,完成越限輸出報(bào)警信號,完成越限報(bào)警。報(bào)警。 3.3 越限報(bào)警越限報(bào)警具體報(bào)警程序如下:ORG6000HAJMPMAIN;上電自動(dòng)轉(zhuǎn)向主程序ORG0003H;外部中斷方式0入口地址AJMPALARMORG0200HMAIN:SETBIT0;選擇邊沿觸發(fā)方式SETBEX0;允許外部中斷0SETBEA;CPU允許中斷HERE: SJMPHERE;模擬主程序ORG0220HALARM:MOVA, #0FFH;設(shè)P1口為輸入口MOV
38、P1, AMOVA, P1;取報(bào)警狀態(tài)SWAP A;ACC.7ACC.4與ACC.3ACC.0交換MOVP1, A;輸出報(bào)警信號RETI3.3 越限報(bào)警越限報(bào)警 在實(shí)際的控制系統(tǒng)中,往往為了避免測量值在極限值附近擺動(dòng)造成頻繁報(bào)警,可以在上、下限附近設(shè)定一個(gè)回差帶,如圖3-9所示。具體上、下限帶寬的選擇應(yīng)根據(jù)被測參數(shù)的具體情況來決定。 圖3-9 上、下限設(shè)置回差帶3.4 鍵盤控制程序鍵盤控制程序3.4.1 鍵盤的組成、特點(diǎn)及消除抖動(dòng)的措施鍵盤的組成、特點(diǎn)及消除抖動(dòng)的措施1鍵盤的組成及特點(diǎn) 一個(gè)按鍵電路如圖3-10所示。當(dāng)按鍵未按下時(shí),VA=1,為高電平;當(dāng)按鍵S按下時(shí),VA=0,為低電平。因此,
39、通過高、低電平的檢測,便可確定按鍵是否被按下。 圖3-10 按鍵電路3.4 鍵盤控制程序鍵盤控制程序 由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合或斷開時(shí)不會(huì)馬上穩(wěn)定下來,會(huì)有瞬間的抖動(dòng),具體波形如圖3-11所示。 圖3-11 按鍵抖動(dòng)波形3.4 鍵盤控制程序鍵盤控制程序2消除按鍵抖動(dòng)的措施 消除按鍵抖動(dòng)的措施有兩種:硬件方法和軟件方法。(1)硬件方法 采用RC濾波消抖電路或RS雙穩(wěn)態(tài)消抖電路,如圖3-12所示。3.4 鍵盤控制程序鍵盤控制程序(2)軟件方法 當(dāng)按鍵數(shù)量較多時(shí),硬件消抖將無法勝任。在這種情況下,可以采用軟件的方法進(jìn)行消抖。在第一次檢測到有按鍵閉合時(shí),首先執(zhí)行一段延時(shí)10ms的子程
40、序,然后再確認(rèn)該按鍵電平是否仍保持閉合狀態(tài)電平,如果保持閉合狀態(tài)電平則確認(rèn)為真正有按鍵按下,從而消除了抖動(dòng)的影響。3.4 鍵盤控制程序鍵盤控制程序3.4.2 獨(dú)立式按鍵接口技術(shù)獨(dú)立式按鍵接口技術(shù) 所謂獨(dú)立式按鍵就是每個(gè)按鍵各接一根輸入線,各個(gè)按鍵的工作狀態(tài)互不影響。因此,通過檢測輸入線的電平狀態(tài)可以很容易判斷哪個(gè)按鍵被按下了。3.4 鍵盤控制程序鍵盤控制程序 由圖3-13可知8255A的口地址為:PA口地址為7FFCH、PB口地址為7FFDH、PC口地址為7FFEH、控制口地址為7FFFH。查詢方式編程如下:ORG3000HMOVDPTR, #7FFFH ;8255A初始化MOVA, #90H
41、MOVX DPTR, AKBSPR:ACALL KEY;讀鍵的狀態(tài)JZDONE;若無按鍵閉合,轉(zhuǎn)DONEACALL DL10mS;若有鍵按下,延時(shí)10mS以防抖動(dòng)ACALL KEY;重讀鍵的狀態(tài)JZDONE;若無按鍵閉合,轉(zhuǎn)DONEJBACC.0, S1;轉(zhuǎn)S1鍵處理JBACC.1, S2;轉(zhuǎn)S2鍵處理3.4 鍵盤控制程序鍵盤控制程序JBACC.2, S3;轉(zhuǎn)S3鍵處理JBACC.3, S4;轉(zhuǎn)S4鍵處理JBACC.4, S5;轉(zhuǎn)S5鍵處理JBACC.5, S6;轉(zhuǎn)S6鍵處理JBACC.6, S7;轉(zhuǎn)S7鍵處理JBACC.7, S8;轉(zhuǎn)S8鍵處理DONE: RETKEY:MOVDPTR, #7
42、FFCH;判斷有無按鍵閉合MOVX A, DPTRCPLA;若(A)=0,則無按鍵閉合RET3.4 鍵盤控制程序鍵盤控制程序DL10mS:MOV R5, #14H;延時(shí)10mS子程序DL:MOVR6, #0FFHDL0:DJNZR6, DL0DJNZR5, DLRETS1:S1鍵處理S2:S2鍵處理3.4 鍵盤控制程序鍵盤控制程序 獨(dú)立式鍵盤與計(jì)算機(jī)的接口也可以采用中斷方式,如圖3-14所示。 3.4 鍵盤控制程序鍵盤控制程序3.4.3 矩陣式鍵盤接口技術(shù)矩陣式鍵盤接口技術(shù)1矩陣式鍵盤工作原理 矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點(diǎn)上,行、列線分別連接到按鍵開關(guān)的兩端。行線通過上
43、拉電阻接到5V上,如圖3-15所示 平時(shí)無按鍵動(dòng)作時(shí),行線處于高電平平時(shí)無按鍵動(dòng)作時(shí),行線處于高電平狀態(tài),而當(dāng)有按鍵按下時(shí),行線電平狀態(tài)狀態(tài),而當(dāng)有按鍵按下時(shí),行線電平狀態(tài)將由與此行線相連的列線電平?jīng)Q定。列線將由與此行線相連的列線電平?jīng)Q定。列線電平如果為低,則行線電平為低;列線電電平如果為低,則行線電平為低;列線電平如果為高,則行線電平亦為高。這一點(diǎn)平如果為高,則行線電平亦為高。這一點(diǎn)是識別矩陣鍵盤按鍵是否被按下的關(guān)鍵所是識別矩陣鍵盤按鍵是否被按下的關(guān)鍵所在。在。 3.4 鍵盤控制程序鍵盤控制程序(1)掃描法 矩陣鍵盤按鍵的識別方法,此方法分兩步進(jìn)行:第一步,識別鍵盤有無鍵被按下;第二步,如果
44、有鍵被按下,識別出具體的按鍵。 識別鍵盤有無鍵被按下的方法是:讓所有列線均置為0電平,檢查各行線電平是否有變化,如果有變化,則說明有鍵被按下,如果沒有變化,則說明無鍵被按下。(實(shí)際編程時(shí)應(yīng)考慮按鍵抖動(dòng)的影響,通常總是采用軟件延時(shí)的方法進(jìn)行消抖處理。) 識別具體按鍵的方法是(亦稱之為掃描法):逐列置零電平,其余各列置為高電平,檢查各行線電平的變化,如果某行電平由高電平變?yōu)榱汶娖?,則可確定此行此列交叉點(diǎn)處的按鍵被按下。2按鍵的識別方法3.4 鍵盤控制程序鍵盤控制程序(2)線反轉(zhuǎn)法線反轉(zhuǎn)法只須經(jīng)過兩步便能獲得此按鍵所在的行與列的值。 第一步:將行線編程為輸入線,列線編程為輸出線,并使輸出線輸出為全零
45、電平,則行線中電平由高到低所在行為按鍵所在行。 第二步:同第一步完全相反,將行線編程為輸出線,列線編程為輸入線,并使輸出線輸出為全零電平,則列線中電平由高到低所在列為按鍵所在列。 綜合一、二兩步的結(jié)果,可確定按鍵所在行和列,從而識別出所按的鍵。3.4 鍵盤控制程序鍵盤控制程序 假設(shè)7號鍵被按下,那么: 第一步即在P1.0P1. 3輸出全為0,然后,讀入P1. 4P1.7位的狀態(tài),結(jié)果P1.5=0,而P1.4、P1.6和P1.7均為1,因此,第1行出現(xiàn)電平的變化,說明第1行有鍵按下; 第二步讓P1.4P1.7輸出全為0,然后,讀入P1.0P1.3位,結(jié)果P1.3=0,而P1.1、P1.2和P1.
46、0均為1,因此第3列出現(xiàn)電平的變化,說明第3列有鍵按下。 綜合一、二兩步,即第1行第3列按鍵被按下,此按鍵即是7號鍵。3.4 鍵盤控制程序鍵盤控制程序3鍵盤工作方式 鍵盤工作方式有3種,即:編程掃描、定時(shí)掃描和中斷掃描。(1)編程掃描法 所謂編程掃描就是CPU對鍵盤的掃描采取程序控制方式,一旦進(jìn)入鍵掃描狀態(tài),則反復(fù)地掃描鍵盤,等待用戶從鍵盤上輸入命令或數(shù)據(jù)。而在執(zhí)行鍵入命令或處理鍵入數(shù)據(jù)過程中,CPU將不再響應(yīng)鍵入要求,直到CPU返回重新掃描鍵盤為止。3.4 鍵盤控制程序鍵盤控制程序(2)定時(shí)掃描法 定時(shí)掃描工作方式就是CPU每隔一定的時(shí)間(例如10ms)對鍵盤掃描一遍。當(dāng)發(fā)現(xiàn)有鍵按下時(shí),便進(jìn)
47、行讀入鍵盤操作,以求出鍵值,并分別進(jìn)行處理。定時(shí)時(shí)間間隔由單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器來完成,這樣可以減少計(jì)算機(jī)掃描鍵盤的時(shí)間,以減少CPU的開銷。具體做法是,當(dāng)定時(shí)時(shí)間到,定時(shí)器便自動(dòng)輸出一脈沖信號,使CPU轉(zhuǎn)去執(zhí)行掃描程序。(3)中斷掃描法 當(dāng)沒有鍵入操作時(shí),CPU不對鍵盤進(jìn)行掃描,以節(jié)省出大量的時(shí)間對系統(tǒng)進(jìn)行監(jiān)控和數(shù)據(jù)處理。一旦鍵盤有輸入,則向CPU申請中斷。CPU響應(yīng)中斷后,即轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序,對鍵盤進(jìn)行掃描,以便判別鍵盤上閉合鍵的鍵號,并做出相應(yīng)的處理。3.4 鍵盤控制程序鍵盤控制程序 綜上所述,對鍵盤所做的工作分為三個(gè)層次: 第1層:監(jiān)視鍵盤的輸入。體現(xiàn)在鍵盤的工作方式上就是:
48、編程掃描工作方式; 定時(shí)掃描工作方式; 中斷掃描工作方式。 第2層:確定具體按鍵。體現(xiàn)在按鍵的識別方法上就是: 掃描法; 線反轉(zhuǎn)法。 第3層:鍵功能程序執(zhí)行。3.4 鍵盤控制程序鍵盤控制程序4鍵盤接口及編程方法 圖3-17為一個(gè)48矩陣鍵盤通過8255A擴(kuò)展IO口與80C51單片機(jī)的接口電路原理圖。圖3-17 8255A擴(kuò)展I/O口組成的48矩陣式鍵盤3.4 鍵盤控制程序鍵盤控制程序 在圖3-17中,8255A的PA、PB、PC口地址分別為:7FFCH、7FFDH、7FFEH,控制口地址為7FFFH。當(dāng)PA口工作于方式0輸出,PC口低4位工作于方式0輸入時(shí),方式命令控制字可設(shè)為89H。 鍵盤掃
49、描子程序完成如下4個(gè)功能。(1)判斷鍵盤上有無鍵閉合。(2)消除按鍵機(jī)械抖動(dòng)(3)判別閉合鍵的鍵號(4)使CPU對鍵的一次閉合僅作一次處理3.4 鍵盤控制程序鍵盤控制程序鍵輸入子程序的框圖3.4 鍵盤控制程序鍵盤控制程序 下面為鍵輸入程序的清單,從該程序返回后輸入鍵的鍵號在BUFF單元中。ORG5000HPROG: MOV DPTR, #7FFFH ;8255A初始化 MOV A, #89H ;89H=10001001MOVX DPTR, AKEY1: ACALL KS1 ;判斷有無鍵閉合JNZ LK1 ;(A)0,說明有鍵閉合AJMP KEY1 ;(A)=0,說明無鍵閉合LK1:ACALL
50、DL10ms ;延時(shí)10ms(消抖)ACALL KS1 ;再次判斷有無鍵閉合JNZ LK2 ;(A)0,有鍵閉合,轉(zhuǎn)LK2AJMP KEY1 ;繼續(xù)查詢3.4 鍵盤控制程序鍵盤控制程序LK2: MOV R2, #0FEH ;掃描模式R2MOV R4, #00H ;R4為列計(jì)數(shù)器LK4:MOV DPTR, #7FFCH ;掃描模式8255PA口MOV A, R2 MOVX DPTR, AINC DPTRINC DPTRMOVX A, DPTR ;讀8255PC口JB ACC.0, LONE ; ACC.0=1,說明0行無鍵閉合,轉(zhuǎn) 判第1行MOV A, #00H ;0行有鍵閉合,首鍵號0A AJ
51、MP LKPLONE: JBACC.1, LTWOMOV A, #08H ;1行有鍵閉合,首鍵號8AAJMP LKP3.4 鍵盤控制程序鍵盤控制程序LTWO: JB ACC.2, LTHRMOV A, #10H;2行有鍵閉合,首鍵號16AAJMP LKPLTHR: JB ACC.3, NEXT ;轉(zhuǎn)判下一列MOV A, #18H;3行有鍵閉合,首鍵號24ALKP:ADD A, R4 ;鍵號=列號+行首鍵號PUSH ALK3: ACALL KS1 ;判斷鍵是否釋放JNZ LK3 ;直到A=0,鍵釋放POP A MOV BUFF, A ;存鍵值(如:以備顯示) AJMPKNDNEXT: INC R
52、4 ;列計(jì)數(shù)器加1MOV A,R2 ;判斷是否掃描到最后一列JNB ACC.7, KND RL A ;A7A0 A73.4 鍵盤控制程序鍵盤控制程序MOV R2, AAJMP LK4KND:AJMP KEY1KS1:MOV DPTR, #7FFCH ;全0掃描口PAMOV A, #00HMOVX DPTR, AINC DPTRINC DPTRMOVX A, DPTR ;讀鍵入狀態(tài)PC03CPL AANL A, #0FH ;屏蔽高4位(若(A)=0,說明鍵沒閉合)RETDL10ms: MOV R5, #14HDL:MOV R6, #0FFH DL0:DJNZ R6, DL0DJNZ R5, DL
53、RET3.4 鍵盤控制程序鍵盤控制程序3.4.4 雙功能鍵的設(shè)計(jì)及重鍵處理技術(shù)雙功能鍵的設(shè)計(jì)及重鍵處理技術(shù)1雙功能鍵的設(shè)計(jì) 解決的辦法是設(shè)置上/下檔開關(guān)來實(shí)現(xiàn)。如圖3-19所示。 當(dāng)上下檔鍵控制開關(guān)處于上檔當(dāng)上下檔鍵控制開關(guān)處于上檔時(shí),按鍵為上檔功能,當(dāng)此控制開關(guān)時(shí),按鍵為上檔功能,當(dāng)此控制開關(guān)處于下檔時(shí),按鍵為下檔功能。處于下檔時(shí),按鍵為下檔功能。 在編程時(shí),鍵盤掃描子程序應(yīng)不在編程時(shí),鍵盤掃描子程序應(yīng)不斷測試斷測試P1.7口線的電平狀態(tài),根據(jù)此口線的電平狀態(tài),根據(jù)此電平狀態(tài)的高低,賦予同一個(gè)鍵兩個(gè)電平狀態(tài)的高低,賦予同一個(gè)鍵兩個(gè)不同的鍵碼,從而由不同的鍵碼轉(zhuǎn)入不同的鍵碼,從而由不同的鍵碼轉(zhuǎn)
54、入不同的鍵功能子程序;或者同一個(gè)鍵不同的鍵功能子程序;或者同一個(gè)鍵只賦予一個(gè)鍵碼,但根據(jù)上只賦予一個(gè)鍵碼,但根據(jù)上/下檔標(biāo)志,下檔標(biāo)志,相應(yīng)轉(zhuǎn)入上相應(yīng)轉(zhuǎn)入上/下檔功能子程序。下檔功能子程序。3.4 鍵盤控制程序鍵盤控制程序2重鍵處理技術(shù) 當(dāng)發(fā)現(xiàn)有按鍵按下時(shí),可以用掃描法進(jìn)行按鍵定位,則所有的行(或列)均應(yīng)掃描一次,這時(shí)就可以確定按下的是單鍵或多鍵,同時(shí)確定出各按鍵的具體位置,然后可以采取相應(yīng)的措施: (1)如果是單鍵,則以此鍵為準(zhǔn),其后(指等待此鍵釋放的過程中)其他的任何按鍵均無效。 (2)如果是多鍵,則可以有3種處理方法,即: 可視此次按鍵操作無效(通常應(yīng)鳴響以示告警)。 可視多鍵都有效,按
55、掃描順序,將識別出的按鍵依次存入緩沖區(qū)中以待處理。 不斷對按鍵進(jìn)行定位處理,或者只令最先釋放的按鍵有效,或者只令最后釋放的按鍵有效。3.5 顯示程序設(shè)計(jì)顯示程序設(shè)計(jì)3.5.1 LED顯示器接口技術(shù)顯示器接口技術(shù)1LED數(shù)碼顯示器結(jié)構(gòu)與原理 LED數(shù)碼顯示器是由發(fā)光二極管組成的,如圖3-20所示。 圖3-20 LED數(shù)碼管的結(jié)構(gòu)及外形圖3.5 顯示程序設(shè)計(jì)顯示程序設(shè)計(jì) LED數(shù)碼顯示管中的dp顯示段用來顯示小數(shù)點(diǎn)。LED中每一段二極管與數(shù)據(jù)線的對應(yīng)關(guān)系如下:數(shù)據(jù)線:D7 D6D5D4D3D2D1D0LED段:dpgfedcba這樣,共陰極和共陽極LED數(shù)碼顯示器的字型碼如表3-1所示。 3.5
56、顯示程序設(shè)計(jì)顯示程序設(shè)計(jì)顯示字符共陰極接法共陽極接法顯示字符共陰極接法共陽極接法 03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82H31HCEH707HF8HY6EH91H87FH80HH76H89H96FH90HL38HC7HA77H88H“滅”00HFFHB7CH83H3.5 顯示程序設(shè)計(jì)顯示程序設(shè)計(jì)2LED數(shù)碼顯示器的顯示方式 圖3-21是4位共陰極LED顯示器的結(jié)構(gòu)原理圖。 從圖中可以看出,4位LED顯示器有4根位選線和84根段選線。則N位LED顯示器有N
57、根位選線和8N根段選線。 段選線控制顯示字符的字型,而位選線則控制顯示位的亮、暗。 根據(jù)位選線和段選線的連接方法不同,顯示方式也不同。LED顯示器有靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。3.5 顯示程序設(shè)計(jì)顯示程序設(shè)計(jì)(1)靜態(tài)顯示方式 所謂靜態(tài)顯示方式,是由單片機(jī)一次輸出顯示后,就能保持該顯示結(jié)果,直到下次送新的顯示字型碼為止。 優(yōu)點(diǎn):顯示器的亮度都較高,占用機(jī)時(shí)少,顯示可靠,編程容易,管理也簡單,因而在工業(yè)過程控制中得到了廣泛的應(yīng)用。 缺點(diǎn):使用元件多,且線路比較復(fù)雜,因而成本比較高。3.5 顯示程序設(shè)計(jì)顯示程序設(shè)計(jì) 假設(shè)8255A的控制口地址為7FFFH,PC、PB、PA三個(gè)口地址分別為7FFEH、7FFDH、7FFCH,實(shí)現(xiàn)PA口顯示“0”,PB口顯示“1”,PC口顯示“2”的程序如下:ORG2000HSDISP-1:MOV DPTR, #7FFFH;8255初始化MOV A, #80H MOVX DPTR, AMOV DPTR, #7FFCH;PA口顯示“0” MOV A, #3FHMOVX DPTR, AINC DPTR ;PB口顯示“1”MOV A, #06HMOVX DPTR, AINC DPTR ;PC口顯示“2”MOV A, #5BHMOVX DPTR, ARET3.5 顯示程序設(shè)計(jì)顯示程序設(shè)計(jì) 利用BCD-7段鎖存/譯碼/驅(qū)動(dòng)器來實(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- HC2210-生命科學(xué)試劑-MCE
- Dihydro-Isoferulic-Acid-d3-3-O-b-D-Glucuronide-生命科學(xué)試劑-MCE
- Biotin-PEG-SH-MW-3400-Biotin-PEG-Thiol-MW-3400-生命科學(xué)試劑-MCE
- 成都嘉祥面試題解析:職業(yè)發(fā)展與面試實(shí)戰(zhàn)
- 職業(yè)導(dǎo)航:廣饒中職面試題及答案職業(yè)選擇指導(dǎo)
- 高潛力候選人甄選秘籍:干部競爭面試題及答案職場指南
- 光通信基礎(chǔ)知識培訓(xùn)課件
- 物業(yè)綠化面試題解析實(shí)戰(zhàn)經(jīng)驗(yàn)分享
- 高級文庫編輯技能考察:閱讀短文面試題及實(shí)戰(zhàn)訓(xùn)練
- 競選類的發(fā)言稿
- 神經(jīng)刺激器行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 公司全員銷售管理辦法
- 丙酮出入庫管理制度
- 工貿(mào)行業(yè)重大事故隱患判定標(biāo)準(zhǔn)安全試題及答案
- 氧化蠟行業(yè)深度研究分析報(bào)告(2024-2030版)
- 2025年全國新高考I卷高考全國一卷真題語文試卷(真題+答案)
- 課程思政教學(xué)課件
- 2025至2030中國建筑防腐行業(yè)發(fā)展趨勢與前景分析報(bào)告
- 工業(yè)網(wǎng)絡(luò)技術(shù)(微課版)課件 項(xiàng)目7 ThingsBoard平臺應(yīng)用
- 供電所所長面試題及答案
- JG/T 328-2011建筑裝飾用石材蜂窩復(fù)合板
評論
0/150
提交評論