計(jì)算機(jī)控制技術(shù)第3章-常用應(yīng)用程序設(shè)計(jì)_第1頁(yè)
計(jì)算機(jī)控制技術(shù)第3章-常用應(yīng)用程序設(shè)計(jì)_第2頁(yè)
計(jì)算機(jī)控制技術(shù)第3章-常用應(yīng)用程序設(shè)計(jì)_第3頁(yè)
計(jì)算機(jī)控制技術(shù)第3章-常用應(yīng)用程序設(shè)計(jì)_第4頁(yè)
計(jì)算機(jī)控制技術(shù)第3章-常用應(yīng)用程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩115頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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ù)字濾波,就是在計(jì)算機(jī)中用某種計(jì)算方法對(duì)輸入的信號(hào)進(jìn)行數(shù)學(xué)處理,以便減少干擾在有用信號(hào)中的比重,提高信號(hào)的真實(shí)性。 這種濾波方法不需要增加硬件設(shè)備,只需根據(jù)預(yù)定的濾波算法編制相應(yīng)的程序即可達(dá)到信號(hào)濾波的目的。 數(shù)字濾波可以對(duì)各種干擾信號(hào),甚至極低頻率的信號(hào)進(jìn)行濾波。 數(shù)字濾波由于穩(wěn)定性高,濾波參數(shù)修改也方便,一種濾波子程序可以被各控制回路調(diào)用,因此得到廣泛的應(yīng)用。3.1 數(shù)字濾波3.1.1 程序判斷濾波 程序判斷濾波的方法,是根據(jù)生產(chǎn)經(jīng)驗(yàn),確定出兩次采樣輸入信

2、號(hào)可能出現(xiàn)的最大偏差y。若超過(guò)此偏差值,則表明該輸入信號(hào)是干擾信號(hào),應(yīng)該去掉;如小于此偏差值,可將信號(hào)作為本次采樣值。 當(dāng)采樣信號(hào)由于隨機(jī)干擾,如大功率用電設(shè)備的啟動(dòng)或停止,造成電流的尖峰干擾或誤檢測(cè),以及變送器不穩(wěn)定而引起的嚴(yán)重失真等,使得采樣數(shù)據(jù)偏離實(shí)際值太遠(yuǎn),可采用程序判斷濾波。 程序判斷濾波可分為兩種,即限幅濾波和限速濾波。3.1 數(shù)字濾波1限幅濾波當(dāng)| Y(n)-Y(n-1)|Y時(shí),則取Y(n)= Y(n),取本次采樣值當(dāng)| Y(n)-Y(n-1)|Y時(shí),則取Y(n)= Y(n-1),取上次采樣值 Y(n)第n次采樣值; Y(n-1)第n-1次采樣值; Y相鄰兩次采樣值所允許的最大偏

3、差,它的大小取決于采樣周期T及被測(cè)參數(shù)Y應(yīng)有的正常變化率。 一定要按照實(shí)際情況來(lái)確定Y,否則非但達(dá)不到濾波效果,反而會(huì)降低控制品質(zhì)。Y通??筛鶕?jù)經(jīng)驗(yàn)數(shù)據(jù)獲得,必要時(shí),也可由實(shí)驗(yàn)得出。 3.1 數(shù)字濾波程序流程圖如圖3-1所示。 3.1 數(shù)字濾波 設(shè)Y存放在LIMIT單元,兩次采樣值Y(n-1)、Y(n)存放在DATA1、DATA2中,濾波結(jié)果存放在DATA單元中,限幅濾波程序如下: PUSHPSW;保護(hù)現(xiàn)場(chǎng)PUSHA CLRC;進(jìn)位標(biāo)志位清零MOVDATA, DATA1MOVA, DATA2SUBBA, DATA;求Y(n)Y(n-1)JNCCOMPARE;如果Y(n)- Y(n-1)0,轉(zhuǎn)C

4、OMPARECPLA;如果Y(n)- Y(n-1)Y, DATA1DATAOVER:POPA;恢復(fù)現(xiàn)場(chǎng)POPPSWRET;返回LIMITEQU30HDATA1EQU31HDATA2EQU32HDATAEQU33H 限幅濾波能有效地克服因偶然因素引起的脈沖干擾,但無(wú)法抑制周期性的干擾且平滑度差。3.1 數(shù)字濾波2限速濾波 設(shè)順序采樣時(shí)刻tn-1、tn、tn+1所采集的參數(shù)分別為Y(n-1)、Y(n)、Y(n+1),那么3.1 數(shù)字濾波 限速濾波是一種折衷的方法,既照顧了采樣的實(shí)時(shí)性,又顧及了采樣值變化的連續(xù)性。 缺點(diǎn): 第一是Y的確定不夠靈活,必須根據(jù)現(xiàn)場(chǎng)的情況不斷更換新值; 第二是不能反映采樣

5、點(diǎn)數(shù)n3時(shí)各采樣數(shù)值受干擾情況。因此,它的應(yīng)用受到一定的限制。 在實(shí)際使用中,可用 取代Y,這樣也可基本保持限速濾波的特性,雖增加一步運(yùn)算,但靈活性大為提高。 3.1 數(shù)字濾波程序流程圖如圖3-2所示 3.1 數(shù)字濾波3.1.2 算術(shù)平均值濾波 算術(shù)平均值法濾波的實(shí)質(zhì)即把一個(gè)采樣周期內(nèi)對(duì)信號(hào)的n次采樣值進(jìn)行算術(shù)平均,作為本次的輸出 ,即 (3-3) n值決定了信號(hào)平滑度和靈敏度。隨著n的增大,平滑度提高,靈敏度降低。應(yīng)視具體情況選取n,以便得到滿意的濾波效果。為方便求平均值,n值一般取4、8、16之類的2的整數(shù)冪,以使用移位來(lái)代替除法。通常流量信號(hào)取12項(xiàng),壓力信號(hào)取6項(xiàng),溫度、成分等緩慢變化

6、的信號(hào)取2項(xiàng)甚至不平均。3.1 數(shù)字濾波 設(shè)8次采樣值依次存放在以DIGIT為首地址的連續(xù)單元中,求出平均值后,結(jié)果保留在SAMP單元中。計(jì)算的中間結(jié)果存放在FLAG和TEMP單元中,程序清單如下:PUSHPSW;現(xiàn)場(chǎng)保護(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;無(wú)進(jìn)位,轉(zhuǎn)NEXTINCFLAG;有進(jìn)位,進(jìn)位位加13.1 數(shù)字濾波NEXT:INCR0 ;數(shù)據(jù)指針加1DJNZR7, LOOP;未加完,繼續(xù)加MOVR7, #03H;設(shè)置

7、循環(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)場(chǎng)POPPSWRET3.1 數(shù)字濾波 算術(shù)平均值濾波主要用于對(duì)壓力、流量等周期脈動(dòng)的采樣值進(jìn)行平滑加工,但對(duì)偶然出現(xiàn)的脈沖性干擾的平滑作用尚不理想,因而它不適用于脈沖性干擾比較嚴(yán)重的場(chǎng)合。另外該濾波方法比較浪費(fèi)RAM。3.1 數(shù)字濾波3.1.3 加權(quán)平均值濾波加權(quán)平均值濾波法公式為(3-4) 其中,k0、k1、kn-1為加權(quán)系數(shù),體現(xiàn)了

8、各次采樣值在平均值中所占的比例,它們都為大于0的常數(shù)項(xiàng),且滿足(3-5) 一般采樣次數(shù)愈靠后,取的比例愈大,這樣可增加新的采樣值在平均值中的比例。這種濾波方法可以根據(jù)需要突出信號(hào)的某一部分,抑制信號(hào)的另一部分。適用于純滯后較大的被控對(duì)象。3.1 數(shù)字濾波3.1.4 中值濾波 所謂中值濾波是對(duì)某一參數(shù)連續(xù)采樣n次(一般n取奇數(shù)),然后把n次的采樣值從小到大或從大到小排隊(duì),再取中間值作為本次采樣值。 n 個(gè)數(shù)據(jù)按大小順序排隊(duì)的具體做法是兩兩進(jìn)行比較,設(shè)R1為存放數(shù)據(jù)區(qū)首地址,先將(R1)與(R1)+1)進(jìn)行比較,若是(R1)(R1)+1)則不交換存放位置,否則將兩數(shù)位置對(duì)調(diào)。繼而再取(R1)+1)

9、與(R1)+2)比較,判斷方法亦然,直到最大數(shù)沉底為止。然后再重新進(jìn)行比較,把次大值放到n-1位,如此做下去,則可將n個(gè)數(shù)從小到大順序排列。 3.1 數(shù)字濾波 設(shè)采樣值從8位A/D轉(zhuǎn)換器輸入5次,存放在SAMP為首地址的內(nèi)存單元中,其程序流程圖如圖3-3所示 。3.1 數(shù)字濾波程序清單如下 :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ù)字濾波MOV

10、 A, R1;(R1)(R1)+1)DECR1XCHA, R1INCR1MOVR1, ADONE: DJNZR5, LOOP;R50,小循環(huán)繼續(xù)進(jìn)行DJNZR4, SORT;R40,大循環(huán)繼續(xù)進(jìn)行INCR1MOVR1, ARET 中值濾波對(duì)于去掉由于偶然因素引起的波動(dòng)或采樣器不穩(wěn)定而造成的誤差所引起的脈動(dòng)干擾比較有效。若變量變化比較緩慢,采用中值濾波效果比較好,但對(duì)快速變化過(guò)程的參數(shù)(如流量),則不宜采用。一般n取35次。3.1 數(shù)字濾波3.1.5 去極值平均濾波 去極值平均值濾波的算法是:連續(xù)采樣n次,去掉一個(gè)最大值,再去掉一個(gè)最小值,求余下n-2個(gè)采樣值的平均值。程序的流程圖如圖3-4所示

11、。 為使平均濾波方便,n-2應(yīng)為2、4、8、16,故n常取4、6、10、18。3.1 數(shù)字濾波圖3-4 去極值平均濾波3.1 數(shù)字濾波3.1.6 滑動(dòng)平均濾波 滑動(dòng)平均濾波法把n個(gè)測(cè)量數(shù)據(jù)看成一個(gè)隊(duì)列,隊(duì)列的長(zhǎng)度固定為n,每進(jìn)行一次新的采樣,把測(cè)量結(jié)果放入隊(duì)尾,而去掉原來(lái)隊(duì)首的一個(gè)數(shù)據(jù),這樣在隊(duì)列中始終有n個(gè)“最新”的數(shù)據(jù)。然后把隊(duì)列中的n個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,就可獲得新的濾波結(jié)果。 滑動(dòng)平均值濾波對(duì)周期性干擾有良好的抑制作用,平滑度高,靈敏度低;但對(duì)偶然出現(xiàn)的脈沖性干擾的抑制作用差,不易消除由于脈沖干擾引起的采樣值的偏差,因此它不適用于脈沖干擾比較嚴(yán)重的場(chǎng)合,而適用于高頻振蕩系統(tǒng)。 通常對(duì)

12、流量信號(hào),n取12,壓力信號(hào)n取4,液面參數(shù)n取412,溫度信號(hào)n取14。3.1 數(shù)字濾波 假定n個(gè)雙字節(jié)型采樣值,40H單元為采樣隊(duì)列內(nèi)存單元首地址,n個(gè)采樣值之和不大于16位。新的采樣值存于3EH、3FH單元,濾波值存于60H、61H單元。FARFIL為算術(shù)平均濾波程序。程序清單為:MOVR2, N-1;采樣個(gè)數(shù)MOVR0, 42H;隊(duì)列單元首地址MOVR1, 43HLOOP:MOVA, R0;移動(dòng)低字節(jié)DECR0DECR0MOVR0, AMOVA, R0;修改低字節(jié)地址ADDA, 04HMOVR0, A3.1 數(shù)字濾波MOVA, R1;移動(dòng)高字節(jié)DECR1DECR1MOVR1, AMOV

13、A, R1;修改高字節(jié)地址ADDA, 04HMOVR1, ADJNZR2, LOOPMOVR0, 3EH;存新的采樣值MOVR1, 3FHACALLFARFIL;求算術(shù)平均值RET3.1 數(shù)字濾波3.1.7 低通數(shù)字濾波 對(duì)于變化過(guò)程比較緩慢的隨機(jī)變量采用短時(shí)間內(nèi)連續(xù)采樣,然后求平均值的方法進(jìn)行濾波,其效果往往不夠理想。為了提高濾波效果,可以仿照模擬系統(tǒng)RC低通濾波器的方法,將普通硬件RC低通濾波器的微分方程用差分方程來(lái)表示,便可以用軟件算法來(lái)模擬硬件濾波器的功能。 RC低通濾波器如圖3-5所示。圖3-5 RC低通濾波器3.1 數(shù)字濾波 由圖3-5可以寫出模擬低通濾波器的傳遞函數(shù)為(3-6)

14、其中, 為RC濾波器的時(shí)間常數(shù), 。 將式(3-6)離散后,可得:Y(n)=(1-)Y(n-1)+X(n) (3-7) 式中,X(n)本次采樣值; Y(n-1)上次的濾波輸出值; 濾波系數(shù),3.1 數(shù)字濾波 RC濾波器時(shí)間常數(shù),=RC; T采樣周期;Y(n)本次濾波的輸出值。 低通數(shù)字濾波適用于高頻和低頻的干擾信號(hào)。3.1 數(shù)字濾波3.1.8 復(fù)合濾波程序 為了進(jìn)一步提高濾波效果,改善控制精度,有時(shí)可以把兩種或兩種以上有不同濾波效果的數(shù)字濾波器組合起來(lái),形成復(fù)合數(shù)字濾波器,或稱多級(jí)數(shù)字濾波器。 例如:把中值濾波和算術(shù)平均值濾波結(jié)合起來(lái),就可以結(jié)合兩者的優(yōu)點(diǎn),既可以消除周期性的干擾信號(hào),又可對(duì)隨

15、機(jī)的脈沖干擾信號(hào)進(jìn)行濾波。濾波步驟為: 把n次采樣值按照從大到小或者從小到大的順序排列。 采用中值濾波,去掉最大值和最小值。 對(duì)其余的n-2個(gè)采樣值取算術(shù)平均值,作為濾波的輸出值。3.1 數(shù)字濾波 如果把n次采樣值已經(jīng)按照從小到大的順序排列了,并且依次為Y1、Y2、Yn,則濾波輸出值為 (3-8) 此外,也可以采用多重濾波的方法,把多個(gè)濾波器串聯(lián)起來(lái),前一個(gè)數(shù)字濾波器的輸出作為后一個(gè)數(shù)字濾波器的輸入。 比如:可以把兩個(gè)低通濾波器串聯(lián)起來(lái),形成雙重濾波,這樣濾波效果會(huì)更好些。其濾波算式可以采用迭代方法求出。 3.1 數(shù)字濾波由式(3-7)可知:第一級(jí)濾波輸出為 Y(n)=(1-)Y(n-1)+X

16、(n) (3-9) 第二級(jí)濾波輸出為 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)3.1 數(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),就得到兩級(jí)數(shù)字濾波算式Z(n)=2(1-)Z(n-1)-(1-)2Z(n-2)+2X(n) (3-14)3.2 標(biāo)度變換標(biāo)度變換: 在計(jì)算機(jī)控制系統(tǒng)中,生產(chǎn)中的各個(gè)參數(shù)都有著不

17、同的數(shù)值和量綱,所有這些參數(shù)都經(jīng)過(guò)變送器轉(zhuǎn)換成A/D轉(zhuǎn)換器所能接收的05V統(tǒng)一電壓信號(hào),又由AD轉(zhuǎn)換成00FFH(8位)的數(shù)字量。為進(jìn)一步顯示、記錄、打印以及報(bào)警等,必須把這些數(shù)字量轉(zhuǎn)換成不同的單位,以便操作人員對(duì)生產(chǎn)過(guò)程進(jìn)行監(jiān)視和管理。這就是所謂的標(biāo)度變換。3.2 標(biāo)度變換3.2.1 線性參數(shù)標(biāo)度變換 所謂線性參數(shù),指一次儀表測(cè)量值與A/D轉(zhuǎn)換結(jié)果具有線性關(guān)系,或者說(shuō)一次儀表是線性刻度的。 標(biāo)度變換公式為 (3-15) 式中, A0 一次測(cè)量?jī)x表的下限; Am 一次測(cè)量?jī)x表的上限; Ax 實(shí)際測(cè)量值(工程量); N0 儀表下限對(duì)應(yīng)的數(shù)字量; Nm 儀表上限對(duì)應(yīng)的數(shù)字量; Nx 測(cè)量值所對(duì)應(yīng)的

18、數(shù)字量。3.2 標(biāo)度變換 為使程序簡(jiǎn)單,一般把被測(cè)參數(shù)的起點(diǎn)A0(輸入信號(hào)為0)所對(duì)應(yīng)的A/D輸出值為0,即N0=0,這樣上式可化作(3-16) 比如:某熱處理爐溫度測(cè)量?jī)x表的量程為2001000,在某一時(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í)溫度為3.2 標(biāo)度變換 有時(shí),工程量的實(shí)際值還需經(jīng)過(guò)一次變換。如電壓測(cè)量值是電壓互感器的二次測(cè)的電壓,則其一次側(cè)的電壓還有一個(gè)互感器的變比問(wèn)題,這時(shí)上式應(yīng)再乘上一個(gè)比例系數(shù),即(3-17) 3

19、.2 標(biāo)度變換3.2.2 非線性參數(shù)標(biāo)度變換比如:在過(guò)程控制中,最常見的非線性關(guān)系是差壓變送器信號(hào)P與流量Q的關(guān)系(3-18) 式中,Q流量; K流量系數(shù),與流體的性質(zhì)及節(jié)流裝置的尺寸有關(guān);P節(jié)流裝置前后的差壓。3.2 標(biāo)度變換據(jù)此,可得測(cè)量流量時(shí)的標(biāo)度變換式為 整理得 (3-19) 3.2 標(biāo)度變換式中 Q0流量?jī)x表的下限值; Qm流量?jī)x表的上限值; Qx被測(cè)量的流量值; N0差壓變送器下限所對(duì)應(yīng)的數(shù)字量; Nm差壓變送器上限所對(duì)應(yīng)的數(shù)字量; Nx差壓變送器所測(cè)得的差壓值(數(shù)字量)。 對(duì)于流量測(cè)量?jī)x表,一般下限取0,此時(shí)Q0=0,N0=0,故上式變?yōu)椋?-20) 3.3 越限報(bào)警 在計(jì)算機(jī)控

20、制系統(tǒng)中,為了安全生產(chǎn),對(duì)于一些重要的參數(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)警,否則就作為采樣的正常值,以便進(jìn)行顯示和控制。 報(bào)警系統(tǒng)一般為聲光報(bào)警信號(hào),在某些系統(tǒng)中,需要增加功能,還帶有打印輸出,如記下報(bào)警的參數(shù)、時(shí)間等,并能自動(dòng)進(jìn)行處理,如自動(dòng)切換到手動(dòng),切斷閥門或自動(dòng)撥出電話號(hào)碼等。3.3 越限報(bào)警報(bào)警程序的設(shè)計(jì)方法主要有兩種: 一種是軟件報(bào)警。這種方法的基本作法是把被測(cè)參數(shù)如溫度、壓力、流量、速

21、度、成分等參數(shù),經(jīng)傳感器、變送器、AD轉(zhuǎn)換送入計(jì)算機(jī)后,再與規(guī)定的上、下限值進(jìn)行比較,根據(jù)比較的結(jié)果進(jìn)行報(bào)警或處理,整個(gè)過(guò)程都由軟件實(shí)現(xiàn)。 另一種是直接報(bào)警?;咀鞣ㄊ潜粶y(cè)參數(shù)與給定值的比較在傳感器中進(jìn)行,如果被測(cè)參數(shù)超過(guò)給定值,就會(huì)通過(guò)硬件向CPU提出中斷請(qǐng)求,CPU響應(yīng)中斷后,會(huì)產(chǎn)生報(bào)警信號(hào)。3.3 越限報(bào)警不論是軟件報(bào)警,還是直接報(bào)警,都需要經(jīng)過(guò)以下三個(gè)步驟: 對(duì)被測(cè)參數(shù)進(jìn)行采樣。 將采樣值與給定值的上、下限值進(jìn)行比較。 根據(jù)比較結(jié)果執(zhí)行相應(yīng)的報(bào)警處理程序。下面分別舉例介紹這兩種報(bào)警程序的設(shè)計(jì)。3.3 越限報(bào)警3.3.1 軟件報(bào)警程序設(shè)計(jì) 假設(shè)被測(cè)參數(shù)的采樣值為Ux,設(shè)定該參數(shù)的上、下限

22、值分別為Umax、Umin。要求若被測(cè)參數(shù)Ux Umax時(shí),則上限報(bào)警;若被測(cè)參數(shù)Ux Umax嗎ALARM1:CJNEA, 31H, BB;Ux Umax,轉(zhuǎn)AOUT1AJMPALARM1BB:JCAOUT2;Ux Umin,轉(zhuǎn)AOUT2AJMPDONEAOUT1:SETB00H;置Ux超上限報(bào)警標(biāo)志AJMPDONEAOUT2:SETB01H;置Ux越下限報(bào)警標(biāo)志AJMPDONE3.3 越限報(bào)警3.3.2 直接報(bào)警程序 這種報(bào)警方法的前提條件是被測(cè)參數(shù)與給定值的比較是在傳感器中進(jìn)行的。當(dāng)檢測(cè)值超過(guò)上限或低于下限時(shí),結(jié)點(diǎn)開關(guān)閉合,從而產(chǎn)生報(bào)警信號(hào)。這類報(bào)警系統(tǒng)的電路如圖3-8所示。3.3 越限

23、報(bào)警 在圖3-8中,SL1和SL2分別為被測(cè)參數(shù)的上、下限報(bào)警結(jié)點(diǎn)。當(dāng)被測(cè)參數(shù)處于正常范圍時(shí),P1.0和P1.1均為高電平,當(dāng)參數(shù)超過(guò)上限或低于下限時(shí),其中的一個(gè)結(jié)點(diǎn)就會(huì)閉合,這樣就會(huì)由高電平變?yōu)榈碗娖?,向CPU發(fā)出中斷請(qǐng)求。CPU響應(yīng)中斷后,讀入報(bào)警狀態(tài)P1.0和P1.1,然后從P1.4和P1.5輸出報(bào)警信號(hào),完成越限報(bào)警。 3.3 越限報(bào)警具體報(bào)警程序如下:ORG6000HAJMPMAIN;上電自動(dòng)轉(zhuǎn)向主程序ORG0003H;外部中斷方式0入口地址AJMPALARMORG0200HMAIN:SETBIT0;選擇邊沿觸發(fā)方式SETBEX0;允許外部中斷0SETBEA;CPU允許中斷HERE:

24、SJMPHERE;模擬主程序ORG0220HALARM:MOVA, #0FFH;設(shè)P1口為輸入口MOVP1, AMOVA, P1;取報(bào)警狀態(tài)SWAPA;ACC.7ACC.4與ACC.3ACC.0交換MOVP1, A;輸出報(bào)警信號(hào)RETI3.3 越限報(bào)警 在實(shí)際的控制系統(tǒng)中,往往為了避免測(cè)量值在極限值附近擺動(dòng)造成頻繁報(bào)警,可以在上、下限附近設(shè)定一個(gè)回差帶,如圖3-9所示。 圖3-9 上、下限設(shè)置回差帶3.3 越限報(bào)警 H是上限帶,L是下限帶。規(guī)定只有當(dāng)被測(cè)量值越過(guò)A點(diǎn)時(shí),才認(rèn)為越過(guò)上限,測(cè)量值穿越H帶區(qū),下降到B點(diǎn)以下才認(rèn)為是復(fù)限。同樣道理,測(cè)量值在L帶區(qū)內(nèi)擺動(dòng)均不做超越下限處理,只有它回到D點(diǎn)

25、之上時(shí),才作越下限后復(fù)位處理。這樣就避免了頻繁的報(bào)警和復(fù)限。具體上、下限帶寬的選擇應(yīng)根據(jù)被測(cè)參數(shù)的具體情況來(lái)決定。 3.4 鍵盤控制程序3.4.1 鍵盤的組成、特點(diǎn)及消除抖動(dòng)的措施1鍵盤的組成及特點(diǎn) 一個(gè)按鍵電路如圖3-10所示。當(dāng)按鍵未按下時(shí),VA=1,為高電平;當(dāng)按鍵S按下時(shí),VA=0,為低電平。因此,可以通過(guò)高、低電平的檢測(cè),便可確定按鍵是否被按下。 圖3-10 按鍵電路3.4 鍵盤控制程序 由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合或斷開時(shí)不會(huì)馬上穩(wěn)定下來(lái),會(huì)有瞬間的抖動(dòng),具體波形如圖3-11所示。 圖3-11 按鍵抖動(dòng)波形3.4 鍵盤控制程序2消除按鍵抖動(dòng)的措施 消除按鍵抖動(dòng)的措施有

26、兩種:硬件方法和軟件方法。(1)硬件方法 采用RC濾波消抖電路或RS雙穩(wěn)態(tài)消抖電路,如圖3-12所示。3.4 鍵盤控制程序(2)軟件方法 當(dāng)按鍵數(shù)量較多時(shí),硬件消抖將無(wú)法勝任。在這種情況下,可以采用軟件的方法進(jìn)行消抖。在第一次檢測(cè)到有按鍵閉合時(shí),首先執(zhí)行一段延時(shí)10ms的子程序,然后再確認(rèn)該按鍵電平是否仍保持閉合狀態(tài)電平,如果保持閉合狀態(tài)電平則確認(rèn)為真正有按鍵按下,從而消除了抖動(dòng)的影響。3.4 鍵盤控制程序3.4.2 獨(dú)立式按鍵接口技術(shù) 所謂獨(dú)立式按鍵就是每個(gè)按鍵各接一根輸入線,各個(gè)按鍵的工作狀態(tài)互不影響。因此,通過(guò)檢測(cè)輸入線的電平狀態(tài)可以很容易判斷哪個(gè)按鍵被按下了。 如圖3-13所示為利用8

27、255A可編程并行接口擴(kuò)展的獨(dú)立式按鍵電路。當(dāng)某一按鍵未被按下時(shí),對(duì)應(yīng)位應(yīng)為1,當(dāng)按鍵按下時(shí),對(duì)應(yīng)位應(yīng)為0,因此,用位檢測(cè)可以識(shí)別按鍵的工作狀態(tài)。3.4 鍵盤控制程序圖3-13 利用8255A可編程并行接口擴(kuò)展的獨(dú)立式按鍵3.4 鍵盤控制程序 由圖3-13可知8255A的口地址為:PA口地址為7FFCH、PB口地址為7FFDH、PC口地址為7FFEH、控制口地址為7FFFH。查詢方式編程如下:ORG3000HMOVDPTR, #7FFFH;8255A初始化MOVA, #90HMOVXDPTR, AKBSPR:ACALLKEY;讀鍵的狀態(tài)JZDONE;若無(wú)按鍵閉合,轉(zhuǎn)DONEACALLDL10m

28、S;若有鍵按下,延時(shí)10mS以防抖動(dòng)ACALLKEY;重讀鍵的狀態(tài)JZDONE;若無(wú)按鍵閉合,轉(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, #7FFCH;判斷有無(wú)按鍵閉合MOVXA, DPTRCPLA;若(A)=0,則無(wú)按鍵閉合RET3.4 鍵盤控制程序DL10mS:MOVR5, #

29、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ù)1矩陣式鍵盤工作原理 矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點(diǎn)上,行、列線分別連接到按鍵開關(guān)的兩端。行線通過(guò)上拉電阻接到5V上,如圖3-15所示 圖3-15 矩陣式鍵盤結(jié)構(gòu)3.4 鍵盤控制程序 如圖3-15所示,行線通過(guò)上拉電阻接到5V上,平時(shí)無(wú)按鍵動(dòng)作時(shí),行線處于高電平狀態(tài),而當(dāng)有按鍵按下時(shí),行線電平狀態(tài)

30、將由與此行線相連的列線電平?jīng)Q定。列線電平如果為低,則行線電平為低;列線電平如果為高,則行線電平亦為高。這一點(diǎn)是識(shí)別矩陣鍵盤按鍵是否被按下的關(guān)鍵所在。 3.4 鍵盤控制程序2按鍵的識(shí)別方法 目前常用的方法有兩種:一種是用硬件電路來(lái)識(shí)別,稱為編碼鍵盤;另一種是利用軟件方法來(lái)識(shí)別,稱為非編碼鍵盤。 在編碼鍵盤中設(shè)有硬件檢測(cè)電路,以確定哪一個(gè)按鍵閉合,并產(chǎn)生該鍵的代碼,非編碼鍵盤則是依靠外部的硬件電路和軟件來(lái)判別哪一個(gè)按鍵閉合。 常用的非編碼鍵盤的按鍵識(shí)別方法有兩種,一種是掃描法,另一種是線反轉(zhuǎn)法。3.4 鍵盤控制程序(1)掃描法 矩陣鍵盤按鍵的識(shí)別方法,此方法分兩步進(jìn)行:第一步,識(shí)別鍵盤有無(wú)鍵被按下

31、;第二步,如果有鍵被按下,識(shí)別出具體的按鍵。 識(shí)別鍵盤有無(wú)鍵被按下的方法是:讓所有列線均置為0電平,檢查各行線電平是否有變化,如果有變化,則說(shuō)明有鍵被按下,如果沒有變化,則說(shuō)明無(wú)鍵被按下。(實(shí)際編程時(shí)應(yīng)考慮按鍵抖動(dòng)的影響,通??偸遣捎密浖訒r(shí)的方法進(jìn)行消抖處理。) 識(shí)別具體按鍵的方法是(亦稱之為掃描法):逐列置零電平,其余各列置為高電平,檢查各行線電平的變化,如果某行電平由高電平變?yōu)榱汶娖?,則可確定此行此列交叉點(diǎn)處的按鍵被按下。3.4 鍵盤控制程序(2)線反轉(zhuǎn)法線反轉(zhuǎn)法只須經(jīng)過(guò)兩步便能獲得此按鍵所在的行與列的值。 第一步:將行線編程為輸入線,列線編程為輸出線,并使輸出線輸出為全零電平,則行線中

32、電平由高到低所在行為按鍵所在行。 第二步:同第一步完全相反,將行線編程為輸出線,列線編程為輸入線,并使輸出線輸出為全零電平,則列線中電平由高到低所在列為按鍵所在列。 綜合一、二兩步的結(jié)果,可確定按鍵所在行和列,從而識(shí)別出所按的鍵。3.4 鍵盤控制程序線反轉(zhuǎn)法的原理如圖3-16所示。 圖3-16 線反轉(zhuǎn)法原理圖3.4 鍵盤控制程序 假設(shè)7號(hào)鍵被按下,那么: 第一步即在P1.0P1. 3輸出全為0,然后,讀入P1. 4P1.7位的狀態(tài),結(jié)果P1.5=0,而P1.4、P1.6和P1.7均為1,因此,第1行出現(xiàn)電平的變化,說(shuō)明第1行有鍵按下; 第二步讓P1.4P1.7輸出全為0,然后,讀入P1.0P1

33、.3位,結(jié)果P1.0=0,而P1.1、P1.2和P1.3均為1,因此第3列出現(xiàn)電平的變化,說(shuō)明第3列有鍵按下。 綜合一、二兩步,即第1行第3列按鍵被按下,此按鍵即是7號(hào)鍵。3.4 鍵盤控制程序3鍵盤工作方式 鍵盤工作方式有3種,即:編程掃描、定時(shí)掃描和中斷掃描。(1)編程掃描法 所謂編程掃描就是CPU對(duì)鍵盤的掃描采取程序控制方式,一旦進(jìn)入鍵掃描狀態(tài),則反復(fù)地掃描鍵盤,等待用戶從鍵盤上輸入命令或數(shù)據(jù)。而在執(zhí)行鍵入命令或處理鍵入數(shù)據(jù)過(guò)程中,CPU將不再響應(yīng)鍵入要求,直到CPU返回重新掃描鍵盤為止。3.4 鍵盤控制程序(2)定時(shí)掃描法 定時(shí)掃描工作方式就是CPU每隔一定的時(shí)間(例如10ms)對(duì)鍵盤掃

34、描一遍。當(dāng)發(fā)現(xiàn)有鍵按下時(shí),便進(jìn)行讀入鍵盤操作,以求出鍵值,并分別進(jìn)行處理。定時(shí)時(shí)間間隔由單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器來(lái)完成,這樣可以減少計(jì)算機(jī)掃描鍵盤的時(shí)間,以減少CPU的開銷。具體做法是,當(dāng)定時(shí)時(shí)間到,定時(shí)器便自動(dòng)輸出一脈沖信號(hào),使CPU轉(zhuǎn)去執(zhí)行掃描程序。(3)中斷掃描法 當(dāng)沒有鍵入操作時(shí),CPU不對(duì)鍵盤進(jìn)行掃描,以節(jié)省出大量的時(shí)間對(duì)系統(tǒng)進(jìn)行監(jiān)控和數(shù)據(jù)處理。一旦鍵盤有輸入,則向CPU申請(qǐng)中斷。CPU響應(yīng)中斷后,即轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序,對(duì)鍵盤進(jìn)行掃描,以便判別鍵盤上閉合鍵的鍵號(hào),并做出相應(yīng)的處理。3.4 鍵盤控制程序 綜上所述,對(duì)鍵盤所做的工作分為三個(gè)層次: 第1層:監(jiān)視鍵盤的輸入。體現(xiàn)在鍵盤的

35、工作方式上就是: 編程掃描工作方式; 定時(shí)掃描工作方式; 中斷掃描工作方式。 第2層:確定具體按鍵。體現(xiàn)在按鍵的識(shí)別方法上就是: 掃描法; 線反轉(zhuǎn)法。 第3層:鍵功能程序執(zhí)行。3.4 鍵盤控制程序4鍵盤接口及編程方法 圖3-17為一個(gè)48矩陣鍵盤通過(guò)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。 鍵盤掃描子程

36、序完成如下4個(gè)功能。(1)判斷鍵盤上有無(wú)鍵閉合。(2)消除按鍵機(jī)械抖動(dòng)(3)判別閉合鍵的鍵號(hào)(4)使CPU對(duì)鍵的一次閉合僅作一次處理3.4 鍵盤控制程序鍵輸入子程序的框圖如圖3-18所示。3.4 鍵盤控制程序 下面為鍵輸入程序的清單,從該程序返回后輸入鍵的鍵號(hào)在BUFF單元中。ORG5000HPROG: MOV DPTR, #7FFFH ;8255A初始化 MOV A, #89H ;89H=10001001MOVX DPTR, AKEY1:ACALL KS1 ;判斷有無(wú)鍵閉合JNZ LK1 ;(A)0,說(shuō)明有鍵閉合AJMP KEY1 ;(A)=0,說(shuō)明無(wú)鍵閉合LK1:ACALL DL10ms

37、;延時(shí)10ms(消抖)ACALL KS1 ;再次判斷有無(wú)鍵閉合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 MOVXDPTR, AINC DPTRINC DPTRMOVX A, DPTR ;讀8255PC口JB ACC.0, LONE ; ACC.0=1,說(shuō)明0行無(wú)鍵閉合,轉(zhuǎn) 判第1行MOV A, #00H ;0行有鍵閉合,首鍵號(hào)0A AJMP LKPLONE:JBA

38、CC.1, LTWOMOV A, #08H ;1行有鍵閉合,首鍵號(hào)8AAJMP LKP3.4 鍵盤控制程序LTWO:JB ACC.2, LTHRMOV A, #10H;2行有鍵閉合,首鍵號(hào)16AAJMP LKPLTHR:JB ACC.3, NEXT ;轉(zhuǎn)判下一列MOV A, #18H;3行有鍵閉合,首鍵號(hào)24ALKP:ADD A, R4 ;鍵號(hào)=列號(hào)+行首鍵號(hào)PUSH ALK3: ACALL KS1 ;判斷鍵是否釋放JNZ LK3 ;直到A=0,鍵釋放POP A MOV BUFF, A ;存鍵值(如:以備顯示) AJMPKNDNEXT:INC R4 ;列計(jì)數(shù)器加1MOV A,R2 ;判斷是否掃

39、描到最后一列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,說(shuō)明鍵沒閉合)RETDL10ms: MOV R5, #14HDL:MOV R6, #0FFH DL0:DJNZ R6, DL0DJNZ R5, DLRET3.4 鍵盤控制程序3.4.4 雙功能鍵的設(shè)計(jì)及重鍵處

40、理技術(shù)1雙功能鍵的設(shè)計(jì) 解決的辦法是設(shè)置上/下檔開關(guān)來(lái)實(shí)現(xiàn)。如圖3-19所示。3.4 鍵盤控制程序 當(dāng)上下檔鍵控制開關(guān)處于上檔時(shí),按鍵為上檔功能,當(dāng)此控制開關(guān)處于下檔時(shí),按鍵為下檔功能。 在編程時(shí),鍵盤掃描子程序應(yīng)不斷測(cè)試P1.7口線的電平狀態(tài),根據(jù)此電平狀態(tài)的高低,賦予同一個(gè)鍵兩個(gè)不同的鍵碼,從而由不同的鍵碼轉(zhuǎn)入不同的鍵功能子程序;或者同一個(gè)鍵只賦予一個(gè)鍵碼,但根據(jù)上/下檔標(biāo)志,相應(yīng)轉(zhuǎn)入上/下檔功能子程序。3.4 鍵盤控制程序2重鍵處理技術(shù) 當(dāng)發(fā)現(xiàn)有按鍵按下時(shí),可以用掃描法進(jìn)行按鍵定位,則所有的行(或列)均應(yīng)掃描一次,這時(shí)就可以確定按下的是單鍵或多鍵,同時(shí)確定出各按鍵的具體位置,然后可以采取

41、相應(yīng)的措施: (1)如果是單鍵,則以此鍵為準(zhǔn),其后(指等待此鍵釋放的過(guò)程中)其他的任何按鍵均無(wú)效。 (2)如果是多鍵,則可以有3種處理方法,即: 可視此次按鍵操作無(wú)效(通常應(yīng)鳴響以示告警)。 可視多鍵都有效,按掃描順序,將識(shí)別出的按鍵依次存入緩沖區(qū)中以待處理。 不斷對(duì)按鍵進(jìn)行定位處理,或者只令最先釋放的按鍵有效,或者只令最后釋放的按鍵有效。3.5 顯示程序設(shè)計(jì)3.5.1 LED顯示器接口技術(shù)1LED數(shù)碼顯示器結(jié)構(gòu)與原理 LED數(shù)碼顯示器是由發(fā)光二極管組成的,如圖3-20所示。 圖3-20 LED數(shù)碼管的結(jié)構(gòu)及外形圖3.5 顯示程序設(shè)計(jì) LED數(shù)碼顯示管中的dp顯示段用來(lái)顯示小數(shù)點(diǎn)。LED中每一

42、段二極管與數(shù)據(jù)線的對(duì)應(yīng)關(guān)系如下:數(shù)據(jù)線:D7D6D5D4D3D2D1D0LED段:dpgfedcba這樣,共陰極和共陽(yáng)極LED數(shù)碼顯示器的字型碼如表3-1所示。 3.5 顯示程序設(shè)計(jì)顯示字符共陰極接法共陽(yáng)極接法顯示字符共陰極接法共陽(yáng)極接法 03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82H31HCEH707HF8HY6EH91H87FH80HH76H89H96FH90HL38HC7HA77H88H“滅”00HFFHB7CH83H3.5 顯示程序設(shè)計(jì)2LED數(shù)碼顯示

43、器的顯示方式 圖3-21是4位共陰極LED顯示器的結(jié)構(gòu)原理圖。3.5 顯示程序設(shè)計(jì) 從圖中可以看出,4位LED顯示器有4根位選線和84根段選線。則N位LED顯示器有N根位選線和8N根段選線。 段選線控制顯示字符的字型,而位選線則控制顯示位的亮、暗。 根據(jù)位選線和段選線的連接方法不同,顯示方式也不同。LED顯示器有靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。3.5 顯示程序設(shè)計(jì)(1)靜態(tài)顯示方式 所謂靜態(tài)顯示方式,是由單片機(jī)一次輸出顯示后,就能保持該顯示結(jié)果,直到下次送新的顯示字型碼為止。 LED工作于靜態(tài)顯示方式時(shí),各位的共陰極(或共陽(yáng)極)連接在一起并接地(或接+5V);每位的段選線分別與一個(gè)8位的鎖存輸

44、出相連。靜態(tài)顯示方式中,在同一時(shí)間里,每一位顯示的字符可以各不相同。 優(yōu)點(diǎn):顯示器的亮度都較高,占用機(jī)時(shí)少,顯示可靠,編程容易,管理也簡(jiǎn)單,因而在工業(yè)過(guò)程控制中得到了廣泛的應(yīng)用。 缺點(diǎn):使用元件多,且線路比較復(fù)雜,因而成本比較高。3.5 顯示程序設(shè)計(jì) 圖3-22給出了用8255A的三個(gè)口控制三位LED數(shù)碼顯示器的接口電路 。3.5 顯示程序設(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初

45、始化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ì) 利用BCD-7段鎖存/譯碼/驅(qū)動(dòng)器來(lái)實(shí)現(xiàn)靜態(tài)顯示,如圖3-23所示。 3.5 顯示程序設(shè)計(jì) 其中MC14513為BCD-7段鎖存/譯碼/驅(qū)動(dòng)器,A、B、C、D為BCD碼輸入端,RBI為高位零消隱輸入端,RBO為高位零消隱輸出端,LE為鎖存允許端,為高電平時(shí),

46、鎖存輸入的BCD碼。 此三位靜態(tài)顯示器能顯示0999之間的任何數(shù)。使該顯示器顯示456的程序如下:3.5 顯示程序設(shè)計(jì)ORG3F00HDISP-2:MOVA, #04H;數(shù)4送AMOVP1, A;寫入P1口SETBP1.4;鎖存入MC14513(1)中,百位顯示4MOVA, #05H;數(shù)5送AMOVP1, A;寫入P1口SETBP1.5;鎖存入MC14513(2)中,十位顯示5MOVA, #06H;數(shù)6送AMOVP1, A;寫入P1口SETBP1.6;鎖存入MC14513(3)中,個(gè)位顯示6CLRP1RET3.5 顯示程序設(shè)計(jì)(2)動(dòng)態(tài)顯示方式 所謂動(dòng)態(tài)顯示,就是單片機(jī)定時(shí)地對(duì)顯示器件掃描,在

47、這種方法中,顯示器件分時(shí)工作,每次只能有一個(gè)器件顯示,而其他各位熄滅,但由于人眼有視覺暫留現(xiàn)象,只要每位顯示間隔足夠短,則可造成多位同時(shí)亮的假象,達(dá)到顯示的目的。 優(yōu)點(diǎn):使用硬件少,因而價(jià)格低。 缺點(diǎn):占用機(jī)時(shí)長(zhǎng),只要單片機(jī)不執(zhí)行顯示程序,就立刻停止顯示。由此可見,這種顯示方式將使計(jì)算機(jī)的開銷增大。故在以工程控制為主的控制系統(tǒng)中應(yīng)用較少。3.5 顯示程序設(shè)計(jì) 圖3-24所示為利用8255A擴(kuò)展的4位LED動(dòng)態(tài)顯示器接口電路。 圖3-24 4位LED動(dòng)態(tài)顯示器接口電路3.5 顯示程序設(shè)計(jì) 假設(shè)8255A的口地址分別為:PA口地址為7FFCH、PB口地址為7FFDH、PC口地址為7FFEH、控制口

48、地址為7FFFH。 現(xiàn)在80C51的RAM存儲(chǔ)器中設(shè)置4個(gè)顯示緩沖單元77H7AH,分別存放4位顯示器的顯示數(shù)據(jù),則動(dòng)態(tài)顯示程序如下:ORG3000HMOV DPTR, #7FFFH ;8255初始化MOV A, #80H;PA、PB口均為方式0輸出MOVX DPTR, ADIR: MOV R0, #77H ;置緩沖器指針初值MOV R3, #08H ;置掃描模式初值,位選碼指向 最左邊一位MOV A, R33.5 顯示程序設(shè)計(jì)LD0:MOV DPTR, #7FFCH ;模式送到8255的PA口MOVX DPTR, AMOV A, R0 ;取顯示數(shù)據(jù)MOV DPTR, DSEG;獲得要顯示數(shù)據(jù)

49、的代碼MOVC A, A+DPTRMOV DPTR, #7FFDH;把顯示數(shù)據(jù)代碼送到PB口MOVX DPTR, AACALL DL1;延時(shí)1msJB ACC.0, LD1 ;判斷是否顯示到第4位INC R0 ;指向下一個(gè)緩沖區(qū)MOV A, R3RR A ;將A的內(nèi)容左移一位,顯示下 一位MOV R3, AAJMP LD03.5 顯示程序設(shè)計(jì)LD1: RETDSEG:DB 3FH, 06H, 5BH, 4FH, 66H, 6DH;段數(shù)據(jù)表DSEG1:DB 7DH, 07H, 7FH, 6FH, 77H, 7CHDSEG2:DB 39H, 5EH, 79H, 71H, 73H, 3EHDSEG3

50、:DB 31H, 6EH, 1CH, 23H, 40H, 03HDSEG4:DB 18H, 00HDL1:MOV R7, #02H;延時(shí)子程序DL:MOV R6, #0FFHDL6:DJNZ R6, DL6DJNZ R7, DLRET3.5 顯示程序設(shè)計(jì) 圖3-25為采用BCD-7段譯碼驅(qū)動(dòng)器MC14558構(gòu)成的8位動(dòng)態(tài)LED顯示器。 3.5 顯示程序設(shè)計(jì) 圖中MC14558為BCD-7段譯碼驅(qū)動(dòng)器,其中,A、B、C、D為BCD碼輸入端,a、b、c、d、e、f、g為顯示器段輸出端。P1.0P1.3輸出段數(shù)據(jù)的BCD碼,經(jīng)MC14558譯碼出的字型碼由a、b、c、d、e、f、g輸出到七段LED顯

51、示器中,P1.4P1.6經(jīng)74LS138譯碼器得到8根位選線分別連接LED的接地端,以控制各位的選通。P1.7與74LS138的S1端相連,當(dāng)P1.7=1時(shí),8位顯示器顯示,當(dāng)P1.7=0時(shí),8位顯示器熄滅。如果要顯示小數(shù)點(diǎn),可再增加一根口線與LED的dp相連。3.5 顯示程序設(shè)計(jì)(3)軟件、硬件譯碼顯示器接口 隨著集成電路的發(fā)展,現(xiàn)在已經(jīng)生產(chǎn)出鎖存/譯碼/驅(qū)動(dòng)器為一體,并能同時(shí)供多位LED顯示的芯片。比如:INTEL SIL公司生產(chǎn)的CMOS 8位的可驅(qū)動(dòng)共陽(yáng)極LED的驅(qū)動(dòng)器ICM7218A,內(nèi)設(shè)兩種7段譯碼器(十六進(jìn)制譯碼器及BCD碼譯碼器)及8字節(jié)靜態(tài)RAM(可存放顯示數(shù)據(jù)),能在多位掃

52、描電路的控制下實(shí)現(xiàn)8位LED顯示。ICM7218A的引腳排列如圖3-26所示。3.5 顯示程序設(shè)計(jì)圖3-26 ICM7218A的引腳排列3.5 顯示程序設(shè)計(jì)各引腳功能如下。 adp:8段驅(qū)動(dòng)器。 D1D8:8位驅(qū)動(dòng)器。 :低電平有效,將輸入數(shù)據(jù)寫入RAM中。 MODE:低電平時(shí),輸入數(shù)據(jù)。高電平時(shí),輸入控制字。 ID7為數(shù)據(jù)傳送標(biāo)志位。ID7=1時(shí),表明后面輸入數(shù)據(jù);ID7=0時(shí),表明后面不輸入數(shù)據(jù)。 ID6為譯碼方式標(biāo)志位。ID6=1時(shí),進(jìn)行十六進(jìn)制譯碼;ID6=0時(shí),進(jìn)行BCD譯碼。3.5 顯示程序設(shè)計(jì)ID5為硬件和軟件譯碼選擇端。ID5=0時(shí),由ICM7218A內(nèi)部完成硬件譯碼;ID5=

53、1時(shí),由軟件完成譯碼,輸入的8位數(shù)據(jù)直接控制8個(gè)段的顯示,格式如下: ID7ID6ID5ID4ID3ID2ID1ID0 a b c e g f d某位置1,則相應(yīng)此位的段被點(diǎn)亮,但dp不同,當(dāng)此位置置0時(shí),小數(shù)點(diǎn)被點(diǎn)亮。ID4為為關(guān)閉信號(hào)。ID4=0時(shí),關(guān)閉晶振、譯碼和顯示;ID4=1時(shí),正常工作。3.5 顯示程序設(shè)計(jì) 上述ID4ID6是在MODE為高電平時(shí)的功能,即控制字所實(shí)現(xiàn)的功能,此時(shí)ID3ID0無(wú)效。如果進(jìn)行硬件譯碼且MODE為低電平時(shí),ID7ID4為無(wú)效,而ID3ID0為十六進(jìn)制或BCD碼輸入值,相應(yīng)的譯碼真值表如表3-2所示。ID0ID3二進(jìn)制0000000100100011010

54、001010110011110001001101010111100110111101111BCD碼0123456789-EHLP“滅”十六進(jìn)制碼0113456789ABCDEF3.5 顯示程序設(shè)計(jì)圖3-27所示為用ICM7218A構(gòu)成的顯示電路。 3.5 顯示程序設(shè)計(jì) 如果想顯示數(shù)字“97843210”,可用軟件譯碼和硬件譯碼的方法得到。 軟件譯碼。 先找出各字符的編碼。根據(jù)a、b、c、d、e、f、g、dp各段與數(shù)據(jù)位的對(duì)應(yīng)關(guān)系,可得97843210的各位編碼分別為:F7H、F0H、FFH、B6H、F5H、EDH、B0H、FBH,并且存入80C51內(nèi)部RAM的60H67H單元中。設(shè)顯示器最左邊

55、一位為第一位,R0為顯示數(shù)據(jù)單元地址,起始單元為60H,R2為顯示的位數(shù),則程序如下:3.5 顯示程序設(shè)計(jì)DISSOFT:SETBP1.7;置MODE高電平,準(zhǔn)備寫控制字MOVA, #0B0H;控制字為B0HMOVDPTR, #0200H;設(shè)置ICM7218A的工作地址MOVXDPTR, A;輸出控制字CLRP1.7;置MODE為低電平,準(zhǔn)備寫數(shù)據(jù)ACALLDISPLAY8;顯示8位數(shù)據(jù)RETDISPLAY8:MOVR0, #60H;顯示數(shù)據(jù)首地址MOVR2, #08H;共顯示8位MOVDPTR, #0200HAGAIN:MOVA, R0;取出顯示數(shù)據(jù)MOVXDPTR, A;輸出數(shù)據(jù)INCR0;指向下一位DJNZR2, AGAIN;8位未顯示完,繼續(xù)RET3.5 顯示程序設(shè)計(jì) 硬件譯碼。 采用硬件譯碼的數(shù)據(jù)格式為ID3ID2ID1ID0 高3位無(wú)效,現(xiàn)取000, 不顯示取為1,ID3ID0為4位編碼,具體編碼情況參見表3-2。 那么要顯示數(shù)字“97

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論