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