第一篇:遠(yuǎn)程線考試系統(tǒng)設(shè)計實驗報告
系統(tǒng)設(shè)計實驗報告
—— 遠(yuǎn)程在線考試系統(tǒng)
目錄 軟件需求說明書 ························
引言
···························
1.1 編寫目的·······················
1.2 背景 ·························
1.3 定義 ·························
1.4 參考資料 ······················· 2 程序系統(tǒng)的結(jié)構(gòu)························ 3 程序設(shè)計說明·························
引言.1 編寫目的本文檔的編寫目的是為遠(yuǎn)程在線考試系統(tǒng)項目的設(shè)計提供:
a.系統(tǒng)的結(jié)構(gòu)、設(shè)計說明; b.程序設(shè)計說明; c.程序(標(biāo)識符)設(shè)計說明. 2 背景
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,現(xiàn)在很多的大學(xué)及社會上其它的培訓(xùn)部門都已經(jīng)開設(shè)了遠(yuǎn)程教育,并通過計算機網(wǎng)絡(luò)實現(xiàn)異地教育。但是,遠(yuǎn)程教育軟件的開發(fā),就目前來說,還是處于起步的階段。因此,構(gòu)建一個遠(yuǎn)程在線考試系統(tǒng),還是有很大的實際意義的。
根據(jù)用戶提出的需求,本項目組承接該系統(tǒng)的開發(fā)工作 a.開發(fā)軟件系統(tǒng)的名稱:遠(yuǎn)程在線考試系統(tǒng) b.本項目的任務(wù)提出者:福州大學(xué)軟件學(xué)院 c c. . 用戶:各類大專院校學(xué)校、中小學(xué)校。.3 定義
遠(yuǎn)程在線考試系統(tǒng)
遠(yuǎn)程在線考試系統(tǒng)是基于用Browser/Web模式下的,可以實現(xiàn)考試題庫管理、多用戶在線考試、自動閱卷功能的系統(tǒng)。
.4 參考資料
? GB 8566 計算機軟件開發(fā)規(guī)范 ? GB 8567 計算機軟件產(chǎn)品開發(fā)文件編制指南 ? 軟件設(shè)計標(biāo)準(zhǔn)
程序系統(tǒng)的結(jié)構(gòu)
程序 1(標(biāo)識符)設(shè)計說明
.1 程序描述
注冊信息錄入及信息處理
基本目的:
輸入基本資料進行驗證保存。.2 功能
基本信息輸入和處理包括 ? 輸入和保存姓名 ? 輸入和保存性別 ? 輸入和保存出生日期 ? 輸入和保存考試號碼 ? 輸入和保存?zhèn)渥?/p>
.3 性能
要求響應(yīng)時間小于 1 秒。
.4 輸人項
輸入信息 數(shù)據(jù)類型 數(shù)值范圍 考生姓名 String 包含變長字符串,最大長度可為 20 億個字符。
考生性別 Boolean M/F 考生出生日期 Date(Time)包含表示日期的數(shù)字,日期范圍從公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日。
考生考試號碼 Long 包含-2,147,483,648 到 2,147,483,647 之間的整數(shù)。
考生基本信息 String 包含變長字符串,最大長度可為 20 億個字符。
. 5 輸出項
無
.6 算法
無 .7 流程邏輯
.8 接口
無
.9 存儲分配
需要數(shù)據(jù)庫存儲.10 注釋設(shè)計
a. 加在模塊首部的注釋:無
b.加在各分枝點處的注釋:對各變量的功能、范圍、缺省條件等需要注釋;
d.對使用的邏輯所加的注釋:無
.11 限制條件
無
.12 測試計劃
由本組測試員進行測試。.13 尚未 解決的問題
無程序 2(標(biāo)識符)設(shè)計說明
.1 程序描述
考生信息的管理(考生信息處理)對基本信息進行添加、刪除、修改、查詢等任務(wù)。.2 功能
基本處理包括 ? 考生基本信息的添加
? 考生基本信息的刪除
? 考生基本信息的修改 ? 考生基本信息的查詢.3 性能
要求響應(yīng)時間小于 1 秒。
.4 輸人項
輸入信息 數(shù)據(jù)類型 數(shù)值范圍 考生姓名 String 包含變長字符串,最大長度可為 20 億個字符。
考生性別 Boolean M/F 考生出生日期 Date(Time)包含表示日期的數(shù)字,日期范圍從公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日。
考生考試號碼 Long 包含-2,147,483,648 到 2,147,483,647 之間的整數(shù)。
考生基本信息 String 包含變長字符串,最大長度可為 20 億個字符。
. 5 輸出項
無
.6 算法
無
.7 流程邏輯
.8 接口
無
.9 存儲分配
需要數(shù)據(jù)庫存儲.10 注釋設(shè)計
a. 加在模塊首部的注釋:無
b.加在各分枝點處的注釋:對各變量的功能、范圍、缺省條件等需要注釋;
d.對使用的邏輯所加的注釋:無
.11 限制條件
無
.12 測試計劃
由本組測試員進行測試。
.13 尚未解決的問題
無程序 3(標(biāo)識符)設(shè)計說明
.1 程序描述
試題模型設(shè)置輸入可以對試題模型進行管理。.2 功能
基本輸入包括 ? 試題分值輸入 ? 試題數(shù)量輸入.3 性能
要求響應(yīng)時間小于 1 秒。
.4 輸人項
輸入信息 數(shù)據(jù)類型 數(shù)值范圍 題目數(shù)量、分值 Long 包含-2,147,483,648 到 2,147,483,647 之間的整數(shù)。
. 5 輸出項
無
.6 算法
無
.7 流程邏輯
.8 接口
無
.9 存儲分配
需要數(shù)據(jù)庫存儲.10 注釋設(shè)計
a. 加在模塊首部的注釋:無
b.加在各分枝點處的注釋:對各變量的功能、范圍、缺省條件等需要注釋;
d.對使用的邏輯所加的注釋:無
.11 限制條件
無
.12 測試計劃
由本組測試員進行測試。
.13 尚未解決的問題
無程序 4(標(biāo)識符)設(shè)計說明
.1 程序描述
試題庫管理輸入與處理是對試題庫進行管理。.2 功能
? 單選題添加、編輯、與刪除 ? 多選題添加、編輯、與刪除.3 性能
要求響應(yīng)時間小于 1 秒。
.4 輸人項
輸入信息 數(shù)據(jù)類型 數(shù)值范圍 題目 String 包含變長字符串,最大長度可為 20 億個字符。
. 5 輸出項
無
.6 算法
無
.7 流程邏輯
.8 接口
無
.9 存儲分配
需要數(shù)據(jù)庫存儲.10 注釋設(shè)計
a. 加在模塊首部的注釋:無
b.加在各分枝點處的注釋:對各變量的功能、范圍、缺省條件等需要注
釋;
d.對使用的邏輯所加的注釋:無
.11 限制條件
無
.12 測試計劃
由本組測試員進行測試。
.13 尚未解決的問題
無 7 程序 5(標(biāo)識符)設(shè)計說明
.1 程序描述
試卷生成輸入與處理是對試卷生成進行處理。.2 功能
基本輸入與處理包括 ? 輸入考題數(shù)量 ? 系統(tǒng)自動生成相應(yīng)試卷
.3 性能
要求響應(yīng)時間小于 1 秒。.4 輸人項
輸出信息 數(shù)據(jù)類型 數(shù)值范圍 題目數(shù)量 String 包含變長字符串,最大長度可為 20 億個字符。
. 5 輸出項
無
.6 算法
無
.7 流程邏輯
.8 接口
無
.9 存儲分配
需要數(shù)據(jù)庫存儲.10 注釋設(shè)計
a. 加在模塊首部的注釋:無
b.加在各分枝點處的注釋:對各變量的功能、范圍、缺省條件等需要注釋;
d.對使用的邏輯所加的注釋:無
.11 限制條件
無
.12 測試計劃
由本組測試員進行測試。
.13 尚未解決的問題
無程序 6(標(biāo)識符)設(shè)計說明
.1 程序描述
在線考試輸入是對考生答題進行管理。.2 功能
基本輸入與處理包括 ? 輸入題目答案
.3 性能
要求響應(yīng)時間小于 1 秒。.4 輸人項
輸入信息 數(shù)據(jù)類型 數(shù)值范圍 客觀題(判斷題)
Boolean T/F 客觀題(選擇題)
String 包含變長字符串,最大長度可為 20 億個字符。
主觀題(問答題)
String 包含變長字符串,最大長度可為 20 億個字符。
. 5 輸出項
無
.6 算法
無
.7 流程邏輯.8 接口
無
.9 存儲分配
需要數(shù)據(jù)庫存儲.10 注釋設(shè)計
a. 加在模塊首部的注釋:無
b.加在各分枝點處的注釋:對各變量的功能、范圍、缺省條件等需要注釋;
d.對使用的邏輯所加的注釋:無
.11 限制條件
無
.12 測試計劃
由本組測試員進行測試。
.13 尚未解決的問題
無 9 程序 7(標(biāo)識符)設(shè)計說明
.1 程序描述
考試系統(tǒng)自動閱卷 9 .2 功能
基本輸入與處理包括 ? 輸入正確答案 ? 系統(tǒng)自動閱卷處理 .3 性能
要求響應(yīng)時間小于 1 秒。.4 輸人項
輸入信息 數(shù)據(jù)類型 數(shù)值范圍 標(biāo)準(zhǔn)試卷 String 包含變長字符串,最大長度可為 20 億個字符。
考生試卷 String 包含變長字符串,最大長度可為 20 億個字符。
. 5 輸出項
輸出信息 數(shù)據(jù)類型 數(shù)值范圍 考生得分 Integer 包含-32,768 到 32,767 之間的整數(shù)。
題目對錯信息 String 包含變長字符串,最大長度可為 20 億個字符。.6 算法
無 9 .7 流程邏輯.8 接口
無 9 .9 存儲分配
需要數(shù)據(jù)庫存儲.10 注釋設(shè)計
a. 加在模塊首部的注釋:無
b.加在各分枝點處的注釋:對各變量的功能、范圍、缺省條件等需要注釋;
d.對使用的邏輯所加的注釋:無
.11 限制條件
無
.12 測試計劃
由本組測試員進行測試。
.13 尚未解決的問題
無程序 8(標(biāo)識符)設(shè)計說明
.1 程序描述
成績查閱輸入與處理 9 .2 功能
基本輸入與處理包括 ? 輸入考生基本信息關(guān)鍵字查詢
? 輸出考生得分.3 性能
要求響應(yīng)時間小于 1 秒。
.4 輸人項
輸入信息 數(shù)據(jù)類型 數(shù)值范圍 關(guān)鍵詞 String 包含變長字符串,最大長度可為 20 億個字符。. 5 輸出項
輸入信息 數(shù)據(jù)類型 數(shù)值范圍 相關(guān)信息 String 包含變長字符串,最大長度可為 20 億個字符。
.6 算法
SQL 查詢.7 流程邏輯
.8 接口
無.9 存儲分配
需要數(shù)據(jù)庫存儲
.10 注釋設(shè)計
a. 加在模塊首部的注釋:無
b.加在各分枝點處的注釋:對各變量的功能、范圍、缺省條件等需要注釋;
d.對使用的邏輯所加的注釋:無.11 限制條件
無.12 測試計劃
由本組測試員進行測試。
.13 尚未解決的問題
無
第二篇:操作系統(tǒng)進程管理系統(tǒng)設(shè)計實驗報告
實驗報告說明書
設(shè)計名稱: 操作系統(tǒng)課程設(shè)計
實 驗 : 進程調(diào)度設(shè)計
學(xué)生姓名:
專 業(yè): 網(wǎng)絡(luò)工程 班 級: 08級一班 學(xué) 號:
指導(dǎo)教師:雷曉平王東 黃營 楊躍武 日 期: 2011年 6月 19日
課程設(shè)計任務(wù)書
網(wǎng)絡(luò)工程 專業(yè) 08 年級 1 班
一、具體要求
本課程設(shè)計共2周,采取集中方式。㈠主要設(shè)計內(nèi)容
1、進程調(diào)度
2、存儲管理
3、文件管理
㈡操作系統(tǒng)分項設(shè)計
1、設(shè)計一 :進程管理系統(tǒng)設(shè)計
目的與要求:本設(shè)計的目的是加深對進程概念及進程管理各部分內(nèi)容的理解;熟悉進程管理中主要數(shù)據(jù)結(jié)構(gòu)的設(shè)計及進程調(diào)度算法、進程控制機構(gòu)、同步機構(gòu)及通訊機構(gòu)的實施。
要求設(shè)計一個允許n個進程并發(fā)運行的進程管理模擬系統(tǒng)。該系統(tǒng)包括有簡單的進程控制、同步與通訊機構(gòu),其進程調(diào)度算法可任意選擇。每個進程用一個PCB表示,其內(nèi)容根據(jù)具體情況設(shè)置。各進程之間有一定的同步關(guān)系(可選)。系統(tǒng)在運行過程中應(yīng)能顯示或打印各進程的狀態(tài)及有關(guān)參數(shù)的變化情況,以便觀察諸進程的運行過程及系統(tǒng)的管理過程。
具體詳見:設(shè)計任務(wù)書1--進程調(diào)度算法.doc
2、設(shè)計二:存貯器管理系統(tǒng)設(shè)計
目的與要求:本設(shè)計的目的是使學(xué)生熟悉存貯器管理系統(tǒng)的設(shè)計方法;加深對所學(xué)各種存貯器管理方案的了解;要求采用一些常用的存貯器分配算法,設(shè)計一個存貯器管理模擬系統(tǒng)并調(diào)試運行。模擬環(huán)境應(yīng)盡量接近真實。
具體詳見:設(shè)計任務(wù)書2--內(nèi)存分區(qū)管理模擬.doc
3、設(shè)計三:虛擬存儲器管理系統(tǒng)設(shè)計
本設(shè)計的目的是通過設(shè)計一個簡單的虛擬存儲器管理系統(tǒng)來模擬實際的頁面調(diào)度算法與過程,以掌握這種有用的技術(shù)。要求將其輸入/輸出處理程序編成一個獨立的進程模塊并與其它請求輸入/輸出的進程并發(fā)運行。并要求加入設(shè)備管理子模塊。
具體分析為:頁面調(diào)度算法主要有FIFO、最近最少使用調(diào)度算法(LRU)、最近最不常用調(diào)度算法(LFU)、最佳算法(OPT)等。題目要求:
① 實現(xiàn)三種算法:
1、先進先出;
2、OPT;
3、LRU ② 頁面序列從指定的文本文件(TXT文件)中取出
③ 輸出:第一行:每次淘汰的頁面號,第二行:顯示缺頁的總次數(shù)
4、設(shè)計四:文件管理系統(tǒng)設(shè)計
目的與要求:本設(shè)計的目的是通過設(shè)計和調(diào)試一個簡單的外部文件系統(tǒng),主要是模擬文件操作,使學(xué)生對主要文件操作命令的實質(zhì)和執(zhí)行過程有比較深入的了解,掌握它們的基本實施方法。
基本要求如下:
實現(xiàn)三種算法: 先來先服務(wù)、最短尋道優(yōu)先、電梯算法 磁道服務(wù)順序從指定的文本文件(TXT文件)中取出
輸出:第一行:磁道的服務(wù)順序;第二行:顯示移動總道數(shù)
5、設(shè)計五:多道程序的轉(zhuǎn)換調(diào)度系統(tǒng) 題目要求:(作業(yè)調(diào)度和進程調(diào)度結(jié)合在一起)作業(yè)流信息是從指定文本文件(TXT文件)中讀取 作業(yè)信息:
作業(yè)號 進入系統(tǒng)時間 估計運行時間 優(yōu)先級 內(nèi)存需求量 磁帶機需求量 都為整型 作業(yè)調(diào)度算法:先來先服務(wù)、最短作業(yè)優(yōu)先(二者選一)
進程調(diào)度算法:先來先服務(wù)、基于優(yōu)先級的算法(靜態(tài)優(yōu)先級)(二者選一)輸出格式:作業(yè)號 時間間隔 800-810(/* 8:00-8:10 */)2 810-900 1 900-930平均周轉(zhuǎn)時間:總的周轉(zhuǎn)時間/作業(yè)總數(shù)
周轉(zhuǎn)時間就是作業(yè)結(jié)束時間減去作業(yè)進入系統(tǒng)時間 具體詳見:多道程序轉(zhuǎn)換.doc
以上設(shè)計以20-25人為組,選擇一個設(shè)計進行。㈢操作系統(tǒng)整體設(shè)計
將第㈡部分中的全部或部分有機地組合起來,構(gòu)成一個小型的操作系統(tǒng)。
二、進度安排
1、教師下達設(shè)計任務(wù)書(半天)任務(wù)書內(nèi)容包括題目、主要技術(shù)指標(biāo)和要求、給定條件及原始數(shù)據(jù)、所用儀器設(shè)備和參考資料及文獻等。教師講授必要的設(shè)計思路和設(shè)計方法。
2、學(xué)生完成預(yù)設(shè)計(1天半)本階段學(xué)生通過查閱資料及文獻(主要自學(xué)),明確任務(wù),掌握工程設(shè)計基本方法,確定設(shè)計方案,進行設(shè)計分析,完成預(yù)設(shè)計。
3、實驗階段(7天)經(jīng)教師審查通過預(yù)設(shè)計方案后,即可進行編程調(diào)試。實驗由學(xué)生獨立完成,教師定時指導(dǎo)。
4、設(shè)計總結(jié)階段(1天)本階段學(xué)生要認(rèn)真完成課程設(shè)計報告書,整理技術(shù)資料,并盡可能寫出課程設(shè)計的心得體會和改進意見。
三、完成后應(yīng)上交的材料
課程設(shè)計報告書包括:設(shè)計任務(wù)及主要技術(shù)指標(biāo)、設(shè)計方案及論證結(jié)果、系統(tǒng)的原理框圖、設(shè)計程序、實驗結(jié)果、實驗中主要問題及故障現(xiàn)象的分析及設(shè)計結(jié)論等。
附實驗數(shù)據(jù)、系統(tǒng)軟硬件環(huán)境、使用說明及參考資料。
四、總評成績
指導(dǎo)教師 簽名日期 年 月 日 系 主 任 審核日期 年 月 日
目 錄
一、實驗?zāi)康摹?
二、實驗要求………………………………………5
三、具體內(nèi)容………………………………………5 3.1先來先服務(wù)(FCFS)???????5 3.2作業(yè)優(yōu)先SJF 算法????????5 3.3多級隊列調(diào)度算法????????.5 3.4時間片輪轉(zhuǎn)調(diào)度法?????????5 3.5優(yōu)先級法?????????????6 3.6多隊列反饋法???????????6 3.7輪轉(zhuǎn)法??????????????.6 3.8最短周期優(yōu)先???????????6 3.9先來先服務(wù)?????????????7
四、實驗程序………………………………………7
五、實驗總結(jié)………………………………………13
設(shè)計題目:進程管理系統(tǒng)設(shè)計
一、實驗?zāi)康模?/p>
本設(shè)計的目的是加深對進程概念及進程管理各部分內(nèi)容的理解;熟悉進程管理中主要數(shù)據(jù)結(jié)構(gòu)的設(shè)計及進程調(diào)度算法、進程控制機構(gòu)、同步機構(gòu)及通訊機構(gòu)的實施。
二、實驗要求:
設(shè)計一個允許n個進程并發(fā)運行的進程管理模擬系統(tǒng)。該系統(tǒng)包括有簡單的進程控制、同步與通訊機構(gòu),其進程調(diào)度算法可任意選擇。每個進程用一個PCB表示,其內(nèi)容根據(jù)具體情況設(shè)置。各進程之間有一定的同步關(guān)系(可選)。系統(tǒng)在運行過程中應(yīng)能顯示或打印各進程的狀態(tài)及有關(guān)參數(shù)的變化情況,以便觀察諸進程的運行過程及系統(tǒng)的管理過程。
三、具體內(nèi)容:
調(diào)度也稱dispatcher,這是內(nèi)核的主要職責(zé)之一。一個良好的任務(wù)調(diào)度算法應(yīng)該主要體現(xiàn)在以下幾個方面:
公平:保證每個進程得到合理的CPU 時間
高效:使CPU 保持忙碌狀態(tài),即總是有進程在CPU 上運行 響應(yīng)時間:使交互用戶的響應(yīng)時間盡可能短
周轉(zhuǎn)時間:使批處理用戶等待輸出的時間盡可能短 吞吐量:使單位時間內(nèi)處理的進程盡可能多
很顯然在任何操作系統(tǒng)中這幾個目標(biāo)不可能同時達到所以不同的。
操作系統(tǒng)會在這幾個方面中做出相應(yīng)的取舍從而確定自己的調(diào)度算法,常用的處理機調(diào)度算法有:先來先服務(wù)FCFS、短作業(yè)優(yōu)先SJF、優(yōu)先級、時間片輪轉(zhuǎn)法、多級隊列法、多級反饋隊列法。
(1)先來先服務(wù)(FCFS)
FCFS 是最簡單的CPU 調(diào)度算法,即按進程到來的先后次序進行調(diào)度,這樣在系統(tǒng)中等待時間最長的進程被優(yōu)先調(diào)度,而不管其所需運行時間的長短。
(2)作業(yè)優(yōu)先SJF 算法
是指當(dāng)CPU 可供使用時SJF 算法把CPU 分給需要運行時間最短的進程。(3)多級隊列調(diào)度算法
把就緒隊列劃分成幾個單獨的隊列一般根據(jù)進程的某些特性如內(nèi)存大小和進程類型永久性地把各個進程分別鏈入其中某一個隊列中,每個隊列都有自己的調(diào)度算法,此外在各個隊列之間也要進行調(diào)度。通常采用固定優(yōu)先級的搶占式調(diào)度,例如某系統(tǒng)中有5 個隊列,各個隊列的優(yōu)先級自上而下降低,只有當(dāng)前3 個隊列中都為空的時候隊列4 中的進程才可以運行,而當(dāng)隊列4 中的進程在運行時,如果隊列1 中進入了一個就緒進程,則隊列4 中的進程要立刻讓出CPU 使用權(quán)。多級反饋隊列法允許進程在各隊列間移動,其基本思想是把具有不同CPU工作時間這一特性的進程區(qū)分開來,如果一個進程要使用很長的CPU 時間,則應(yīng)把它移至較低級的隊列中,這種方式把I/O 繁忙型和交互式進程放在較高優(yōu)先級的隊列中同樣在低優(yōu)先級隊列中長時間等待的進程可以移到較高優(yōu)先級隊列中UNIX 系統(tǒng)采用的是多級反饋隊列輪轉(zhuǎn)法。
(4)時間片輪轉(zhuǎn)調(diào)度法
當(dāng)兩個或兩個以上任務(wù)有同樣優(yōu)先級,內(nèi)核允許一個任務(wù)運行事先確定的一段時間叫做時間額度quantum,然后切換給另一個任務(wù)也叫做時間片調(diào)度time slicing,內(nèi)核在滿足以下條件時把CPU 控制權(quán)交給下一個任務(wù)就緒態(tài)的任務(wù),當(dāng)前任務(wù)已無事可做,當(dāng)前任務(wù)在時間片還沒結(jié)束時已經(jīng)完成了。輪轉(zhuǎn)法主要是為分時系統(tǒng)設(shè)計的,其中時間片是一個重要的參數(shù)不能取的過大或過小,通常為10 至100ms 數(shù)量級,就緒隊列可以看成是一個環(huán)形隊列,CPU 調(diào)度程序輪流
地把CPU 分給就緒隊列中地每個進程,時間長度為一個時間片Linux 操作系統(tǒng)就是采用時間片輪轉(zhuǎn)的調(diào)度算法。
(5)優(yōu)先級法
優(yōu)先級調(diào)度的基本思想是,把當(dāng)前處于就緒隊列中優(yōu)先級最高的進程投入運行,而不管各進程的下一個CPU周期的長短和其他因素。
優(yōu)先級通常用0~4095的整數(shù)(稱為優(yōu)先數(shù))表示,是數(shù)大優(yōu)先級高還是數(shù)小優(yōu)先級高取決于規(guī)定。例如UNIX系統(tǒng)規(guī)定優(yōu)先數(shù)越大優(yōu)先級越低,優(yōu)先數(shù)越小優(yōu)先級越高。
優(yōu)先數(shù)有靜態(tài)和動態(tài)之分。靜態(tài)優(yōu)先數(shù)是指在進程開始運行之前便根據(jù)某種或某些因素(如估計運行時間、主存需求量、打開文件個數(shù)、所付經(jīng)費多少等)算定,而且該優(yōu)先數(shù)在進程的整個生命周期內(nèi)一直不變。靜態(tài)優(yōu)先數(shù)方法雖然簡單,但有可能導(dǎo)致某些低優(yōu)先級的進程無限期地等待。尤其在高優(yōu)先級的進程不斷進入就緒隊列的情況下,使等待CPU的低優(yōu)先級進程更多,等待時間更長。動態(tài)優(yōu)先數(shù)方法是按照某種原則使各進程的優(yōu)先級隨著時間而改變。例如隨等待時間增大優(yōu)先級也跟著提高、隨著使用CPU時間的增長優(yōu)先級跟著下降,就是一種較好的策略。等待了較長時間的進程,總會因其優(yōu)先級不斷地提高而被調(diào)度運行。
如果把進入就緒隊列的次序作為計算進程動態(tài)優(yōu)先數(shù)的主要指標(biāo),那么優(yōu)先級法就變成FCFS。如果把下一個CPU周期最短作為計算進程動態(tài)優(yōu)先數(shù)的主要指標(biāo),那么優(yōu)先級法變成SBF,此時各進程的優(yōu)先數(shù)p_pri = 1/ ti,其中ti是估算的下一個CPU周期的長度。
優(yōu)先級調(diào)度也允許剝奪方式?,F(xiàn)在的許多操作系統(tǒng),例如UNIX系統(tǒng)V,Windows NT,OS/2等都采用優(yōu)先級剝奪調(diào)度。
(6)多隊列反饋法
其基本思想是,把就緒進程按優(yōu)先級排成多個隊列,同隊列的進程具有相同的時間片。高優(yōu)先級隊列的時間片比低優(yōu)先級隊列的小。調(diào)度時先從高優(yōu)先級隊列中選出某一進程投入運行,當(dāng)該進程的時間片到期后則轉(zhuǎn)至低一級的就緒隊列中。只有高優(yōu)先級隊列為空時才從低一級隊列中調(diào)度進程。
例如考慮由3個隊列組成的多級隊列調(diào)度。3個隊列的編號分別為0, 1, 2,如圖所示。調(diào)度算法首先調(diào)度0號隊列中的進程。當(dāng)0號隊列為空時才調(diào)度1號隊列中的進程;當(dāng)0號與1號隊列都為空時才調(diào)度2號隊列中的進程。在剝奪方式下,新進入0號隊列的進程將剝奪1號或2號隊列中正在執(zhí)行的進程的CPU,而新進入1號隊列的進程將剝奪2號隊列中正在執(zhí)行的進程的CPU。
其實,每個隊列都可擁有各自的調(diào)度算法,也可制定不同的“轉(zhuǎn)隊”規(guī)則。這樣看來,多隊列反饋調(diào)度算法能有多種變化。
(7)輪轉(zhuǎn)法
輪轉(zhuǎn)法就是按一定時間片(記為q)輪番運行各個進程。如果q是一個定值,則輪轉(zhuǎn)法是一種對各進程機會均等的調(diào)度方法。
輪轉(zhuǎn)法本質(zhì)上是剝奪的,因為一輪內(nèi),每個進程不能獲得比一個時間片q更長的運行時間。正是由于這一特點,輪轉(zhuǎn)法特別適用于分時操作系統(tǒng)。
輪轉(zhuǎn)法的關(guān)鍵問題是如何確定q的大小。如果時間片太大以致每個進程的CPU周期都能在一個時間片內(nèi)完成,則輪轉(zhuǎn)法實際上脫化為FCFS。如果q太小以致CPU切換過于頻繁,則會增加CPU的額外開銷,降低了CPU的有效利用率。這是因為,每次CPU切換涉及到保存原運行進程的現(xiàn)場和恢復(fù)新運行進程的現(xiàn)場,這些操作一般需要10ms~100ms的時間。例如,設(shè)有一個CPU周期為10單位的進程,在q取12,6,1時的調(diào)度次數(shù)分別為0,1,9。令時間單位為1ms(1ms=1000ms),1次調(diào)度的開銷為100ms,則在q=1時CPU的額外開銷和有效開銷之比為1:10,這是不容忽視的。
(8)最短周期優(yōu)先
最短周期優(yōu)先(SBF: shortest burst first)把當(dāng)前就緒隊列中的下一個CPU周期最短的那個進程調(diào)度運行。
(9)先來先服務(wù)
如果早就緒的進程排在就緒隊列的前面,遲就緒的進程排在就緒隊列的后面,那么先來先服務(wù)(FCFS: first come first service)總是把當(dāng)前處于就緒隊列之首的那個進程調(diào)度到運行狀態(tài)。也就說,它只考慮進程進入就緒隊列的先后,而不考慮它的下一個CPU周期的長短及其他因素。FCFS算法簡單易行,但性能卻不大好。
四、實驗程序
#include “iostream.h”
//define pcb typedef struct pcb { char name[10];//進程名
char state;//狀態(tài)w(就緒)r(運行)f(結(jié)束)int id;//id號
int super;//優(yōu)先級
int ntime;//需運行的時間 int rtime;//已運行的時間 struct pcb *next;}*pcb1;
pcb1 s,w;//define two publiced linknode ,one is s(ready queue),one is w(blocked queue)
//initialize two queues void init(pcb1 &r){ r=NULL;//both queues is the kind of head index }
//print the information of the ready queue void print(){pcb1 p;cout<<“您現(xiàn)在查看的是就緒隊列的信息:”;cout<<“進程號 ”<<“進程名 ”<<“優(yōu)先級 ”<<“狀態(tài)”<<“已運行時間 ”<<“需運行時間”<
cout<
id<<“ ”<
name<<“ ”<
super<<“ ”<
state<<“ ”<
rtime<<“ ”<
ntime< //print the information of the blocked queue void print1(){pcb1 p;cout<<“您現(xiàn)在查看的是阻塞隊列的信息”;cout<<“進程號 ”<<“進程名 ”<<“優(yōu)先級 ”<<“狀態(tài) ”<<“已運行時間 ”<<“需運行時間”< id<<“ ”< name<<“ ”< super<<“ ”< state<<“ ”< rtime<<“ ”< ntime< //check the queue if empty int empty(pcb1 &r){ if(r==NULL)return 0;else return 1;} //check the first process of the ready queue if finshed int check(){ pcb1 p;p=s;if(p->rtime==p->ntime){ p->state='F';//if one process finshed then change ti's state cout<<“進程”< id<<“ 已經(jīng)結(jié)束”< //sort process according to the super of the process and insert to the ready(blocked)queue void sort(pcb1 &r,pcb1 p){ pcb1 p1,p2;int in=0;if(r==NULL)//the queue is empty { r=p;} else { if(p->super>=r->super)//the super of the process which wait insert to the queue is highter than the super of the first process of the queue { p->next=r;r=p;} else { p1=r;p2=r->next;if(p2==NULL)//only one process in the queue { r->next=p;} else { while(in==0&&p2!=NULL)//insert to the middle of the queue { if(p->super>=p2->super){ p->next=p2;p1->next=p;in=1;} else { p1=p1->next;p2=p2->next;} } } if(in==0)//link to the last of ready queue p1->next=p;} } } //block one process and insert to block queue void block(){ if(empty(s)){ if(s->next==NULL){ sort(w,s);s=s->next;} else { pcb1 p1;p1=s;s=s->next;p1->next=NULL;sort(w,p1);} } else { cout<<“現(xiàn)在就緒隊列已經(jīng)為空,再沒有進程需要阻塞”< //wake one process of block queue and insert to ready queue void wake(){ if(empty(w)){ pcb1 p1;p1=w;w=w->next;p1->next=NULL;sort(s,p1);} else { cout<<“阻塞隊列已經(jīng)為空,沒有進程再需要喚醒”< //runing void runing(){ if(empty(s)){ pcb1 p;p=s;if(check())//check the first process of the queue if finished {//no s=s->next;p->rtime++;p->super--;p->next=NULL;sort(s,p);} else {//yes s=s->next;} } else { cout<<“就緒隊列已經(jīng)為空”< //creat process void input(){ pcb1 p2;p2=new pcb;cout<<“請輸入 進程號、進程名、進程優(yōu)先級、需要運行時間”;cin>>p2->id>>p2->name>>p2->super>>p2->ntime;p2->rtime=0;p2->state='W';p2->rtime=0;p2->next=NULL; sort(s,p2);} //main function void main(){ char ch;init(s);init(w);cout<<“*****************************進程調(diào)度模擬程序開始*******************************”< 程序運行界面如下: 五、實驗總結(jié) 本次實驗,我的任務(wù)是設(shè)計一個允許n個進程并發(fā)運行的進程管理模擬系統(tǒng)。該系統(tǒng)包括有簡單的進程控制、同步與通訊機構(gòu),系統(tǒng)在運行過程中能顯示各進程的狀態(tài)及有關(guān)參數(shù)的變化情況,從而觀察諸進程的運行過程及系統(tǒng)的管理過程,我是用C++寫的,在我的電腦能夠運行通過,雖不能盡善盡美,但也基本能實現(xiàn)老師的要求。 兩個星期程序設(shè)計課程,雖然時間有點短,但我也收獲不少,這次試驗,加深了我對進程概念及進程管理的理解;比較熟悉進程管理中主要數(shù)據(jù)結(jié)構(gòu)的設(shè)計及進程調(diào)度算法、進程控制機構(gòu)、同步機構(gòu)及通訊機構(gòu)的實施。也讓我認(rèn)識到自己的不足,操作系統(tǒng)的有些知識,我知道的還不多,沒有掌握好,還需要多多學(xué)學(xué),不斷提升自己的能力。 廣西工學(xué)院鹿山學(xué)院 實 驗 報 告 課程名稱: 嵌入式系統(tǒng) 指導(dǎo)教師: 劉瑞琪 班 級: 自動化101 姓 名: 楊杰 學(xué) 號: 20102787 成績評定: 指導(dǎo)教師簽字: 2013年5月25日 實驗一 簡單的程序 一 實驗?zāi)康模骸邮謱嵺`一個簡單的字符型設(shè)備驅(qū)動程序。、學(xué)習(xí)Linux 驅(qū)動程序構(gòu)架。、學(xué)習(xí)在應(yīng)用程序中調(diào)用驅(qū)動。 二 實驗內(nèi)容: 編寫簡單的字符型設(shè)備驅(qū)動程序。編寫相應(yīng)的應(yīng)用程序。 三 實驗設(shè)備:、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發(fā)環(huán)境。 四 實驗步驟 實驗二 CPU GPIO 驅(qū)動程序及測試程序 一、實驗?zāi)康模?/p> 編寫第一個針對實際硬件的驅(qū)動程序,進一步了解驅(qū)動程序構(gòu)架。 二、實驗內(nèi)容:、編寫S3C2410 GPIO驅(qū)動程序。、編寫S3C2410 GPIO應(yīng)用程序。、在 LINUX系統(tǒng)中插入自己的驅(qū)動程序,調(diào)用它。實現(xiàn)用 CPU GPIO 控制外部LED,利用S3C2410 核心板上的 LED 驗證我們的工作。 三、實驗設(shè)備、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發(fā)環(huán)境。 四、實驗步驟 1、復(fù)制Experiment_KeyHello_driverapl_test文件下的simple_test_driver.c文件到Experiment_KeyGPIO文件夾下,將文件名更改為test.c。 2、打開test.c,在else語句后更改函數(shù)語句如下: 3、復(fù)制Experiment_KeyADapl_test文件夾下的Makefile到Experiment_KeyGPIO文件夾下,打開并將中的ADC刪除。 4、打開Experiment_KeyGPIOdriver文件下的gpio_led.c文件。 5、在ssize_t SIMPLE_GPIO_LED_ioctl函數(shù)下添加如下語句: if(cmd==0)GPBDAT &= ~(0xf<<5); if(cmd==1)GPBDAT |=(0xf<<5);如下圖所示: 6、在int __init HW_GPIO_LED_CTL_init函數(shù)下屏蔽for循環(huán),如下圖所示: 保存并關(guān)閉。 7、打開終端,并編譯test.c文件和gpio_led.c文件。 8、重新打開一個終端,并按步驟輸入如下語句: 9、依次輸入如下語句: 1、cd..2、ls 3、mknod /dev/hello_ctl c 97 1 4、./test 實驗三 中斷實驗及LED顯示 一、實驗?zāi)康模?/p> 學(xué)習(xí)Linux 系統(tǒng)是如何處理中斷。 二、實驗內(nèi)容: 編寫獲取和處理外中斷的驅(qū)動程序。 三、實驗設(shè)備:、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發(fā)環(huán)境。 四、實驗步驟 1、打開Experiment_KeyGPIOdriver文件下的gpio_led.c文件。 2、在ssize_t SIMPLE_GPIO_LED_ioctl函數(shù)下添加如下語句: if(cmd==0)GPBDAT &= ~(0xf<<5); if(cmd==1)GPBDAT |=(0xf<<5);如下圖所示: 3、在int __init HW_GPIO_LED_CTL_init函數(shù)下屏蔽for循環(huán),如下圖所示: 保存并關(guān)閉。 4、打開Experiment_KeyInterruptdriver下的Interrupt.c文件,并在其interrupt函數(shù)下添加for語句,如下圖所示: 5、打開終端,并編譯Interrupt.c文件和gpio_led.c文件。 6、重新打開一個終端,并按步驟輸入如下語句: 7、依次輸入如下語句: 1、cd /mnt/2410RP_linux/Experiment_Key/Interrupt/driver 2、ls 3、insmod Interrupt.o 實驗四 數(shù)碼管顯示實驗 一、實驗?zāi)康模?/p> 學(xué)習(xí)串并轉(zhuǎn)換的相關(guān)知識,并編寫驅(qū)動程序。 二、實驗內(nèi)容: 編寫針對zlg7289A 的驅(qū)動程序。 三、實驗設(shè)備:、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發(fā)環(huán)境。 四、實驗步驟 1、打開Experiment_KeySpi_leddriver文件夾下的spi_led.c 2、并在spi_ledInit函數(shù)下添加如下語句: 保存并關(guān)閉。 3、打開終端,并編譯spi_led文件。 4、重新打開一個終端,并輸入如下語句: 實驗五 AD 驅(qū)動實驗 一 實驗?zāi)康模骸⒘私饽?shù)轉(zhuǎn)換的基本原理;、掌握模數(shù)轉(zhuǎn)換的編程方法。 二 實驗內(nèi)容:、編程對模擬量輸入進行采集和轉(zhuǎn)換,并將結(jié)果顯示在超級終端上。、通過改變模擬量輸入,觀察顯示結(jié)果。 三 實驗設(shè)備:、一套S3C2410RP 嵌入式實驗箱。、安裝Redhat9的宿主PC機,并且配置好 ARM Linux 的開發(fā)環(huán)境。 四 實驗步驟 1、在spi_led..c中的simpled ioctl中加入以下程序 2、在testADC中復(fù)制以下程序并修改如下 3、掛載程序 cd /mnt/2410RP_linux/Experiment_Key/spi_led/driver ls insmod spi_led.o cd /mnt/2410RP_linux/Experiment_Key/ad/driver insmod adc.o cd /mnt/2410RP_linux/Experiment_Key/ad/apl_test ls mknod /dev/spi c 104 1 ls ./testADC 嵌入式系統(tǒng)設(shè)計實驗報告 班 級:學(xué) 號:姓 名:成 績:指導(dǎo)教師: 20110612 2011061208 李曉虹 武俊鵬、劉書勇 1.實驗一 1.1 實驗名稱 博創(chuàng)UP-3000實驗臺基本結(jié)構(gòu)使用方法 1.2 實驗?zāi)康?/p> 1.熟悉嵌入式系統(tǒng)開發(fā)式流程概述。 2.熟悉UP-net3000實驗平臺的核心硬件電路和外設(shè)。3.熟悉ARM JTAG的安裝與使用。 1.3 實驗環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。 軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 1.4 實驗內(nèi)容及要求 1.熟悉嵌入式系統(tǒng)開發(fā)式流程概述。 2.熟悉UP-net3000實驗平臺的核心硬件電路和外設(shè)。3.熟悉ARM JTAG的安裝與使用。 1.5 實驗設(shè)計與實驗步驟 1.新建超級終端 2.選擇ARM 開發(fā)實驗臺串口。 完成新建超級終端的設(shè)置以后,可以選擇超級終端文件菜單中的保存,將當(dāng)前設(shè)置 3.保存為一個特定超級終端到桌面上,以備后用。用串口線將PC 機串口和平臺UART0 正確連接后,就可以在超級終端上看到程序輸出的信息了。4.啟動開發(fā)板,按住任意鍵,使開發(fā)板進入BIOS設(shè)置狀態(tài)。 5.在超級終端的界面上,顯示BIOS版本信息,以及相應(yīng)的測試指令。操作時,要在PC機上輸入小寫的字母快捷鍵,進入到相應(yīng)的功能中去。6.按照超級終端上的提示信息,進行功能的測試。 1.6 實驗過程與分析 本次實驗操作起來并不困難,因為此次實驗屬于驗證型實驗,按照實驗資料所給的提示信息,以上面的步驟,即可得到實驗的結(jié)果。進入到BIOS界面后,按照超級終端上的提示信息來進行功能 1.7 實驗結(jié)果總結(jié) 在實驗過程中,我們進行的很順利,沒有遇到什么問題,在超級終端界面,按提示的快 捷鍵來測試對應(yīng)的功能。如 e:測試由ZLG7289 驅(qū)動的LED 顯示,共分3 步,請看超級終端提示按任意鍵繼續(xù),同 時觀察LED 的變化,最后返回主菜單。 b:引導(dǎo)FLASH 中的應(yīng)用程序system.bin。執(zhí)行該功能將退出BIOS 狀態(tài),把控制交給應(yīng) 用程序,等。 1.8 心得體會 通過此次實驗,我對于實驗環(huán)境有了初步的了解與認(rèn)識,對于嵌入式也有了更深一步的認(rèn)識。同時實驗過程中,我學(xué)會了第一次接觸的超級終端的使用方法,并能夠熟練掌握,知道其工作的原理。 2.實驗二 2.1 實驗名稱 ADS1.2軟件開發(fā)環(huán)境使用方法 2.2 實驗?zāi)康?/p> 1.熟悉ADS1.2 開發(fā)環(huán)境,學(xué)會ARM 仿真器的使用。 2.使用ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,了解嵌入式開發(fā)的基本思想和過程。 2.3 實驗環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。 軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 2.4 實驗內(nèi)容及要求 掌握AXD Debugger的使用方法,學(xué)習(xí)串行通訊原理,了解串行通訊控制器,閱讀ARM 芯片文檔,掌握ARM 的UART相關(guān)寄存器的功能,熟悉ARM 系統(tǒng)硬件的UART 相關(guān)接口。編程實現(xiàn)ARM 和計算機之間的串行通訊:ARM 監(jiān)視串行口;將接收到的字符再發(fā)送給串口(計算機與開發(fā)板是通過超級終端通訊的);即按PC 鍵盤通過超級終端發(fā)送數(shù)據(jù),開發(fā)板將接收到的數(shù)據(jù)再返送給PC,在超級終端上顯示。 2.5 實驗設(shè)計與實驗步驟 (1)新建工程,選擇菜單中的Project | Add Files 把和工程相關(guān)的所有文件包括init和startup 子目錄加入到工程中。ADS1.2 不能自動按文件類別對這些文件進行分類,需要的話可以執(zhí)行菜單Project | Create Group 創(chuàng)建文件組,然后分別將不同類的文件加入到不同的組,以方便管理。(另一種辦法是,在新建工程時ADS 創(chuàng)建了和工程同名的目錄,在該目錄下按類別創(chuàng)建子目錄并存放工程文件。選中所有目錄拖動到任務(wù)欄上的ADS 任務(wù)條上,不要松 開鼠標(biāo)當(dāng)ADS 窗口恢復(fù)后再拖動到工程文件窗口,松開鼠標(biāo)。這樣ADS 將以子目錄名建立同名文件組并以此對文件分類。) (2)雙擊Main.c 打開該文件,可以看到Main()函數(shù)的內(nèi)容如下所示。int main(void){ ARMTargetInit();//開發(fā)版初始化 LCD_Init();LCD_ChangeMode(DspTxtMode);//轉(zhuǎn)換LCD 顯示模式為文本顯示模式 LCD_Cls();//文本模式下清屏命令 LCD_printf(“Hello world!n”);//向液晶屏輸出 Uart_Printf(“nHello world!n”);//向串口輸出 while(1);}(3)利用上個實驗中的通訊軟件超級終端來將生成的文件放到嵌入式開發(fā)平臺中。(4)重啟實驗臺即可看到LCD上顯示的“Hello world!” 2.6 實驗過程與分析 新建工程,然后將所需的工程文件加載打工程目錄下,編譯生成system.bin文件,將文件導(dǎo)入到實驗臺中,然后重啟實驗臺,即可得到實驗結(jié)果。 2.7 實驗結(jié)果總結(jié) 超級終端輸出一些相對應(yīng)的代碼的執(zhí)行結(jié)果。熟悉了ADS1.2 開發(fā)環(huán)境以及學(xué)會了ARM 仿真器的基本使用。使用ADS 編譯、下載、調(diào)試并跟蹤一段已有的程序,并大致了解了嵌入式開發(fā)的基本思想和過程。 2.8 心得體會 通過此次實驗,我對于嵌入式開發(fā)的基本思想有了一定的了解,嵌入式開發(fā)采用的是交叉編譯環(huán)境,所以在一些方面會有所限制。對于初學(xué)者來說,通過一兩次實驗結(jié)果的演示就能夠?qū)嶒炁_有深入的了解不可能的,所以在后續(xù)的實驗中,我要好好努力,認(rèn)真做好課程實驗為后續(xù)的課程設(shè)計實驗打下基礎(chǔ)。 3.實驗三 3.1 實驗名稱 鍵盤及LED實驗 3.2 實驗?zāi)康?/p> 1.學(xué)習(xí)鍵盤及LED 驅(qū)動原理。 2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅(qū)動17鍵的鍵盤和8個共陰極LED。 3.3 實驗環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。 軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開 發(fā) 環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 3.4 實驗內(nèi)容及要求 編寫出一段程序,要求能在LED上顯示出小鍵盤上按下的4位數(shù)字。 3.5 實驗設(shè)計與實驗步驟 1.新建工程,將“Exp3 鍵盤及LED 驅(qū)動實驗”中的文件添加到工程。2.定義ZLG7289 寄存器(ZLG7289.h)。3.編寫ZLG7289 驅(qū)動函數(shù)(ZLG7289.c)。4.定義鍵盤映射表:(Keyboard16.c)。5.定義鍵值讀取函數(shù)。 6.編寫主函數(shù),將按鍵值在數(shù)碼管上顯示。 3.6 實驗過程與分析 此次實驗中,我們根據(jù)已有實驗,進行調(diào)試,查看程序的運行效果。根據(jù)效果,我們又回到實驗代碼中,然后對代碼進行深入的研究,查看每部分功能所對應(yīng)的代碼,通過不斷的調(diào)試編譯,我們最終對該實驗用到的代碼有了更深的認(rèn)識。從而能夠按照要求,完成我們自己實驗。 3.7 實驗結(jié)果總結(jié) 通過小鍵盤的按鍵,鍵值可以在LED上顯示出來。并學(xué)習(xí)了鍵盤及LED 驅(qū)動原理以及掌握了ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驅(qū)動17鍵的鍵盤和8個共陰極LED。 3.8 心得體會 在這次實驗中讓我對嵌入式的實驗箱有了進一步的認(rèn)識,并且進一步了解的ARM實驗的原理和實驗情況,能夠?qū)υ创a進行正確了理解。并且能修改這些源代碼能夠使其工作在自己的預(yù)期的工作狀態(tài)和輸出自己想要的結(jié)果 4.實驗四 4.1 實驗名稱 電機轉(zhuǎn)動控制及中斷實驗 4.2 實驗?zāi)康?/p> 1.熟悉ARM本身自帶的六路即三對PWM,掌握相應(yīng)寄存器的配置。 2.編程實現(xiàn)ARM系統(tǒng)的PWM輸出和I/O輸出,前者用于控制直流電機,后者用于控制步進電機。 3.了解直流電機和步進電機的工作原理,學(xué)會用軟件的方法實現(xiàn)步進電機的脈沖分配,即用軟件的方法代替硬件的脈沖分配器。 4.了解44B0處理器上中斷的應(yīng)用。 5.學(xué)習(xí)在44B0處理器上中斷的應(yīng)用。 6.進一步熟悉平臺外圍硬件及其驅(qū)動程序的編寫。 4.3 實驗環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。 軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 4.4 實驗內(nèi)容及要求 1.編程實現(xiàn)ARM芯片的一對PWM輸出用于控制直流電機的轉(zhuǎn)動,通過A/D旋鈕控制其轉(zhuǎn)動方式。 2.編程實現(xiàn)ARM的四路I/O通道,實現(xiàn)環(huán)形脈沖分配用于控制步進電機的轉(zhuǎn)動,通過A/D旋鈕控制步進電機的轉(zhuǎn)角。 3.通過鍵盤控制直流電機與步進電機的切換。4.設(shè)置并啟動定時器。 5.設(shè)置中斷,編寫定時器中斷服務(wù)程序,對中斷次數(shù)進行計數(shù)并在LED上顯示結(jié)果。 4.5 實驗設(shè)計與實驗步驟 1.添加并打開工程。 2.進行直流電機初始化設(shè)置和代碼編寫。3.進行步進電機初始化設(shè)置和代碼編寫。 4.對Timer3編程,編寫定時器中斷服務(wù)程序,完成對中斷次數(shù)的計數(shù)。5.編寫LED計數(shù)顯示函數(shù),使LED能正確計數(shù)并顯示0-9999。6.編寫中斷初始化函數(shù)和中斷響應(yīng)函數(shù)。7.終端下載測試。 4.6 實驗過程與分析 1.對直流電機進行編程和測試,掌握轉(zhuǎn)速和旋轉(zhuǎn)方向的設(shè)定方法。2.對步進電機進行編程和測試,掌握ARM的四路I/O通道,實現(xiàn)環(huán)形脈沖分配用于控制步進電機的轉(zhuǎn)動,通過A/D旋鈕控制步進電機的轉(zhuǎn)角。 3.對主函數(shù)進行編程,用鍵盤響應(yīng)直流電機與步進電機的切換控制。 4.掌握中斷相關(guān)語句的應(yīng)用,弄清定義的中斷向量、中斷向量號,編寫中斷響應(yīng)函數(shù),并完成中斷響應(yīng)控制。 4.7 實驗結(jié)果總結(jié) 實現(xiàn)了直流電機與步進電機的基本設(shè)置和控制,可以通過鍵盤控制電機之間的切換。完成了中斷的響應(yīng)和定時中斷。 在通過本次實驗,我初步了解的實驗的目的所在,并且利用所給的源代碼能夠,調(diào)試出所預(yù)期的結(jié)果,而且能夠根據(jù)已給的源代碼修改得到所需的結(jié)果。 4.8 心得體會 通過本次實驗,掌握了電機工作原理,了解了中斷的意義和實現(xiàn)方法,實現(xiàn)了簡單了中 斷處理程序,更加了解了中斷的意義。 5.實驗五 5.1 實驗名稱 LCD驅(qū)動控制實驗及觸摸屏驅(qū)動實驗 5.2 實驗?zāi)康?/p> 1.了解觸摸屏的基本概念與原理。 2.理解觸摸屏與LCD的關(guān)系。3.編程實現(xiàn)對觸摸屏的控制。 5.3 實驗環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。 軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 5.4 實驗內(nèi)容及要求 1.了解觸摸屏基本原理,理解對觸摸屏進行輸出標(biāo)定、與LCD顯示器配合的過程。2.通過編程實現(xiàn)觸摸兩點自動在兩點間劃直線。3.通過編程實現(xiàn)在觸摸屏上動態(tài)畫出曲線。 5.5 實驗設(shè)計與實驗步驟 1.添加并打開工程。 2.在頭文件中定義宏和常量及驅(qū)動函數(shù)。3.校準(zhǔn)觸摸屏坐標(biāo),進行坐標(biāo)轉(zhuǎn)換。4.實現(xiàn)觸屏取點并顯示功能。5.實現(xiàn)兩點間自動劃線功能。6.實現(xiàn)觸摸屏動態(tài)劃線功能。 5.6 實驗過程與分析 1.在定義觸屏響應(yīng)功能的函數(shù)中對點擊觸屏進行響應(yīng)函數(shù)的修改,在其中添加修改點顏色的函數(shù),修改得到的觸摸點的顏色,并顯示在LCD上。 2.獲取第一個點坐標(biāo)并儲存,獲取第二個點坐標(biāo)并儲存,編寫劃線函數(shù),取得兩點間直線上所有點的坐標(biāo),并對其改變顏色,顯示在LCD上,即完成劃直線功能。 3.將劃線函數(shù)應(yīng)用到響應(yīng)觸屏移動消息的函數(shù)下,即可對連續(xù)獲得的觸摸坐標(biāo)進行連續(xù)的畫短直線,連接成曲線,完成動態(tài)劃線功能。 5.7 實驗結(jié)果總結(jié) 了解了觸摸屏響應(yīng)動作消息的函數(shù)的工作原理,通過修改實現(xiàn)了觸摸屏響應(yīng)不同動作進行畫點、劃線、動態(tài)劃線的功能。 5.8 心得體會 通過本次實驗,使我了解了怎么在一塊嵌入式實驗箱 通過編程控制實驗箱上得硬件,比如在本次實驗中的控制LCD屏幕就是,在屏幕上點擊,然后得到在LCD屏上點擊的位置。本次實驗初步完成了實驗結(jié)果。 6.實驗六 6.1 實驗名稱 UCOS-Ⅱ在ARM微處理器上的裁剪 6.2 實驗?zāi)康?/p> 1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。 2.掌握UCOS-Ⅱ裁剪的基本原理與嵌入式編程實現(xiàn)方法。3.學(xué)習(xí)如何根據(jù)具體情況對UCOS-Ⅱ操作系統(tǒng)進行裁剪。 4.通過對UCOS-Ⅱ配置文件(OS_CFG.H)中相關(guān)的配置常量進行設(shè)置,實現(xiàn)對UCOS-Ⅱ的裁剪。 6.3 實驗環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。 軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 6.4 實驗內(nèi)容及要求 對UCOS-Ⅱ內(nèi)核進行裁剪并移植到ARM7微處理器上。 6.5 實驗設(shè)計與實驗步驟 編輯OS_CFG.H文件。OS_CFG.H文件中的內(nèi)容可分為兩大類:服務(wù)功能的配置和數(shù)據(jù)結(jié)構(gòu)的配置。 一.服務(wù)功能的配置: 根據(jù)程序中的實際情況,保留自己要用的系統(tǒng)服務(wù)功能,刪除自己不需要的服務(wù)功能。進行合理配置后,是我們自己系統(tǒng)的目標(biāo)代碼比較緊湊,從而降低了對程序代碼存儲空間的要求。如果代碼存儲空間足夠大的話,那就將全部系統(tǒng)服務(wù)功能全部配置為1。不需要考慮功能裁剪。 二.?dāng)?shù)據(jù)結(jié)構(gòu)功能的配置: 與任務(wù)有關(guān)的數(shù)據(jù)結(jié)構(gòu) 1.OS_MAX_TASKS 作用:設(shè)置用戶程序中可以使用的最多任務(wù)數(shù)。說明:該值不能超過62.舉例: 若程序中用到了三個任務(wù),則該值的最小值 2.OS_LOWEST_PRIO 作用:設(shè)置程序中最低任務(wù)的優(yōu)先級。 說明: 設(shè)定該值可以節(jié)省操作系統(tǒng)使用RAM的空間。任務(wù)的最低優(yōu)先級和最大任務(wù)數(shù)是沒有直接關(guān)系的。 6.6 實驗過程與分析 按照實驗指導(dǎo)書上的步驟進行,得到了要求的系統(tǒng)。 6.7 實驗結(jié)果總結(jié) 按照要求進行了裁剪,得到了滿足需要又緊湊的應(yīng)用軟件系統(tǒng)。 6.8 心得體會 了解了UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu),掌握了UCOS-Ⅱ裁剪的基本原理與嵌入式編程實現(xiàn)方法,學(xué)會了如何根據(jù)具體情況對UCOS-Ⅱ操作系統(tǒng)進行裁剪 7.實驗七 7.1 實驗名稱 ucos-II移植實驗 7.2 實驗?zāi)康?/p> 1.了解UCOS-Ⅱ內(nèi)核的主要結(jié)構(gòu)。 2.掌握將UCOS-Ⅱ內(nèi)核移植到ARM7處理器上的基本方法。 7.3 實驗環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。 軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 7.4 實驗內(nèi)容及要求 1.將UCOS-Ⅱ內(nèi)核進行移植到ARM7微處理器上。 2.編寫兩個簡單任務(wù),在超級終端上觀察兩個任務(wù)的切換。 7.5 實驗設(shè)計與實驗步驟 1.該實驗的文件分為兩類,其一是STARTUP 目錄下的系統(tǒng)初始化、配置等文件,其二是uCOS-II 的全部源碼,arch 目錄下的3 個文件是和處理器架構(gòu)相關(guān)的。 2.設(shè)置os_cpu.h 中與處理器和編譯器相關(guān)的代碼 3.用C 語言編寫6 個操作系統(tǒng)相關(guān)的函數(shù)(OS_CPU_C.C)4.用匯編語言編寫4 個與處理器相關(guān)的函數(shù)(OS_CPU.ASM)5.編寫一個簡單的多任務(wù)程序來測試一下移植是否成功。 為了使 uCOS-II 可以正常運行,除了上述必須的移植工作外,硬件初始化和配置文件也是必須的。STARTUP 目錄下的文件還包括中斷處理,時鐘,串口通信等基本功能函數(shù)。在文件 main.c 中給出了應(yīng)用程序的基本框架,包括初始化和多任務(wù)的創(chuàng)建,啟動等。任務(wù) 創(chuàng)建方法如下: ①在程序開頭定義任務(wù)堆棧,任務(wù)函數(shù)聲明和任務(wù)優(yōu)先級 ②在main()函數(shù)中調(diào)用OSStart()函數(shù)之前用下列語句創(chuàng)建任務(wù) ③編寫任務(wù)函數(shù)內(nèi)容 6.編譯并下載移植后的uCOS-II 所有的源代碼都準(zhǔn)備好后就可以進行編譯了。在ADS 環(huán)境下需要設(shè)置工程的訪問路徑。從菜單Edit | Debug Settings 進入設(shè)置對話框,在Target | Access Paths 中選擇User Paths 并選上Always search user paths。然后點Add 按鈕添加路徑ucos-ii 和arch。這主要是設(shè)置編譯器處理文件包含時的搜索范圍。按照實驗一的方法可以對編譯后的代碼進行調(diào)試或下載到平臺的電子硬盤中。這個實驗從結(jié)構(gòu)上看和其他的實驗沒有多大區(qū)別,同樣生成可執(zhí)行文件system.bin??梢栽谄脚_BIOS中激活電子硬盤,然后把system.bin 拷貝進去,重啟平臺,然后在超級終端上觀察結(jié)果。 7.6 實驗過程與分析 操作系統(tǒng)相關(guān)的函數(shù):(1)OSTaskStkInit OSTaskCreate()和OSTaskCreateExt()通過調(diào)用OSTaskStkInit()來初始化任務(wù)的堆棧結(jié)構(gòu)。因此,堆??雌饋砭拖駝偘l(fā)生過中斷并將所有的寄存器保存到堆棧中的情形一樣。圖12A-2 顯示了OSTaskStkInt()放到正被建立的任務(wù)堆棧中的東西。這里我們定義了堆棧是從上往下 長的。在用戶建立任務(wù)的時候,用戶傳遞任務(wù)的地址,pdata 指針,任務(wù)的堆棧棧頂和任務(wù)的優(yōu)先級給OSTaskCreate()和OSTaskCreateExt()。一旦用戶初始化了堆棧,OSTaskStkInit()就需要返回堆棧指針?biāo)傅牡刂?。OSTaskCreate()和OSTaskCreateExt()會獲得該地址并將它保存到任務(wù)控制塊(OS_TCB)中。 (2)OSTaskCreateHook 當(dāng)用OSTaskCreate()和OSTaskCreateExt()建立任務(wù)的時候就會調(diào)用OSTaskCreateHook()。該函數(shù)允許用戶或使用移植實例的用戶擴展uCOS-II 功能。當(dāng)uCOS-II 設(shè)置完了自己的內(nèi)部結(jié)構(gòu)后,會在調(diào)用任務(wù)調(diào)度程序之前調(diào)用OSTaskCreateHook()。該函數(shù)被調(diào)用的時候中斷是禁止的。因此用戶應(yīng)盡量減少該函數(shù)中的代碼以縮短中斷的響應(yīng)時間。當(dāng) OSTaskCreateHook()被調(diào)用的時候,它會收到指向已建立任務(wù)的OS_TCB 的指針,這 樣它就可以訪問所有的結(jié)構(gòu)成員了。函數(shù)原型:void OSTaskCreateHook(OS_TCB *ptcb) (3)OSTaskDelHook 當(dāng)任務(wù)被刪除的時候就會調(diào)用OSTaskDelHook()。該函數(shù)在把任務(wù)從uCOS-II 的內(nèi)部任 務(wù)鏈表中解開之前被調(diào)用。當(dāng)OSTaskDelHook()被調(diào)用的時候,它會收到指向正被刪除任務(wù) 的OS_TCB 的指針,這樣它就可以訪問所有的結(jié)構(gòu)成員了。OSTaskDelHook()可以來檢驗TCB擴展是否被建立(一個非空指針)并進行一些清除操作。函數(shù)原型:void OSTaskDelHook(OS_TCB *ptcb)(4)OSTaskSwHook 當(dāng)發(fā)生任務(wù)切換的時候就會調(diào)用OSTaskSwHook()。OSTaskSwHook()可以直接訪問 OSTCBCur 和OSTCBHighRdy,因為它們是全局變量。OSTCBCur 指向被切換出去的任務(wù) OS_TCB,而OSTCBHighRdy 指向新任務(wù)OS_TCB。注意在調(diào)用OSTaskSwHook()期間中斷 一直是被禁止的。因此用戶應(yīng)盡量減少該函數(shù)中的代碼以縮短中斷的響應(yīng)時間。函數(shù)原型:void OSTaskSwHook(void) (5)OSTaskStatHook OSTaskStatHook()每秒鐘都會被OSTaskStat()調(diào)用一次。用戶可以用OSTaskStatHook() 來擴展統(tǒng)計功能。例如,用戶可以保持并顯示每個任務(wù)的執(zhí)行時間,每個任務(wù)所用的CPU 份額,以及每個任務(wù)執(zhí)行的頻率等。函數(shù)原型:void OSTaskStatHook(void)(6)OSTimeTickHook OSTimeTickHook()在每個時鐘節(jié)拍都會被OSTaskTick()調(diào)用。實際上OSTimeTickHook()是在節(jié)拍被uCOS-II 真正處理,并通知用戶的移植實例或應(yīng)用程序之前被調(diào)用的。函數(shù)原型:void OSTimeTickHook(void) 7.7 實驗結(jié)果總結(jié) 在超級終端上輸出輪流交替run task1和run task2,表明系統(tǒng)正在不斷交替運行2個任務(wù)。 7.8 心得體會 在這個實驗中我們初步了解和測試了實驗的內(nèi)容和源代碼實驗結(jié)果基本上符合預(yù)期的要求。了解了μC/OS-II 內(nèi)核的主要結(jié)構(gòu)和ARM7處理器結(jié)構(gòu),掌握了將μC/OS-II 內(nèi)核移植到ARM 7 處理器上的基本原理與嵌入式編程實現(xiàn)方法。 8.實驗八 8.1 實驗名稱 各接口模塊相互銜接綜合實驗 8.2 實驗?zāi)康?/p> 利用前7次實驗所學(xué)的知識,綜合設(shè)計一個至少含有5個模塊的實驗。 8.3 實驗環(huán)境 硬件:ARM 嵌入式開發(fā)平臺、用于ARM7TDMI 的JTAG 仿真器、PC 機Pentium100 以 上、串口線。 軟件:PC 機操作系統(tǒng)win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序。 8.4 實驗內(nèi)容及要求 1.回顧串口、鍵盤、LED接口、A/D、電機轉(zhuǎn)動、定時器中斷、LCD接口及觸摸屏驅(qū)動控制接口模塊驅(qū)動設(shè)計及開發(fā)方法。 2.綜合應(yīng)用以上全部或者部分模塊,實現(xiàn)一個嵌入式綜合應(yīng)用系統(tǒng),要求至少5個模塊。 3.盡量使綜合應(yīng)用具有合理功能。 8.5 實驗設(shè)計與實驗步驟 1.新建工程,添加所需的文件。 2.編寫計算器的計算程序caculator.c以及caculator.h文件。3.編寫音樂播放文件play.c以及play.h文件。 4.修改鍵盤映射表讓鍵盤上的數(shù)字與LCD與LED屏幕上顯示的數(shù)字相對應(yīng)。5.對輸出在LCD屏幕上的顯示結(jié)構(gòu)進行設(shè)計 6.進行裁剪和移植功能設(shè)計和完成。編譯生成system.bin文件,將文件拷貝至實驗臺內(nèi),重啟實驗臺即可看到實驗效果 8.6 實驗過程與分析 1.完成10以內(nèi)的加減乘除的計算功能,通過鍵盤輸入,可在LCD屏幕上顯示輸入的表達式以及得到的輸出結(jié)果。如“2+3=5”。 2.按任務(wù)切換鍵,實現(xiàn)任務(wù)的切換。3.任務(wù)被切換到播放音樂的任務(wù)中去。 4.任務(wù)切換過程將會在串口的超級終端界面有所顯示,同時我們設(shè)置的將LCD上顯示的結(jié)果同步到超級終端上。實現(xiàn)串口通信。 5.利用到了直流電機,如果運算范圍超出我們規(guī)定的運算范圍,則電機轉(zhuǎn)動,來提示錯誤。 6.實現(xiàn)裁剪與移植功能。 8.7 實驗結(jié)果總結(jié) 在這次實驗中,我們利用前面所學(xué)習(xí)的知識,綜合利用在此次實驗中,我們利用了前面好所學(xué)知識中的6個模塊,分別是串口通訊,鍵盤控制,LED與LCD的輸出,電機控制,以及裁剪與移植的功能。通過這些功能的結(jié)合,我們實現(xiàn)自己所設(shè)計的實驗的功能。 8.8 心得體會 在此次實驗中,我們遇到了一些問題但是過程中遇到了不少問題,說明對實驗原理和語句編寫還不是很熟悉??偟膩碚f,通過這段時間的訓(xùn)練,我也學(xué)會了不少東西,了解了ARM的基本結(jié)構(gòu),功能等。 9.實驗總結(jié)與心得體會 通過這次為期一周的嵌入式課程實驗,我對于嵌入式有了更加深刻的了解與認(rèn)識。我是第一次接觸嵌入式,以前對于嵌入式的知識了解甚少,但是通過此次實驗,我不僅了解了嵌入式,也學(xué)會了許多關(guān)于嵌入式方面的知識。 通過前面的基礎(chǔ)實驗,我們對于ARM環(huán)境有了更深的了解,掌握了博創(chuàng)平臺的使用方法,例如如何使用小鍵盤,如何使用LCD、LED屏幕,如何控制終端,如何進行多任務(wù)之間的切換等等。通過這幾次的基礎(chǔ)課程實驗,我們最后出了計算器,能夠?qū)崿F(xiàn)10以內(nèi)的加減乘除,在此基礎(chǔ)上我們利用多任務(wù),實現(xiàn)播放音樂與計算的切換,還利用點擊的轉(zhuǎn)動來提示運算過程中出現(xiàn)的問題。 通過這幾次實驗,為我們以后的課程設(shè)計實驗打下了堅實的基礎(chǔ),相信有了這幾天系統(tǒng)實驗的培訓(xùn),我們的課程設(shè)計實驗做起來會更加輕松。 汽車空調(diào)系統(tǒng)實驗報告 車輛2 陳樹郁 201131150501 一、實驗?zāi)康?/p> 1.學(xué)習(xí)并理解汽車空調(diào)系統(tǒng)的組成及基本工作原理; 2.熟悉空調(diào)系統(tǒng)的制冷循環(huán)路線; 3.掌握對空調(diào)系統(tǒng)的操作以及控制系統(tǒng)的結(jié)構(gòu)原理; 4.理解壓力表的結(jié)構(gòu)原理以及對壓力表的操作; 5.理解制冷劑的作用并能掌握加注方法; 6.具有診斷和排除汽車空調(diào)系統(tǒng)常見故障的技能。 二、空調(diào)工作基本原理 發(fā)動機驅(qū)動的壓縮機將氣態(tài)的制冷劑從蒸發(fā)器中抽出,并將其送入冷凝器。高壓氣態(tài)制冷劑經(jīng)冷凝器時液化而進行熱交換(釋放熱量),熱量被車外的空氣帶走。然后高壓液態(tài)的制冷劑經(jīng)膨脹閥的節(jié)流作用而降壓,低壓液態(tài)制冷劑在蒸發(fā)器中氣化而進行熱交換(吸收熱量),此時蒸發(fā)器附近被冷卻了的空氣通過鼓風(fēng)機吹入車廂內(nèi)。接著氣態(tài)制冷劑又被壓縮機抽走,泵入冷凝器,如此使制冷劑進行封閉的循環(huán)流動,不斷地將車廂內(nèi)的熱量排到車外,使車廂內(nèi)的氣溫降至適宜的溫度。 三、實驗設(shè)備 1.曲柄連桿式壓縮機(由曲柄,連桿,活塞,進排氣閥等組成); 2.斜盤式壓縮機(由主軸,斜盤,氣缸,活塞,進排閥等組成); 3.冷凝器、干燥器、膨脹閥、蒸發(fā)器、壓力表、制冷劑罐、真空泵、空調(diào)系統(tǒng)示教臺。 四、實驗設(shè)備簡介 1.空調(diào)壓縮機 a)壓縮機的功能 把蒸發(fā)器中吸收熱量后產(chǎn)生的低溫低壓冷凍劑蒸氣吸入后進行壓縮,升高其壓力和溫度之后送往冷凝器,使冷凍劑在冷卻循環(huán)中進行循環(huán),由蒸發(fā)器吸收的熱量在通過冷凝器時散發(fā)掉。 b)壓縮機的種類 壓縮機的種類分為曲軸連桿式、斜盤式搖盤式、雙作用軸向斜盤式、渦旋式、旋轉(zhuǎn)葉片式等; c)壓縮機的工作原理(雙作用式) 當(dāng)主軸帶動斜盤轉(zhuǎn)動時,斜盤便驅(qū)動活塞作軸向移動,由于活塞在前后布置的氣缸中同時作軸向運動,這相當(dāng)于兩個活塞在作雙向運動。 d)工作過程 前缸活塞向左移動時,排氣閥片關(guān)閉,缸內(nèi)壓力下降,吸氣閥片打開,低壓蒸氣進入氣缸開始了吸氣過程,一直到活塞向左移動到終點為止;與此同時后缸活塞也向左移動,但不同的是后缸活塞處于壓縮過程,在這過程中蒸氣不斷被壓縮,壓力和溫度不斷上升,上升到一定程度時,排氣閥片打開,轉(zhuǎn)到排氣過程,一直到活塞移動到最左邊為止。這樣斜盤每轉(zhuǎn)動一周,前后兩個活塞分別同時完成吸氣、壓縮過程,這樣一次循環(huán),相當(dāng)于兩個工作循環(huán)。 e)壓縮機電磁離合器 壓縮機電磁離合器在需要的時候可以接通或切斷發(fā)動機與壓縮機之間的動力傳遞;另外,當(dāng)壓縮機過載時,它還能起到一定的保護作用。2.冷凝器 空調(diào)冷凝器用于制冷空調(diào)系統(tǒng),管內(nèi)制冷液直接與管外空氣強制進行熱交換,以達到制冷空氣的效果。 在制冷時為系統(tǒng)的高壓設(shè)備(冷暖熱泵型在制熱狀態(tài)時為低壓設(shè)備),裝在壓縮機排氣口和節(jié)流裝置(毛細(xì)管或電子膨脹閥)之間,由空調(diào)壓縮機中排出的高溫高壓氣體,進入冷凝器,通過銅管和鋁箔片散熱冷卻,空調(diào)器中都裝有軸流式冷卻風(fēng)扇,采用的是風(fēng)冷式,使制冷劑在冷卻凝結(jié)過程中,壓力不變,溫度降低。由氣體轉(zhuǎn)化為液體。 在冷凝器內(nèi)制冷劑發(fā)生變化的過程,在理論上可以看成等溫變化過程。實際上它有三個作用,一是空氣帶走了壓縮機送來的 高溫空調(diào)制冷劑氣體的過熱部分,使其成為干燥飽和蒸氣;二是在飽和溫度不變的情況下進行液化;三是當(dāng)空氣溫度低于冷凝溫度時,將已液化的制冷劑進一步冷卻 到與周圍空氣相同的溫度,起到冷卻作用 目前汽車空調(diào)冷凝器有管片式、管帶式以及平行流式3種。 3.干燥器 儲液干燥器串聯(lián)在冷凝器與膨脹閥之間的管路上,使從冷凝器中來的高壓制冷劑液體經(jīng)過濾、干燥后流向膨脹閥。在制冷系統(tǒng)中,它起到儲液、干燥和過濾液態(tài)制冷劑的作用。制冷劑和冷凍機油中含有微量水分,當(dāng)這些水分通過節(jié)流裝置時,由于壓力和溫度下降,水分便容易凝結(jié)成冰,造成系統(tǒng)堵塞的“冰堵”故障。干燥的最主要功用是防止水分在制冷系統(tǒng)中造成冰堵。 此外,制冷系統(tǒng)會由于制造維修時,而帶入一些雜物,同時,金屬的腐蝕作用也會產(chǎn)生一些雜質(zhì)。上述雜質(zhì)與制冷系統(tǒng)的制冷劑混合在一起,在系統(tǒng)中循環(huán)便很容易將系統(tǒng)中堵塞,影響正常工作,同時也會增加壓縮機的磨損,所以干燥器的另一重要作用是過濾。 4.膨脹閥 膨脹閥也稱節(jié)流閥,是組成汽車空調(diào)制冷系統(tǒng)的主要部件,安裝在蒸發(fā)器入口處。功能是把來自貯液干燥器的高壓液態(tài)制冷劑節(jié)流減壓,調(diào)節(jié)和控制進入蒸發(fā)器中的液態(tài)制冷劑量,使之適應(yīng)制冷負(fù)荷的變化,同時可防止壓縮機發(fā)生液擊現(xiàn)象(即未蒸發(fā)的液態(tài)制冷劑進入壓縮機后被壓縮,極易引起壓縮機閥片的損壞)和蒸發(fā)器出口蒸氣異常過熱。 目前膨脹閥主要有內(nèi)平衡熱力膨脹閥、外平衡熱力膨脹閥、H型膨脹閥、膨脹節(jié)流管(孔管)四種結(jié)構(gòu)形式。 膨脹閥工作原理:它有四個接口通往空調(diào)系統(tǒng),一個接干燥過濾器出口,一個接蒸發(fā)器入口。另外兩個接口,一個接蒸發(fā)器出口,一個接壓縮機進口。感溫元件處在從蒸發(fā)器出來的制冷劑氣流中。這種膨脹閥是溫控式的,當(dāng)冷卻負(fù)荷的增加導(dǎo)致蒸發(fā)器向外輸出的溫度升高,感溫包的溫度也隨之升高并產(chǎn)生膨脹作用。通過膜片和推桿推動球閥使截面加大,制冷劑進入蒸發(fā)器的流量加大。當(dāng)蒸發(fā)器內(nèi)制冷劑輸出溫度有所下降時,感溫包收縮,球閥的橫截面減小,導(dǎo)致制冷劑進入蒸發(fā)器的流速減慢。閥門的開度大小取決于蒸發(fā)器輸出端的溫度。 5.蒸發(fā)器 空調(diào)蒸發(fā)器的作用是利用液態(tài)低溫制冷劑在低壓下易蒸發(fā),轉(zhuǎn)變?yōu)檎魵獠⑽罩車諝獾臒崃?,風(fēng)機再將冷風(fēng)吹到車室內(nèi),達到制冷目的。 6.制冷劑 制冷劑又稱制冷工質(zhì),在南方一些地區(qū)俗稱雪種。它是在制冷系統(tǒng)中不斷循環(huán)并通過其本身的狀態(tài)變化以實現(xiàn)制冷的工作物質(zhì)。制冷劑在蒸發(fā)器內(nèi)吸收被冷卻介質(zhì)(水或空氣等)的熱量而汽化,在冷凝器中將熱量傳遞給周圍空氣或水而冷凝。 以前的汽車使用的制冷劑為R-12,它會破壞臭氧層,已淘汰,制冷劑不可混用。目前空調(diào)使用的制冷劑,一種是R22制冷劑,另一種是R410A新冷媒。 五、實驗過程 1、制冷劑加注過程 空調(diào)系統(tǒng)在加注制冷劑前必須抽真空,而抽真空的目的是為了清除系統(tǒng)中的空氣及水分,并進一步檢查系統(tǒng)在真空情況下的密封性。a)抽真空步驟 ① 將歧管壓力表中黃色(中間)軟管的接頭接到真空泵上,將藍色(低壓)軟管 的接頭接到低壓管路維修閥口上,將紅色(高壓)軟管接頭接到高壓管路維修閥口上;② 打開歧管壓力表,打開高低壓手動閥,啟動真空泵; ③ 抽真空到低壓表的負(fù)壓值高于l00kPa; ④ 關(guān)閉高低壓手動閥,其低壓側(cè)表針在10分鐘內(nèi)不得有明顯回升。若無,則可向系統(tǒng)內(nèi)充注制冷劑;若有,就應(yīng)向系統(tǒng)內(nèi)充入少量制冷劑進行查找、檢修泄漏點,并重新抽真空。b)制冷劑加注步驟 將壓力表黃色軟管接頭從真空泵上接到倒的制冷劑鋼瓶接口上; 擰開壓力表高壓手動閥,向系統(tǒng)中加入液態(tài)制冷劑,直到規(guī)定量;若不能加注到規(guī)定量,可按步驟b補充。注:加注液態(tài)制冷劑時,不可擰開低壓手動閥,以防產(chǎn)生液擊;不能啟動空調(diào),以防制冷劑倒灌入鋼瓶中產(chǎn)生危險。c)加注氣態(tài)制冷劑 ① 將壓力表中黃色軟管接頭從真空泵上接到正立的制冷劑鋼瓶接口上; ② 擰開鋼瓶閥門,擰松壓力表黃色軟管螺母,直到有制冷劑氣體外泄約2-3 秒鐘,然后擰緊螺母; ③ 擰開壓力表低壓手動閥,向系統(tǒng)中加入氣態(tài)制冷劑,當(dāng)系統(tǒng)壓力高于 2.5kg/cm2時,關(guān)閉低壓閥; ④ 啟動發(fā)動機,同時啟動空調(diào)且置最大制冷工況檔; ⑤ 再打開低壓手動閥,讓制冷劑吸入系統(tǒng),直到規(guī)定量。 需注意的是補充制冷劑,可用壓力表和視液鏡觀查法來確定制冷劑是否足量。 2、空調(diào)泄露點的查找 a)直接查找有油污的地方,若過于隱蔽也可把洗潔精水涂抹在管道上,有氣泡冒出的地方即為泄露點; b)用試燈法檢測,若火苗呈綠色則燈接近處即為泄露點; c)電子檢測法檢測,將探頭伸到可疑泄露處,若有冷媒泄露則在顯示屏上有顯示,在檢測過程中要注意調(diào)節(jié)靈敏度; d)熒光法檢測泄漏量很小的泄露點。 六、實驗心得 1.通過實驗對空調(diào)的組成零部件有了更深層的了解; 2.在實驗不斷思考的過程中,對空調(diào)的工作原理、檢測與維護的知識得到進一 步的提升;增強了自身的學(xué)習(xí)能力; 3.冷媒發(fā)生的變化: a)壓縮機:低溫低壓氣態(tài)制冷劑壓縮成高溫高壓制冷劑 b)冷凝器:將高壓制冷劑蒸汽冷凝成中溫高壓液體(注:從冷凝器中出來的為液態(tài)冷媒,流經(jīng)干燥瓶吸收了多余的水分) c)蒸發(fā)器:低溫低壓的液態(tài)制冷劑蒸發(fā)成低溫低壓的制冷劑蒸汽 4.通過學(xué)習(xí)解決了之前在4S店實習(xí)中遇到汽車空調(diào)蒸發(fā)器至壓縮機空氣入口 之間的低壓管路結(jié)霜的問題,結(jié)合課堂上的知識,我認(rèn)為應(yīng)該有以下幾個原因: a)管道堵塞 b)鼓風(fēng)機不運轉(zhuǎn) c)干燥瓶不起做用 d)溫度傳感器失效第三篇:嵌入式系統(tǒng)實驗報告
第四篇:嵌入式系統(tǒng)實驗報告
第五篇:汽車空調(diào)系統(tǒng)實驗報告