凱氏定氮儀的軟件設(shè)計(jì)詳解
專家為您講解一下凱氏定氮儀的軟件設(shè)計(jì)詳解,系統(tǒng)軟件采用MCS—51匯編語言編程,并采用了模塊化結(jié)構(gòu), 整個(gè)程序由主程序、四個(gè)中斷服務(wù)程度及若干個(gè)子程序模塊構(gòu)成,約SK 字節(jié)。中斷服務(wù)程序?yàn)闇囟戎袛喑绦、手功操作中斷、顯示中斷子程序、溢流中斷程序。子程序有鍵掃、鍵處理、模數(shù)轉(zhuǎn)換、步進(jìn)電機(jī)控制、計(jì)算及打印等子程序。主程序的流程圖給出。在系統(tǒng)軟件編制過程中還注重解決以下幾個(gè)問題:
(1)在程序初始化時(shí)有一段上電打印操作, 這個(gè)操作是不能人為選擇的。那么, 在打印機(jī)沒有出現(xiàn)故障時(shí), 程序可正常運(yùn)行下去;若打印機(jī)出現(xiàn)故障, 則程序就不能繼續(xù)進(jìn)行下去, 等待給打印機(jī)送完數(shù)據(jù), 故出現(xiàn)死機(jī)現(xiàn)象。而采用了軟件“ 程序運(yùn)行監(jiān)視系統(tǒng)” 即國外稱之為WATCHDOG系統(tǒng)就可解決這一問題。具體做法是在執(zhí)行上電打印操作前, 將T : 設(shè)置為定時(shí)器, 并通過其中斷服務(wù)程序的操作, 使跑飛的主程序在83 秒后返回來, 繼續(xù)往下執(zhí)行。若上電打印順利完成(約60 秒左右) , 則修改T , , 將其歸還給其他中斷使用。這段程序如下:
注釋:設(shè)置T l 為16 位定時(shí)器。設(shè)置中斷級(jí)別。置上電打印標(biāo)志。設(shè)置循壞次數(shù)。開T ; 中斷。調(diào)上電打印子程序。調(diào)修改T , 子程序。關(guān)下中斷,判是否為上電打印狀態(tài)。跳其他中斷程序。彈出舊地址。中斷返回。開下中斷。由上述兩段程序看出, 當(dāng)主程序跑飛后最多至83 秒左右, 將被拉回到地址為OFBBH處繼續(xù)執(zhí)行。
(2)在凱氏定氮儀鍵盤掃描子程序中設(shè)計(jì)了防止鍵抖動(dòng)、連擊鍵和重鍵等功能。其程序流程圖如法、中值濾波法和算術(shù)平均濾波等。
在本軟件系統(tǒng)中的采樣子程序中采用了去極值平均濾波法。這是由于算術(shù)平均濾波不能將明顯的脈沖干擾消除, 只是將其影響消弱。因明顯干擾使采樣值遠(yuǎn)離真實(shí)值, 故可比較容易地將其剔除, 不參加平均值計(jì)算, 從而使平均濾波的輸出值更接近真實(shí)值。算法原理如下: 連續(xù)采樣n 次, 將其累加求和, 同時(shí)找出其中的最大值與最小值, 再從累加和中減去最小值, 按n—2個(gè)采樣值平均, 即得有效采樣值。
(4)對(duì)于設(shè)計(jì)控制步進(jìn)電機(jī)運(yùn)行的程序
要分兩步來做。首先編制能使每相具有十五細(xì)分變化的程序。如前所述,8155的PA。為控制步進(jìn)電機(jī)的A相,為控制C相。則具有01H到OFH變化的輸出口的子程序如下所示(以A相為例) :
(3)模擬信號(hào)都必須經(jīng)過A/B轉(zhuǎn)換后才能為單片機(jī)所接受, 干擾作用于模擬信一號(hào)之后, 使A/D轉(zhuǎn)換結(jié)果偏離真實(shí)值。如果僅采樣一次, 是無法確定該結(jié)果是否可信的。必須多次采樣, 得到一個(gè)A / D 轉(zhuǎn)換的數(shù)據(jù)系列通過某種處理后, 才能得到一個(gè)可信度較高的結(jié)果。這種從數(shù)據(jù)系列中提取逼近真值數(shù)據(jù)的軟件算法, 通常稱為數(shù)字濾波算法。它有硬件的功效, 卻不需要硬件投資。由于軟件算法的靈活性, 其效果往往是硬件濾波電路所達(dá)不到的。數(shù)字濾波算法很多。再通過硬件電路可使步進(jìn)電機(jī)的A相中產(chǎn)生從零到額定工作電流的十五個(gè)等間隔的上升階梯電流。只要將上述程序中的INCA指令改為DECA的指令, 可得到下降的階梯電流。
B、C相同原理理。然后再編制能使A、B、C 三相按六拍工作方式及正、反方向運(yùn)行的程序。具體做法是先設(shè)置一個(gè)表示轉(zhuǎn)動(dòng)方向的標(biāo)志位, 再設(shè)置一存放三相狀態(tài)的內(nèi)存單元, 步進(jìn)電機(jī)的變速值放入一工作寄存器。