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